📄 seachpage.cpp
字号:
// SeachPage.cpp : implementation file
//
#include "stdafx.h"
#include "TProd.h"
#include "SeachPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CTProdApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CSeachPage dialog
CSeachPage::CSeachPage(CWnd* pParent /*=NULL*/)
: CDialog(CSeachPage::IDD, pParent)
{
//{{AFX_DATA_INIT(CSeachPage)
//}}AFX_DATA_INIT
m_nCurrentSel = -1;
}
void CSeachPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSeachPage)
DDX_Control(pDX, IDC_SEARCHOENO, m_666);
DDX_Control(pDX, IDC_SEARCHOE, m_555);
DDX_Control(pDX, IDC_SEARCHARTICLE, m_333);
DDX_Control(pDX, IDC_SEARCHAPP, m_222);
DDX_Control(pDX, IDC_SEARCHTPNO, m_111);
DDX_Control(pDX, IDC_SEARCH, m_searchbt);
DDX_Control(pDX, IDC_ITEMCOUNT, m_scItemCount);
DDX_Control(pDX, IDC_SLIST, m_SList);
DDX_Control(pDX, IDOK, m_sok);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSeachPage, CDialog)
//{{AFX_MSG_MAP(CSeachPage)
ON_BN_CLICKED(IDC_SEARCH, OnSearch)
ON_NOTIFY(NM_DBLCLK, IDC_SLIST, OnDblclkSlist)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_SLIST, OnItemchangedUserlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSeachPage message handlers
BOOL CSeachPage::OnInitDialog()
{
CDialog::OnInitDialog();
ListInit();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSeachPage::ListInit()
{
//设置颜色
const COLORREF BGColor = RGB(250, 250,250);
const COLORREF BGTColor = RGB(0, 100, 50);
const COLORREF BGTBColor = RGB(250,250, 250);
m_SList.SetBkColor(BGColor);
m_SList.SetTextColor(BGTColor);
m_SList.SetTextBkColor(BGTBColor);
//设表格表题
m_SList.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_SList.InsertColumn(0,_T("TUOPU NO."),LVCFMT_IMAGE|LVCFMT_LEFT);
m_SList.InsertColumn(1,_T("ARTICLE"));
m_SList.InsertColumn(2,_T("O.E.NO."));
m_SList.InsertColumn(3,_T("MAKER"));
m_SList.InsertColumn(4,_T("APPLICATION"));
m_SList.InsertColumn(5,_T("SIZE"));
m_SList.InsertColumn(6,_T("QTY"));
m_SList.InsertColumn(7,_T("KGS"));
//列的宽度
m_SList.SetColumnWidth(0,66);
m_SList.SetColumnWidth(1,180);
m_SList.SetColumnWidth(2,96);
m_SList.SetColumnWidth(3,100);
m_SList.SetColumnWidth(4,150);
m_SList.SetColumnWidth(5,70);
m_SList.SetColumnWidth(6,40);
m_SList.SetColumnWidth(7,55);
}
void CSeachPage::OnSearch()
{
m_SList.DeleteAllItems();
int nItem,i=0;//i 是用来查询数目计数之用
_variant_t var;
CString SQLstr,selectStr,andStr,orderStr,condStr1,condStr2,condStr3,condStr4,condStr5;
CString condStr11,condStr22,condStr33,condStr44,condStr55;
CString strtpno,strprodname,stroeno,strappname,stroename;
CString sLabel;
//取得各个输入值
GetDlgItem(IDC_SEARCHTPNO)->GetWindowText(strtpno);
GetDlgItem(IDC_SEARCHARTICLE)->GetWindowText(strprodname);
GetDlgItem(IDC_SEARCHOENO)->GetWindowText(stroeno);
GetDlgItem(IDC_SEARCHAPP)->GetWindowText(strappname);
GetDlgItem(IDC_SEARCHOE)->GetWindowText(stroename);
condStr1="\'%%"+strtpno+"%%\'";
condStr11="tpno like "+condStr1;
condStr2="\'%%"+strprodname+"%%\'";
condStr22="prodname like "+condStr2;
condStr3="\'%%"+stroeno+"%%\'";
condStr33="oeno like "+condStr3;
condStr4="\'%%"+strappname+"%%\'";
condStr44="appname like "+condStr4;
condStr5="\'%%"+stroename+"%%\'";
condStr55="oename like "+condStr5;
selectStr="SELECT * FROM prodinfo where ";
andStr=" and ";
orderStr=" order by oeno";
//产生查询语句
if (strtpno=="" && strprodname=="" && stroeno=="" && strappname=="" && stroename=="")
{
MessageBox(" You input none information.\nAnd it will show all the item in the database!");
SQLstr="SELECT * FROM prodinfo"+orderStr;
}
else
{
if (strtpno!="")
{
SQLstr=selectStr+condStr11+orderStr;
if(strprodname!="")
SQLstr=selectStr+condStr11+andStr+condStr22+orderStr;
if(stroeno!="")
SQLstr=selectStr+condStr11+andStr+condStr22+andStr+condStr33+orderStr;
if(strappname!="")
SQLstr=selectStr+condStr11+andStr+condStr22+andStr+condStr33+andStr+condStr44+orderStr;
if(stroename!="")
SQLstr=selectStr+condStr11+andStr+condStr22+andStr+condStr33+andStr+condStr44+andStr+condStr55+orderStr;
}
else
{
if (strprodname!="")
{
SQLstr=selectStr+condStr22+orderStr;
if(stroeno!="")
SQLstr=selectStr+condStr22+andStr+condStr33+orderStr;
if(strappname!="")
SQLstr=selectStr+condStr22+andStr+condStr33+andStr+condStr44+orderStr;
if(stroename!="")
SQLstr=selectStr+condStr22+andStr+condStr33+andStr+condStr44+andStr+condStr55+orderStr;
}
else
{
if(stroeno!="")
{
SQLstr=selectStr+condStr33+orderStr;
if(strappname!="")
SQLstr=selectStr+condStr33+andStr+condStr44+orderStr;
if(stroename!="")
SQLstr=selectStr+condStr33+andStr+condStr44+andStr+condStr55+orderStr;
}
else
{
if(strappname!="")
{
SQLstr=selectStr+condStr44+orderStr;
if(stroename!="")
SQLstr=selectStr+condStr44+andStr+condStr55+orderStr;
}
else
{
if(stroename!="")
SQLstr=selectStr+condStr55+orderStr;
}
}
}
}
}
checkSearch="YES";//检查是否进行了搜索
try
{
m_pRecordsetSearch.CreateInstance("ADODB.Recordset");
m_pRecordsetSearch->Open(_bstr_t(SQLstr),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_bSuccess = TRUE;
while(!m_pRecordsetSearch->adoEOF)
{
var = m_pRecordsetSearch->GetCollect("tpno");
if(var.vt != VT_NULL)
vTpno = (LPCSTR)_bstr_t(var);
else vTpno=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("prodname");
if(var.vt != VT_NULL)
vProdname = (LPCSTR)_bstr_t(var);
else vProdname=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("oename");
if(var.vt != VT_NULL)
vOename = (LPCSTR)_bstr_t(var);
else vOename=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("oeno");
if(var.vt != VT_NULL)
vOeno = (LPCSTR)_bstr_t(var);
else vOeno=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("appname");
if(var.vt != VT_NULL)
vAppname = (LPCSTR)_bstr_t(var);
else vAppname=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("size");
if(var.vt != VT_NULL)
vSize = (LPCSTR)_bstr_t(var);
else vSize=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("qty");
if(var.vt != VT_NULL)
vQty = (LPCSTR)_bstr_t(var);
else vQty=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("kgs");
if(var.vt != VT_NULL)
vKgs = (LPCSTR)_bstr_t(var);
else vKgs=(LPCSTR)_bstr_t("NULL");
nItem=m_SList.InsertItem(0xffff,(_bstr_t)vTpno);
m_SList.SetItem(nItem,1,1,(_bstr_t)vProdname,NULL,0,0,0);
m_SList.SetItem(nItem,2,1,(_bstr_t)vOeno,NULL,0,0,0);
m_SList.SetItem(nItem,3,1,(_bstr_t)vOename,NULL,0,0,0);
m_SList.SetItem(nItem,4,1,(_bstr_t)vAppname,NULL,0,0,0);
m_SList.SetItem(nItem,5,1,(_bstr_t)vSize,NULL,0,0,0);
m_SList.SetItem(nItem,6,1,(_bstr_t)vQty,NULL,0,0,0);
m_SList.SetItem(nItem,7,1,(_bstr_t)vKgs,NULL,0,0,0);
i++;
UpdateData(false);
m_pRecordsetSearch->MoveNext();
}
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("Read Database Fail!");///显示错误信息
}
sLabel.Format( _T( "%d Items found in the " )
_T( "database." ), i );
m_scItemCount.SetWindowText( sLabel ); //显示查找结果数目
}
void CSeachPage::OnItemchangedUserlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
m_nCurrentSel = pNMListView->iItem;
}
*pResult = 0;
}
void CSeachPage::OnDblclkSlist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(checkSearch == "YES")
{
LoadProInfo();
vInfo.DoModal();
}
*pResult = 0;
}
void CSeachPage::LoadProInfo()
{
m_pRecordsetSearch->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
_variant_t var;
try
{
var = m_pRecordsetSearch->GetCollect("tpno");
if(var.vt != VT_NULL)
{
vInfo.m_tpno=(LPCSTR)_bstr_t(var);
}
else vInfo.m_tpno=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("prodname");
if(var.vt != VT_NULL)
{
vInfo.m_prodname=(LPCSTR)_bstr_t(var);
}
else vInfo.m_prodname=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("oeno");
if(var.vt != VT_NULL)
{
vInfo.m_oeno=(LPCSTR)_bstr_t(var);
}
else vInfo.m_oeno=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("appname");
if(var.vt != VT_NULL)
{
vInfo.m_appname=(LPCSTR)_bstr_t(var);
}
else vInfo.m_appname=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("size");
if(var.vt != VT_NULL)
{
vInfo.m_size=(LPCSTR)_bstr_t(var);
}
else vInfo.m_size=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("kgs");
if(var.vt != VT_NULL)
{
vInfo.m_kgs=(LPCSTR)_bstr_t(var);
}
else vInfo.m_kgs=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("qty");
if(var.vt != VT_NULL)
{
vInfo.m_qty=(LPCSTR)_bstr_t(var);
}
else vInfo.m_qty=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("picname");
if(var.vt != VT_NULL)
{
vInfo.m_picname=(LPCSTR)_bstr_t(var);
}
else vInfo.m_picname=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetSearch->GetCollect("oename");
if(var.vt != VT_NULL)
{
vInfo.m_oe=(LPCSTR)_bstr_t(var);
}
else vInfo.m_oe=(CString)(LPCSTR)_bstr_t("NULL");
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("Read Database Fail!");///显示错误信息
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -