📄 querybasicdlg.cpp
字号:
// QueryBasicDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MyLibrary.h"
#include "BookRS.h"
#include "QueryBasicDlg.h"
#include "QueryAdvancedDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQueryBasicDlg dialog
CQueryBasicDlg::CQueryBasicDlg(CWnd* pParent /*=NULL*/)
: CDialog(CQueryBasicDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CQueryBasicDlg)
m_strKeyWord = _T("");
//}}AFX_DATA_INIT
}
void CQueryBasicDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQueryBasicDlg)
DDX_Control(pDX, IDC_LIST_RESULT, m_listResult);
DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
DDX_Text(pDX, IDC_KEY_WORD, m_strKeyWord);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQueryBasicDlg, CDialog)
//{{AFX_MSG_MAP(CQueryBasicDlg)
ON_BN_CLICKED(IDC_QUERY, OnQuery)
ON_LBN_SELCHANGE(IDC_LIST_RESULT, OnSelchangeListResult)
ON_BN_CLICKED(IDC_ADVANCED_QUERY, OnAdvancedQuery)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQueryBasicDlg message handlers
void CQueryBasicDlg::OnQuery()
{
// TODO: Add your control notification handler code here
UpdateData();
m_listResult.ResetContent();
if(!m_bookSet.IsOpen())
m_bookSet.Open();
m_bookSet.m_strFilter="title like '%"+m_strKeyWord+"%'";
m_bookSet.Requery();
if(m_bookSet.IsEOF())
{
AfxMessageBox("找不到此书");
return;
}
UpdateData(true);
m_strKeyWord=_T("");
UpdateData(false);
while(!m_bookSet.IsEOF())
{
m_listResult.AddString(m_bookSet.m_title);
m_bookSet.MoveNext();
}
}
void CQueryBasicDlg::OnSelchangeListResult()
{
// TODO: Add your control notification handler code here
CString aColCaption[9];
aColCaption[0]="书号:";
aColCaption[1]="分类:";
aColCaption[2]="书名:";
aColCaption[3]="出版社:";
aColCaption[4]="出版日期:";
aColCaption[5]="作者:";
aColCaption[6]="价格:";
aColCaption[7]="藏书总量:";
aColCaption[8]="当前库存:";
m_listDetail.ResetContent();
int curSel;
CString strDetail;
CString strLine;
curSel=m_listResult.GetCurSel();
m_bookSet.SetAbsolutePosition(curSel+1);
for(int i=0;i<m_bookSet.m_nFields;i++)
{
m_bookSet.GetFieldValue(i,strDetail);
strLine.Empty();
strLine+=aColCaption[i];
strLine+=strDetail;
m_listDetail.AddString(strLine);
}
}
void CQueryBasicDlg::OnAdvancedQuery()
{
// TODO: Add your control notification handler code here
int i;
CQueryAdvancedDlg advancedQuery;
advancedQuery.DoModal();
CString str;
CString strFilter;
CString* astrKeyWord[5];
CString astrColumnCaption[5];
CString* astrColumnVal[5];
CString* aAndOr[5];
aAndOr[1]=&advancedQuery.m_andOr1;
aAndOr[2]=&advancedQuery.m_andOr2;
aAndOr[3]=&advancedQuery.m_andOr3;
aAndOr[4]=&advancedQuery.m_andOr4;
astrColumnVal[1]=&advancedQuery.m_condition1;
astrColumnVal[2]=&advancedQuery.m_condition2;
astrColumnVal[3]=&advancedQuery.m_condition3;
astrColumnVal[4]=&advancedQuery.m_condition4;
for (i=1;i<5;i++)
{
if (!astrColumnVal[i]->Compare("书号"))
{
astrColumnCaption[i]="ISBN";
continue;
}
if (!astrColumnVal[i]->Compare("书名"))
{
astrColumnCaption[i]="title";
continue;
}
if (!astrColumnVal[i]->Compare("作者"))
{
astrColumnCaption[i]="author";
continue;
}
if (!astrColumnVal[i]->Compare("分类"))
{
astrColumnCaption[i]="category";
continue;
}
if (!astrColumnVal[i]->Compare("出版社"))
{
astrColumnCaption[i]="press";
continue;
}
}
astrKeyWord[1]=&advancedQuery.m_keyword1;
astrKeyWord[2]=&advancedQuery.m_keyword2;
astrKeyWord[3]=&advancedQuery.m_keyword3;
astrKeyWord[4]=&advancedQuery.m_keyword4;
i=1;
while (!astrKeyWord[i]->IsEmpty()&&i<5){//用户输入的查询关键字非空则添加查询条件
if (i!=1){//与前面的查询条件必须用and 或or连接
strFilter+=" ";
strFilter+=*aAndOr[i-1];
strFilter+=" ";
}
str.Format("%s='%s'",astrColumnCaption[i],*astrKeyWord[i]);
strFilter+=str;
i++;
}
m_bookSet.m_strFilter=strFilter;//设定查询条件为strFilter
if (!m_bookSet.IsOpen()){
m_bookSet.Open();
}
m_bookSet.Requery();
m_listResult.ResetContent();//清空原来的查询结果
m_listDetail.ResetContent();//清空原来的查询结果
if (m_bookSet.IsEOF()){//结果集为空
AfxMessageBox("查无此书");
return;
}
while (!m_bookSet.IsEOF())
{//将结果集中的每一本书的书名添加到查询结果列表中
m_listResult.AddString(m_bookSet.m_title);
m_bookSet.MoveNext();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -