?? query.cpp
字號:
// Query.cpp : implementation file
//
#include "stdafx.h"
#include "Student.h"
#include "Query.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CStudentApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CQuery dialog
CQuery::CQuery(CWnd* pParent /*=NULL*/)
: CDialog(CQuery::IDD, pParent)
{
//{{AFX_DATA_INIT(CQuery)
m_sSql = _T("");
//}}AFX_DATA_INIT
}
void CQuery::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQuery)
DDX_Control(pDX, IDC_BTNRUN, m_btnRun);
DDX_Control(pDX, IDC_BTNOR, m_btnOr);
DDX_Control(pDX, IDC_BTNNO, m_btnNo);
DDX_Control(pDX, IDC_BTNEXIT, m_btnExit);
DDX_Control(pDX, IDC_BTNCLEAR, m_btnClear);
DDX_Control(pDX, IDC_BTNALL, m_btnAll);
DDX_Control(pDX, IDC_BTNADD, m_btnAdd);
DDX_Control(pDX, IDC_LIST_RESULT, m_ctlResult);
DDX_Control(pDX, IDC_LIST_FIELD, m_ctlField);
DDX_Control(pDX, IDC_COMBO_SORT, m_ctlSort);
DDX_Control(pDX, IDC_COMBO_OPT, m_ctlOpt);
DDX_Control(pDX, IDC_COMBO_FIELDVALUE, m_ctlFValue);
DDX_Control(pDX, IDC_COMBO_FIELDNAME, m_ctlFName);
DDX_Text(pDX, IDC_EDIT_SQL, m_sSql);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQuery, CDialog)
//{{AFX_MSG_MAP(CQuery)
ON_BN_CLICKED(IDC_BTNRUN, OnBtnrun)
ON_BN_CLICKED(IDC_BTNCLEAR, OnBtnclear)
ON_BN_CLICKED(IDC_BTNEXIT, OnBtnexit)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_RESULT, OnItemchangedListResult)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQuery message handlers
BOOL CQuery::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
/////
m_pRsc.CreateInstance("ADODB.Recordset");
LoadData("student");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CQuery::LoadData(CString sTName)
{
char buf[100];
sprintf(buf,"select * from %s",sTName);
m_pRsc->Open(buf,theApp.m_pConnect.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
for(int i=0;i<m_pRsc->Fields->Count;i++)
{
m_ctlFName.AddString(m_pRsc->Fields->GetItem(_variant_t((long)i))->Name);
m_ctlSort.AddString(m_pRsc->Fields->GetItem(_variant_t((long)i))->Name);
m_ctlField.AddString(m_pRsc->Fields->GetItem(_variant_t((long)i))->Name);
}
m_pRsc->Close();
m_ctlOpt.AddString("=");
m_ctlOpt.AddString("<>");
m_ctlOpt.AddString(">");
m_ctlOpt.AddString(">=");
m_ctlOpt.AddString("<");
m_ctlOpt.AddString("<=");
m_ctlOpt.AddString("Like");
for (i=0;i<m_ctlField.GetCount();i++)
{
m_ctlField.SetCurSel(i);
}
sprintf(buf,"select * from %s",sTName);
m_sSql=buf;
UpdateData(FALSE);
}
void CQuery::OnBtnrun()
{
UpdateData(TRUE);
if(m_pRsc->State)
m_pRsc->Close();
//m_pRsc->Open(_bstr_t(m_sSql),theApp.m_pConnect.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
m_pRsc->Open(_bstr_t(m_sSql),theApp.m_pConnect.GetInterfacePtr(),adOpenDynamic ,adLockOptimistic,adCmdText);
LoadRecordToListView(m_pRsc);
m_pRsc->Close();
}
void CQuery::LoadRecordToListView(_RecordsetPtr Rsc)
{
::SendMessage(m_ctlResult.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
//////////為列表控件添加列//////////
for(int i=0;i<Rsc->Fields->Count;i++)
{
m_ctlResult.InsertColumn(i,Rsc->Fields->GetItem(_variant_t((long)i))->Name,LVCFMT_LEFT,100);
}
//////////讀取數據庫中的信息添加到列表控件///////////
int nItem;
try
{
while(!Rsc->adoEOF)
{
nItem=m_ctlResult.InsertItem(0xffff,_bstr_t(Rsc->GetCollect("_id")));
for(i=1;i<Rsc->Fields->Count;i++)
m_ctlResult.SetItem(nItem,i,1,_bstr_t(Rsc->Fields->GetItem(_variant_t((long)i))->Value),NULL,0,0,0 );
Rsc->MoveNext();
}
}
catch(_com_error e)///捕捉異常
{
AfxMessageBox("讀取數據庫失敗!");///顯示錯誤信息
}
}
void CQuery::OnBtnclear()
{
m_sSql="";
UpdateData(FALSE);
}
void CQuery::OnBtnexit()
{
CQuery::OnCancel();
}
///加載列表內容到對話框控件
void CQuery::OnItemchangedListResult(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
m_iCurrentSel=m_ctlResult.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
//m_pRsc->Move(m_iCurrentSel,_variant_t((long)adBookmarkFirst));
switch(theApp.m_opt.m_iTableFlag)
{
case 1:
/* theApp.m_opt.m_iRecID=(long)(_variant_t)m_pRsc->GetCollect("_id");
theApp.m_input.m_sNumber=(LPCTSTR)(_bstr_t)m_pRsc->GetCollect("s_no");
theApp.m_input.m_sName=(LPCTSTR)(_bstr_t)m_pRsc->GetCollect("s_name");
theApp.m_input.m_sClassnum =(LPCTSTR)(_bstr_t)m_pRsc->GetCollect("class_no");
theApp.m_input.m_sSex =(LPCTSTR)(_bstr_t)m_pRsc->GetCollect("s_sex");
theApp.m_input.m_dBrithday =m_pRsc->GetCollect("s_birthday");
theApp.m_input.DoModal();
UpdateData(FALSE);
//m_pRsc->Close();
*/
theApp.m_opt.m_iRecID=(long)(_variant_t)m_ctlResult.GetItemText(m_iCurrentSel,0);
theApp.m_input.m_sNumber=m_ctlResult.GetItemText(m_iCurrentSel,1);
theApp.m_input.m_sName=m_ctlResult.GetItemText(m_iCurrentSel,3);
theApp.m_input.m_sClassnum =m_ctlResult.GetItemText(m_iCurrentSel,2);
theApp.m_input.m_sSex =m_ctlResult.GetItemText(m_iCurrentSel,4);
theApp.m_input.m_dBrithday =(_variant_t)m_ctlResult.GetItemText(m_iCurrentSel,5);
theApp.m_input.DoModal();
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
}
}
*pResult = 0;
}
BOOL CQuery::DestroyWindow()
{
if(m_pRsc->State)
m_pRsc->Close();
m_pRsc=NULL;
return CDialog::DestroyWindow();
}
void CQuery::OnClose()
{
m_pRsc=NULL;
CDialog::OnClose();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -