📄 querybasicdlg.cpp
字号:
// QueryBasicDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Library.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()
{
UpdateData();//将编辑框内容更新到与此绑定的成员变量如m_strKeyWord中
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;
}
//将全部的结果显示在结果列表中
while (!m_bookSet.IsEOF()){
m_listResult.AddString(m_bookSet.m_title);
m_bookSet.MoveNext();
}
}
void CQueryBasicDlg::OnSelchangeListResult()
{
//用数据aColCaption来存放所有列标题信息,与数据库中的次序一致
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 (unsigned int i=0;i<m_bookSet.m_nFields;i++){
m_bookSet.GetFieldValue(i,strDetail);//从记录集中取出第i列的值,存在strDetail中
strLine.Empty();// 清空原有的内容
strLine+=aColCaption[i];//增加标题
strLine+=strDetail;//增加内容
m_listDetail.AddString(strLine);//把该行添加到书目详细信息的列表中
}
}
void CQueryBasicDlg::OnAdvancedQuery()
{ int i;
CQueryAdvancedDlg advancedQuery;
advancedQuery.DoModal();//显示高级查询对话框
CString str;
CString strFilter;//查询条件
CString * astrKeyWord[2];//指向CString的指针数组,记录用户输入的关键字 astrKeyWord[0]不用
CString astrColumnCaption[2];//列名
CString * astrColumnVal[2];//指向CString的指针数组,记录用户选择的查询条件
astrColumnVal[1]=&advancedQuery.m_condition1;
//将中文的查询转换成对应的表列名
for (i=1;i<2;i++){
if (!astrColumnVal[i]->Compare("书号")){
astrColumnCaption[i]="bno";
continue;
}
if (!astrColumnVal[i]->Compare("类别")){
astrColumnCaption[i]="category";
continue;
}
if (!astrColumnVal[i]->Compare("书名")){
astrColumnCaption[i]="title";
continue;
}
if (!astrColumnVal[i]->Compare("出版社")){
astrColumnCaption[i]="press";
continue;
}
if (!astrColumnVal[i]->Compare("年份")){
astrColumnCaption[i]="year";
continue;
}
if (!astrColumnVal[i]->Compare("作者")){
astrColumnCaption[i]="authors";
continue;
}
if (!astrColumnVal[i]->Compare("价格")){
astrColumnCaption[i]="price";
continue;
}
}
astrKeyWord[1]=&advancedQuery.m_keyword1;
i=1;
while (!astrKeyWord[i]->IsEmpty()&&i<2){
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 + -