📄 querybasicdlg.cpp
字号:
// QueryBasicDlg.cpp : implementation file
//
#include "stdafx.h"
#include "library.h"
#include "BookRS1.h"
#include "QueryBasicDlg.h"
#include "QueryAdvancedDlg1.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("");
m_strkw = _T("");
m_strodby = _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);
DDX_CBString(pDX, IDC_SEQUENCEKW, m_strkw);
DDX_CBString(pDX, IDC_SEQUENCEODBY, m_strodby);
//}}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
CString skw,sby;
UpdateData();//将编辑框内容更新到与此绑定的成员变量如m_strKeyWord中
if(m_strkw == "书名" || m_strkw == "")
skw = "title";
else if(m_strkw == "书号")
skw = "bno";
else if(m_strkw == "出版社")
skw = "press";
else if(m_strkw == "年份")
skw = "year";
else if(m_strkw == "类别")
skw = "category";
else if(m_strkw == "作者")
skw = "author";
else if(m_strkw == "总藏书量")
skw = "totalnum";
else if(m_strkw == "库存")
skw = "stockednum";
else
skw = "price";
if(m_strodby == "升序" || m_strodby == "")
sby = "ASC";
else
sby = "DESC";
m_listResult.ResetContent();//清空结果列表的内容(如果有)
if (!m_bookSet.IsOpen()){
m_bookSet.Open();
}
//设置查询条件,根据书名关键字进行模糊查询
m_bookSet.m_strFilter="title like '%"+m_strKeyWord+"%'";
m_bookSet.m_strSort=skw+" "+sby;
//AfxMessageBox(m_bookSet.m_strSort);
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()
{
// 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);//从记录集中取出第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;
CQueryAdvancedDlg1 advancedQuery;
advancedQuery.DoModal(); //显示“高级查询”对话框
CString str;
CString strFilter; //查询条件
CString * astrKeyWord[9];
CString astrColumnCaption[7];
CString * astrColumnVal[7];
CString * aAndOr[6];
CString skw,sby;
//advancedQuery.UpdateData();
//CQASet.UpdateData();
//AfxMessageBox(advancedQuery.m_scon+advancedQuery.m_sby);
if(advancedQuery.m_scon == "书名" || advancedQuery.m_scon == "")
skw = "title";
else if(advancedQuery.m_scon == "书号")
skw = "bno";
else if(advancedQuery.m_scon == "出版社")
skw = "press";
else if(advancedQuery.m_scon == "年份")
skw = "year";
else if(advancedQuery.m_scon == "类别")
skw = "category";
else if(advancedQuery.m_scon == "作者")
skw = "author";
else if(advancedQuery.m_scon == "总藏书量")
skw = "totalnum";
else if(advancedQuery.m_scon == "库存")
skw = "stockednum";
else
skw = "price";
if(advancedQuery.m_sby == "升序" || advancedQuery.m_sby == "")
sby = "ASC";
else
sby = "DESC";
//AfxMessageBox(skw+sby);
aAndOr[1] = &advancedQuery.m_andOr1;
aAndOr[2] = &advancedQuery.m_andOr2;
aAndOr[3] = &advancedQuery.m_andOr3;
aAndOr[4] = &advancedQuery.m_andOr4;
aAndOr[5] = &advancedQuery.m_andOr5;
astrColumnVal[1] = &advancedQuery.m_condition1;
astrColumnVal[2] = &advancedQuery.m_condition2;
astrColumnVal[3] = &advancedQuery.m_condition3;
astrColumnVal[4] = &advancedQuery.m_condition4;
astrColumnVal[5] = &advancedQuery.m_condition5;
astrColumnVal[6] = &advancedQuery.m_condition6;
//将中文的查询转换成对应的表列名
for(i=1;i<7;i++)
{
if (!astrColumnVal[i]->Compare("书名"))
{
astrColumnCaption[i] = "title";
continue;
}
if (!astrColumnVal[i]->Compare("类别"))
{
astrColumnCaption[i] = "category";
continue;
}
if (!astrColumnVal[i]->Compare("出版社"))
{
astrColumnCaption[i] = "press";
continue;
}
if (!astrColumnVal[i]->Compare("作者"))
{
astrColumnCaption[i] = "author";
continue;
}
if (!astrColumnVal[i]->Compare("价格"))
{
astrColumnCaption[i] = "price";
continue;
}
if (!astrColumnVal[i]->Compare("年份"))
{
astrColumnCaption[i] = "year";
continue;
}
}
astrKeyWord[1] = &advancedQuery.m_keyword1;
astrKeyWord[2] = &advancedQuery.m_keyword2;
astrKeyWord[3] = &advancedQuery.m_keyword3;
astrKeyWord[4] = &advancedQuery.m_keyword4;
astrKeyWord[5] = &advancedQuery.m_keyword51;
astrKeyWord[6] = &advancedQuery.m_keyword61;
astrKeyWord[7] = &advancedQuery.m_keyword52;
astrKeyWord[8] = &advancedQuery.m_keyword62;
i=1;
int temp = 0;
while (i<7)
{
if(astrKeyWord[i]->IsEmpty())
{
i++;
continue;
}
if(temp)
{
strFilter+= " ";
strFilter+= *aAndOr[temp];
strFilter+= " ";
}
if (astrColumnCaption[i]=="price" || astrColumnCaption[i]=="year")
{
str.Format("%s>=%s and %s<=%s", astrColumnCaption[i],*astrKeyWord[i],astrColumnCaption[i],*astrKeyWord[i+2]);
}
else
//str.Format("%s = '%s'",astrColumnCaption[i],*astrKeyWord[i]);
str.Format("%s like '%%%s%%'",astrColumnCaption[i],*astrKeyWord[i]);
strFilter+=str;
temp=i;
i++;
}
m_bookSet.m_strFilter = strFilter;
m_bookSet.m_strSort=skw+" "+sby;
//AfxMessageBox(m_bookSet.m_strSort);
if(!m_bookSet.IsOpen())
{
m_bookSet.Open();
}
m_bookSet.Requery();// AfxMessageBox(strFilter);
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 + -