querydlg.cpp

来自「用Visual C++ 开发的项目管理系统」· C++ 代码 · 共 622 行 · 第 1/2 页

CPP
622
字号
    case 5:
		{
			//按档案文件名称进行查询
			if (m_cQName.IsEmpty())
			{
				MessageBox("查询名字为空");
			} 
			else
			{
				CString sql;
				sql="Select P.ProjectID,P.ProjectName,P.ProjectLoc,P.ProjectTime,P.ProjectRemark From ProjectInfo P,FileElectron D Where P.ProjectName = D.ProjectName And D.FileName = '%"+m_cQName+"%'";
				m_RecordQuery.CreateInstance("ADODB.Recordset");
				m_RecordQuery->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),
					adOpenDynamic,adLockPessimistic,adCmdText);
				//将项目信息绑定到数据显示列表
				m_ProInfoGridControl.SetRefDataSource(NULL);
				m_ProInfoGridControl.SetRefDataSource((LPUNKNOWN)m_RecordQuery);
				m_ProInfoGridControl.SetColumnHeaders(6);
				//设置列宽
				SetColumnWidth(m_ProInfoGridControl,5,ProWidth,strProInfo);
			    m_ProInfoGridControl.Refresh();
			}
			
		}
		break;
	case 6:
		{
            //按电子文件ID进行查询
			if (m_cQName.IsEmpty())
			{
				MessageBox("查询名字为空");
			}
			else
			{
                CString sql;
				sql="Select P.ProjectID,P.ProjectName,P.ProjectLoc,P.ProjectTime,P.ProjectRemark From ProjectInfo P,FileTable D Where P.ProjectName = D.ProjectName And D.FileID = '%"+m_cQName+"%'";
				m_RecordQuery.CreateInstance("ADODB.Recordset");
				m_RecordQuery->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),
					adOpenDynamic,adLockPessimistic,adCmdText);
				//将项目信息绑定到数据显示列表
				m_ProInfoGridControl.SetRefDataSource(NULL);
				m_ProInfoGridControl.SetRefDataSource((LPUNKNOWN)m_RecordQuery);
				m_ProInfoGridControl.SetColumnHeaders(6);
				//设置列宽
				SetColumnWidth(m_ProInfoGridControl,5,ProWidth,strProInfo);
			    m_ProInfoGridControl.Refresh();
			}
		}
		break;
	case 7:
		{
            //按档案文件ID进行查询
			if (m_cQName.IsEmpty())
			{
				MessageBox("查询名字为空");
			} 
			else
			{
                CString sql;
				sql="Select P.ProjectID,P.ProjectName,P.ProjectLoc,P.ProjectTime,P.ProjectRemark From ProjectInfo P,FileElectron D Where P.ProjectName = D.ProjectName And D.FileID = '%"+m_cQName+"%'";
				m_RecordQuery.CreateInstance("ADODB.Recordset");
				m_RecordQuery->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),
					adOpenDynamic,adLockPessimistic,adCmdText);
				//将项目信息绑定到数据显示列表
				m_ProInfoGridControl.SetRefDataSource(NULL);
				m_ProInfoGridControl.SetRefDataSource((LPUNKNOWN)m_RecordQuery);
				m_ProInfoGridControl.SetColumnHeaders(6);
				//设置列宽
				SetColumnWidth(m_ProInfoGridControl,5,ProWidth,strProInfo);
			    m_ProInfoGridControl.Refresh();
			}
		}
		break;
	default:
	    break;
	}
}

 void CQueryDlg::OnSelchangeComboQuerymode() 
 {
	// TODO: Add your control notification handler code here
	if (m_QModeControl.GetCurSel()==3)
 	{
	   //创建输入起始时间的编辑框和静态文本
		SetDlgItemText(IDC_STATIC_CONTENT,"输入终止时间:");
		static CRect rect1,rect2,rect3;
		if (rect1.IsRectNull())
		{
			GetDlgItem(IDC_COMBO_QUERYMODE)->GetWindowRect(&rect1);
 			ScreenToClient(&rect1);
			rect2.left=rect1.right+10;
			rect2.top=rect1.top;
			rect2.right=rect2.left+85;
			rect2.bottom=rect1.bottom;
 			rect3.left=rect2.right+10;
			rect3.top=rect2.top;
			rect3.right=rect3.left+100;
 			rect3.bottom=rect2.bottom;
 		}
 		m_font.CreatePointFont(100,"宋体");
 		
 		m_StartTime.Create("输入起始时间:",SS_CENTER | WS_VISIBLE | WS_CHILD ,rect2,this);
//		m_EStartTime.Create(0x50810080,rect3,this,1);
		m_EStartTime.CreateEx(WS_EX_CLIENTEDGE,"EDIT","",WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,
			                   rect3.left,rect3.top,rect3.Width(),rect3.Height(),this->m_hWnd,
							   NULL);
 		m_StartTime.SetFont(&m_font,true);
		m_EStartTime.SetFont(&m_font,true);
		//设置终止时间编辑框只能输入数字
		LONG  style;
		style=GetWindowLong(GetDlgItem(IDC_EDIT_QNAME)->m_hWnd,GWL_STYLE);
		style |=ES_NUMBER;
		SetWindowLong(GetDlgItem(IDC_EDIT_QNAME)->m_hWnd,GWL_STYLE,style);
 	}
 	else
	{
		SetDlgItemText(IDC_STATIC_CONTENT,"输入查询内容:");
		if (m_StartTime.m_hWnd!=NULL)
 		{
			m_StartTime.DestroyWindow();
		}
 		if (m_EStartTime.m_hWnd!=NULL)
		{
			m_EStartTime.DestroyWindow();
		}
		//可以输入任何字符
		LONG  style;
		style=GetWindowLong(GetDlgItem(IDC_EDIT_QNAME)->m_hWnd,GWL_STYLE);
		style &= ~ES_NUMBER;
		SetWindowLong(GetDlgItem(IDC_EDIT_QNAME)->m_hWnd,GWL_STYLE,style);
 	}
 }

BEGIN_EVENTSINK_MAP(CQueryDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CQueryDlg)
	ON_EVENT(CQueryDlg, IDC_DATAGRID_PROINFO, 221 /* SelChange */, OnSelChangeDatagridProinfo, VTS_PI2)
	ON_EVENT(CQueryDlg, IDC_DATAGRID_PROINFO, 218 /* RowColChange */, OnRowColChangeDatagridProinfo, VTS_PVARIANT VTS_I2)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CQueryDlg::OnSelChangeDatagridProinfo(short FAR* Cancel) 
{
	// TODO: Add your control notification handler code here
	short row=m_ProInfoGridControl.GetRow();
    m_cProName=m_RecordQuery->GetCollect("ProjectName").bstrVal;
	
	CString sql1,sql2,sql3;
	//把项目电子文档信息绑定到显示列表
		sql1="Select * From FileElectron Where ProjectName='"+m_cProName+"'";
		m_RecordEFile.CreateInstance("ADODB.Recordset");
		m_RecordEFile->Open((_variant_t)sql1,_variant_t((IDispatch *)theApp.m_pConnection,true),
			adOpenDynamic,adLockPessimistic,adCmdText);
		m_EFileGridControl.SetRefDataSource(NULL);
		m_EFileGridControl.SetRefDataSource((LPUNKNOWN)m_RecordEFile);
		m_EFileGridControl.SetColumnHeaders(6);
		//设置列宽
		SetColumnWidth(m_EFileGridControl,8,EFileWidth,strEFile);
		m_EFileGridControl.Refresh();
		//把项目档案信息绑定到显示列表
		sql2="Select * From FileTable Where ProjectName='"+m_cProName+"'";
		m_RecordFile.CreateInstance("ADODB.Recordset");
		m_RecordFile->Open((_variant_t)sql2,_variant_t((IDispatch *)theApp.m_pConnection,true),
					adOpenDynamic,adLockPessimistic,adCmdText);
		m_FileGridControl.SetRefDataSource(NULL);
		m_FileGridControl.SetRefDataSource((LPUNKNOWN)m_RecordFile);
		m_FileGridControl.SetColumnHeaders(6);
		//设置列宽
		SetColumnWidth(m_FileGridControl,5,FileWidth,strFile);
		m_FileGridControl.Refresh();
		
	
	//把项目人员情况绑定到显示列表
	sql3="Select * From ProjectDesigner Where ProjectName='"+m_cProName+"'";
	m_RecordName.CreateInstance("ADODB.Recordset");
	m_RecordName->Open((_variant_t)sql3,_variant_t((IDispatch *)theApp.m_pConnection,true),
		               adOpenDynamic,adLockPessimistic,adCmdText);
	m_NameGridControl.SetRefDataSource(NULL);
	m_NameGridControl.SetRefDataSource((LPUNKNOWN)m_RecordName);
	m_NameGridControl.SetColumnHeaders(6);
	//设置列宽
	SetColumnWidth(m_NameGridControl,3,NameWidth,strUser);
	m_NameGridControl.Refresh();

}
//设置DATAGRID控件的列宽
void CQueryDlg::SetColumnWidth(CDataGrid &ProControl, short count, float *WidthArray,CString * strTitle)
{
    _variant_t vIndex;
	for (int i=0;i<count;i++)
	{
		vIndex=long(i);
        ((ProControl.GetColumns()).GetItem(vIndex)).SetWidth(WidthArray[i]);
		((ProControl.GetColumns()).GetItem(vIndex)).SetCaption(strTitle[i]);
	}
}

void CQueryDlg::OnBtnExit() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}

void CQueryDlg::OnBtnOpen() 
{
	// TODO: Add your control notification handler code here
	//获得文件绝对路径
	short row=m_EFileGridControl.GetRow();
	CString str;
    str=m_RecordEFile->GetCollect("FileLoc").bstrVal;
	m_cEfilePath+=str;
	m_cEfilePath+="\\";
	str=m_RecordEFile->GetCollect("FileName").bstrVal;
	m_cEfilePath+=str;
	AfxBeginThread(MyOpenFile,this);
}
//打开借阅文件的模块
void CQueryDlg::OnBtnBorrow() 
{
	// TODO: Add your control notification handler code here
	short row=m_FileGridControl.GetRow();
	m_FileName=m_RecordFile->GetCollect("FileName").bstrVal;
	AfxBeginThread(MyBorrowFile,this);
}

CString CQueryDlg::CStringToDate(CString &str)
{
	int year,month,day;
	CString strTemp;
	//查看是否有-,如没有,查看字符格式,如果大于
    if (str.IsEmpty())
    {
		MessageBox("日期格式错误");
    }
	else
	{
		int i=str.GetLength();
		if (i<8)
		{
			MessageBox("日期格式错误");
		}
		else
		{
            
			strTemp=str.Left(4);
			year=atoi((LPCSTR)strTemp);
			strTemp=str.Mid(4,2);
			month=atoi((LPCSTR)strTemp);
			if (month>12)
			{
				MessageBox("日期格式错误");
			}
			strTemp=str.Mid(6,2);
		    day=atoi((LPCSTR)strTemp);
			if (day>31)
			{
				MessageBox("日期格式错误");
			}
		}
		
	}
	CTime dTime(year,month,day,0,0,0);
    strTemp=dTime.Format("%Y-%m-%d");
	return strTemp;
    
}

void CQueryDlg::OnRowColChangeDatagridProinfo(VARIANT FAR* LastRow, short LastCol) 
{
	// TODO: Add your control notification handler code here
	short row=m_ProInfoGridControl.GetRow();
    m_cProName=m_RecordQuery->GetCollect("ProjectName").bstrVal;
	
	CString sql1,sql2,sql3;
	//把项目电子文档信息绑定到显示列表
	sql1="Select * From FileElectron Where ProjectName='"+m_cProName+"'";
	m_RecordEFile.CreateInstance("ADODB.Recordset");
	m_RecordEFile->Open((_variant_t)sql1,_variant_t((IDispatch *)theApp.m_pConnection,true),
		adOpenDynamic,adLockPessimistic,adCmdText);
	m_EFileGridControl.SetRefDataSource(NULL);
	m_EFileGridControl.SetRefDataSource((LPUNKNOWN)m_RecordEFile);
	m_EFileGridControl.SetColumnHeaders(6);
	//设置列宽
	SetColumnWidth(m_EFileGridControl,8,EFileWidth,strEFile);
	m_EFileGridControl.Refresh();
	//把项目档案信息绑定到显示列表
	sql2="Select * From FileTable Where ProjectName='"+m_cProName+"'";
	m_RecordFile.CreateInstance("ADODB.Recordset");
	m_RecordFile->Open((_variant_t)sql2,_variant_t((IDispatch *)theApp.m_pConnection,true),
		adOpenDynamic,adLockPessimistic,adCmdText);
	m_FileGridControl.SetRefDataSource(NULL);
	m_FileGridControl.SetRefDataSource((LPUNKNOWN)m_RecordFile);
	m_FileGridControl.SetColumnHeaders(6);
	//设置列宽
	SetColumnWidth(m_FileGridControl,5,FileWidth,strFile);
	m_FileGridControl.Refresh();
	
	
	//把项目人员情况绑定到显示列表
	sql3="Select * From ProjectDesigner Where ProjectName='"+m_cProName+"'";
	m_RecordName.CreateInstance("ADODB.Recordset");
	m_RecordName->Open((_variant_t)sql3,_variant_t((IDispatch *)theApp.m_pConnection,true),
		adOpenDynamic,adLockPessimistic,adCmdText);
	m_NameGridControl.SetRefDataSource(NULL);
	m_NameGridControl.SetRefDataSource((LPUNKNOWN)m_RecordName);
	m_NameGridControl.SetColumnHeaders(6);
	//设置列宽
	SetColumnWidth(m_NameGridControl,3,NameWidth,strUser);
	m_NameGridControl.Refresh();

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?