?? publicquery.cpp
字號:
m_List.SetItemText(i,5,mystr);}
else
m_List.SetItemText(i,5,"未知編號");
Holder=Myset->GetCollect ("交易時(shí)間");
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 操作時(shí)間 > ") +DATEFMT + CString(" and 操作時(shí)間 < ") +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)//記錄數(shù)
{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 ("操作內(nèi)容");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
m_List.SetItemText(i,3,mystr);}
else
m_List.SetItemText(i,3,"未知內(nèi)容");
Holder=Myset->GetCollect ("操作時(shí)間");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
m_List.SetItemText(i,4,mystr);}
else
m_List.SetItemText(i,4,"未知時(shí)間");
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("請輸入合法的時(shí)間");//鑒別時(shí)間
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("數(shù)據(jù)緣初始化失敗!");
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//存儲(chǔ)各列信息
{
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;
//顯示打印對話框,由用戶來設(shè)定紙張大小等。
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();
//獲得行,列的個(gè)數(shù)
int nColCount = pHeader->GetItemCount();
int nLineCount = m_List.GetItemCount();
int ColOrderArray[100];
COLATT ca[100];
m_List.GetColumnOrderArray(ColOrderArray, nColCount);
int nColX =nXMargin*nCharWidth;
//檢索各列的信息,確定列標(biāo)題的內(nèi)容長度。
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("字段太多,無法在一行內(nèi)打印,請?jiān)囉幂^大的紙,或橫向打印。");
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);
//調(diào)整各列的寬度,以使各列在后面的打印輸出時(shí)更均勻的打印在紙上。
int space = (nHorRes-nXMargin*nCharWidth-nColX) / (nColCount -1);
for(i =1; i<nColCount; i++)
{
ca[i].nPrintX += i*space;
}
//輸出列標(biāo)題
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;
//輸出各列的數(shù)據(jù)
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);
//打印結(jié)束
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();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -