⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 publicquery.cpp

📁 偶作的毕业设计程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		m_List.SetItemText(i,5,mystr);}
		else
			m_List.SetItemText(i,5,"未知编号");
		Holder=Myset->GetCollect ("交易时间");
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight (" ");
		m_List.SetItemText(i,6,mystr);}
		Myset->MoveNext ();
		
	}
	m_List.SetRedraw (true);
	Invalidate();
}

void CPublicQuery::FindDateLog()
{
	UpdateData();
	CString mystr,sql_;
	_RecordsetPtr Myset;
	CString strSTime,strETime;
	//strSTime="#"+m_Stime.Format("%Y-%m-%d")+"#";
	//strETime="#"+m_Etime.Format("%Y-%m-%d")+"#";
	strSTime.Format("%d-%d-%d",m_Stime.GetYear(),m_Stime.GetMonth(),m_Stime.GetDay());
	strETime.Format("%d-%d-%d",m_Etime.GetYear(),m_Etime.GetMonth(),m_Etime.GetDay());
	if(!((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck())
		sql_.Format(CString("select * from Datelog where 操作时间 > ") +DATEFMT + CString(" and 操作时间 < ") +DATEFMT,strSTime,strETime);
	else
		sql_.Format("select * from Datelog");
	
	Myset.CreateInstance (__uuidof(Recordset));
	_bstr_t Mysql=sql_;
	_bstr_t source=m_strSource;
	_variant_t Holder;
	CTime OptTime;
	try{
		Myset->Open (Mysql,source,adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error &e){
		AfxMessageBox(e.ErrorMessage());return;}
	int Shumu=0;
	while(!Myset->adoEOF)//记录数
	{Shumu+=1;
	Myset->MoveNext ();}
	if(Shumu<1)return;
	Myset->MoveFirst ();
	int i=0;
	while(!Myset->adoEOF ){	
		
		Holder=Myset->GetCollect ("日志编号");
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight (" ");
		m_List.InsertItem (i,mystr);}
		else
			m_List.InsertItem(i,"未知编号");
		
		Holder=Myset->GetCollect ("操作者");
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight (" ");
		m_List.SetItemText(i,1,mystr);}
		else
			m_List.SetItemText(i,1,"未知操作者");
		Holder=Myset->GetCollect ("操作类型");
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight (" ");
		m_List.SetItemText(i,2,mystr);}
		else
			m_List.SetItemText(i,2,"未知类型");
		Holder=Myset->GetCollect ("操作内容");
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight (" ");
		m_List.SetItemText(i,3,mystr);}
		else
			m_List.SetItemText(i,3,"未知内容");
		Holder=Myset->GetCollect ("操作时间");
		if(Holder.vt!=VT_NULL)
		{mystr=(char*)(_bstr_t)Holder;
		mystr.TrimRight (" ");
		m_List.SetItemText(i,4,mystr);}
		else
			m_List.SetItemText(i,4,"未知时间");
		i++;
		Myset->MoveNext ();
		
	}
	m_List.SetRedraw (true);
	Invalidate();
}

void CPublicQuery::OnCheck8() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(!((CButton*)GetDlgItem(IDC_CHECK8))->GetCheck())return;//是否查找记录
	if(((CButton*)GetDlgItem(IDC_CHECK8))->GetCheck())
		if(m_Stime>m_Etime)AfxMessageBox("请输入合法的时间");//鉴别时间
		GetDlgItem(IDC_LIST1)->ShowWindow(SW_SHOW);
		int Choice=m_Tab.GetCurSel();
		switch(Choice){
		case 0:
			{
				FindSoftWare();break;}
		case 1:{
			FindUserInfo();break;}
		case 2:{
			FindSoftBorrow();
			break;}
		case 3:{
			FindAbandonSoft();break;}
		case 4:{
			FindChatRecord();break;}
		case 5:{
			FindDateLog();break;}
		}	
}

void CPublicQuery::OnCheck7() 
{
	// TODO: Add your control notification handler code here
	if(((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck()){
		GetDlgItem(IDC_DATETIME1)->EnableWindow(true);
		GetDlgItem(IDC_DATETIME2)->EnableWindow(true);}
	else
	{
		GetDlgItem(IDC_DATETIME1)->EnableWindow(false);
		GetDlgItem(IDC_DATETIME2)->EnableWindow(false);}
	
}

void CPublicQuery::ConnectDataBase()
{
	
	CSoftDocSystemApp* myApp=(CSoftDocSystemApp*)AfxGetApp();
	CString source_;
	source_.Format ("driver={SQL Server};server=%s;database=SoftDocument",myApp->ConnectServer);
	_bstr_t source=source_;
	_bstr_t pwd=myApp->ConnectPwd;
	_bstr_t user=myApp->ConnectUser;
	
	//Databaxe Initialled
	try{
		TESTHR(m_DBCnt.CreateInstance(_uuidof(Connection)));
		TESTHR(m_DBCnt->Open(source, user, pwd, 16));
		
	}
	catch (_com_error &e){
		MessageBox(e.ErrorMessage()); 
		MessageBox("数据缘初始化失败!");
		return;
	}
	
	m_strSource = (char * )source;
	
}

void CPublicQuery::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	if(m_Log.Setup (m_DBCnt))
		m_Log.Addlog (PublicUserName,"查询","未知");//操作日志
	
	CDialog::OnClose();
}

void CPublicQuery::OnPrint() 
{
	// TODO: Add your control notification handler code here
	/*	PrintList myPrinter;
    CListCtrl* pLC = (CListCtrl*)GetDlgItem(IDC_LIST1);
    myPrinter.PrintListCtrl(&pLC);//打印*/
	
	typedef struct tagColAtt//存储各列信息
	{
		int nColIndex;
		CString strColText;
		int nPrintX;
		int nSubItemIndex;
	}COLATT;
	
	PRINTDLG pd;
	pd.lStructSize = sizeof(PRINTDLG);
	pd.Flags = PD_RETURNDC;
	pd.hDC = NULL;
	pd.hwndOwner = NULL;
	pd.hInstance = NULL;
	pd.nMaxPage = 1;
	pd.nMinPage = 1;
	pd.nFromPage = 1;
	pd.nToPage  = 1;
	pd.nCopies = 1;
	pd.hDevMode = NULL;
	pd.hDevNames = NULL;
	
	//显示打印对话框,由用户来设定纸张大小等。
	if(!PrintDlg(&pd)) {AfxMessageBox("打印不成功!");return; }
	ASSERT(pd.hDC!=NULL);
	
	int nHorRes = GetDeviceCaps(pd.hDC, HORZRES);	
	int nVerRes = GetDeviceCaps(pd.hDC, VERTRES);
	int nXMargin = 2;
	int nYMargin = 2;
	TEXTMETRIC tm;
	GetTextMetrics(pd.hDC, &tm);
	int nCharHeight = tm.tmHeight;
	int nCharWidth = tm.tmAveCharWidth;
	
	
	CHeaderCtrl* pHeader = m_List.GetHeaderCtrl();
	//获得行,列的个数
	int nColCount = pHeader->GetItemCount();
	int nLineCount = m_List.GetItemCount();
	
	int ColOrderArray[100];
	COLATT ca[100];
	m_List.GetColumnOrderArray(ColOrderArray, nColCount);
	int nColX =nXMargin*nCharWidth;
	
	//检索各列的信息,确定列标题的内容长度。
	for(int i =0 ; i< nColCount; i++)
	{
		ca[i].nColIndex = ColOrderArray[i];
		LVCOLUMN lvc;
		char text[100];
		lvc.mask = LVCF_TEXT|LVCF_SUBITEM;
		lvc.pszText = text;
		lvc.cchTextMax = 100;
        m_List.GetColumn(ca[i].nColIndex, &lvc);
		ca[i].strColText = lvc.pszText;
		ca[i].nSubItemIndex = lvc.iSubItem;
		ca[i].nPrintX = nColX;
		nColX += nCharWidth * strlen(ca[i].strColText);
		
		if(nColX > nHorRes) 
		{
			DeleteDC(pd.hDC);
			AfxMessageBox("字段太多,无法在一行内打印,请试用较大的纸,或横向打印。");
			return;
		}
		
		
	}
	
	DOCINFO di;
	di.cbSize = sizeof(DOCINFO);
	di.lpszDocName = "ListCtrl Data Printing"; 
	di.lpszOutput = (LPTSTR) NULL; 
	di.lpszDatatype = (LPTSTR) NULL; 
	di.fwType = 0; 
	StartDoc(pd.hDC, &di);
	StartPage(pd.hDC);
	
	//调整各列的宽度,以使各列在后面的打印输出时更均匀的打印在纸上。
	int space = (nHorRes-nXMargin*nCharWidth-nColX) / (nColCount -1);
	for(i =1; i<nColCount; i++)
	{
		ca[i].nPrintX += i*space;
	}
	
	//输出列标题
	for(i =0; i<nColCount; i++)
		TextOut(pd.hDC, ca[i].nPrintX, nYMargin, 
		ca[i].strColText, strlen(ca[i].strColText));
	
	int nMaxLinePerPage = nVerRes/nCharHeight -3;
	int nCurPage =1;
	//输出各列的数据
	for(i =0; i<nLineCount; i++)
	{
		for(int j =0; j<nColCount; j++)
		{
			if(i+1-(nCurPage-1)*nMaxLinePerPage > nMaxLinePerPage)
			{
				//新的一页
				EndPage(pd.hDC);
				StartPage(pd.hDC);
				nCurPage ++;
			}
			CString subitem = m_List.GetItemText(i, j/*(ca[j].nSubItemIndex*/);
			TextOut(pd.hDC, ca[j].nPrintX, 
				nYMargin+(i+1-(nCurPage-1)*nMaxLinePerPage)*nCharHeight, 
				subitem, strlen(subitem));
		}
	}
	
	EndPage(pd.hDC);
	EndDoc(pd.hDC);
	//打印结束
	DeleteDC(pd.hDC);
	return;
}

void CPublicQuery::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos=m_List.GetFirstSelectedItemPosition();
	if(pos==NULL)return;//判断是否选中记录
	int i=m_List.GetSelectionMark ();
	CString strColText[11];
	CString strItemText[11];
	CString OutPutStr="";
	LVCOLUMN lvc;
	char text[100];
	lvc.mask = LVCF_TEXT|LVCF_SUBITEM;
	lvc.pszText = text;
	lvc.cchTextMax = 100;
	int shumu=m_List.GetItemCount ();
	for(int j=0;j<m_ListNumber;j++)
	{
        m_List.GetColumn(j, &lvc);
		strColText[j] = lvc.pszText;
		strItemText[j]=m_List.GetItemText(i,j);
		OutPutStr=OutPutStr+strColText[j]+":"+strItemText[j]+_T("\n");
	}
	
	AfxMessageBox(OutPutStr);
	*pResult = 0;
}

void CPublicQuery::InitCombo()
{
	CString Mysql_,str1,str2;
	_RecordsetPtr Myset;
	Myset.CreateInstance (__uuidof(Recordset));
    Mysql_.Format("SELECT DISTINCT 作者名 FROM Author");
    _bstr_t Mysql=Mysql_;
    _bstr_t source=m_strSource;
	try{
		Myset->Open (Mysql,source,adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error &e){
		AfxMessageBox(e.ErrorMessage());return;}
    _variant_t Holder;
    while(!Myset->adoEOF ){
		Holder=Myset->GetCollect ("作者名");
		if(Holder.vt!=VT_NULL)
			str2=(char*)(_bstr_t)Holder;
		str2.TrimRight (" ");
		m_AuthorCtrl.AddString(str2);
		Myset->MoveNext ();
	}
	Myset->Close();
	Mysql_.Format("SELECT DISTINCT 型号名 FROM Xinghao");
    _bstr_t Mysql2=Mysql_;
	try{
		Myset->Open (Mysql2,source,adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error &e){
		AfxMessageBox(e.ErrorMessage());return;}
    while(!Myset->adoEOF ){
		Holder=Myset->GetCollect ("型号名");
		if(Holder.vt!=VT_NULL)
			str2=(char*)(_bstr_t)Holder;
		str2.TrimRight (" ");
		m_XinghaoCtrl.AddString(str2);
		Myset->MoveNext ();
	}
	Myset->Close();
	//((CComboBox*)GetDlgItem(IDC_COMBO2))->SetCurSel(0);
	//((CComboBox*)GetDlgItem(IDC_COMBO1))->SetCurSel(0);
	//UpdateData(false);
}

void CPublicQuery::OnDestroy() 
{
	CDialog::OnDestroy();
	
	if(m_DBCnt->GetState()==adStateOpen)
		m_DBCnt->Close();
	
}

⌨️ 快捷键说明

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