📄 queryadvanceddlg.cpp
字号:
// QueryAdvancedDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LIBRARY.h"
#include "QueryAdvancedDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQueryAdvancedDlg dialog
CQueryAdvancedDlg::CQueryAdvancedDlg(CWnd* pParent /*=NULL*/)
: CDialog(CQueryAdvancedDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CQueryAdvancedDlg)
m_condition1 = _T("");
m_condition2 = _T("");
m_condition3 = _T("");
m_condition4 = _T("");
m_keyword1 = _T("");
m_keyword2 = _T("");
m_keyword3 = _T("");
m_keyword4 = _T("");
m_strKey = _T("");
m_strOrder = _T("");
m_andOr1 = _T("");
m_andOr2 = _T("");
m_andOr3 = _T("");
m_andOr4 = _T("");
m_andOr5 = _T("");
m_condition5 = _T("");
m_condition6 = _T("");
m_keyword5 = _T("");
m_keyword6 = _T("");
m_keyword7 = _T("");
m_keyword8 = _T("");
//}}AFX_DATA_INIT
}
void CQueryAdvancedDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQueryAdvancedDlg)
DDX_Control(pDX, IDC_LIST_RESULT, m_listResult);
DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
DDX_CBString(pDX, IDC_CONDITION1, m_condition1);
DDX_CBString(pDX, IDC_CONDITION2, m_condition2);
DDX_CBString(pDX, IDC_CONDITION3, m_condition3);
DDX_CBString(pDX, IDC_CONDITION4, m_condition4);
DDX_Text(pDX, IDC_KEY_WORD1, m_keyword1);
DDX_Text(pDX, IDC_KEY_WORD2, m_keyword2);
DDX_Text(pDX, IDC_KEY_WORD3, m_keyword3);
DDX_Text(pDX, IDC_KEY_WORD4, m_keyword4);
DDX_CBString(pDX, IDC_SELKEY, m_strKey);
DDX_CBString(pDX, IDC_SELORDER, m_strOrder);
DDX_CBString(pDX, IDC_AND_OR1, m_andOr1);
DDX_CBString(pDX, IDC_AND_OR2, m_andOr2);
DDX_CBString(pDX, IDC_AND_OR3, m_andOr3);
DDX_CBString(pDX, IDC_AND_OR4, m_andOr4);
DDX_CBString(pDX, IDC_AND_OR5, m_andOr5);
DDX_CBString(pDX, IDC_CONDITION5, m_condition5);
DDX_CBString(pDX, IDC_CONDITION6, m_condition6);
DDX_Text(pDX, IDC_KEY_WORD5, m_keyword5);
DDX_Text(pDX, IDC_KEY_WORD6, m_keyword6);
DDX_Text(pDX, IDC_KEY_WORD7, m_keyword7);
DDX_Text(pDX, IDC_KEY_WORD8, m_keyword8);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQueryAdvancedDlg, CDialog)
//{{AFX_MSG_MAP(CQueryAdvancedDlg)
ON_LBN_SELCHANGE(IDC_LIST_RESULT, OnSelchangeListResult)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQueryAdvancedDlg message handlers
void CQueryAdvancedDlg::OnOK()
{
// TODO: Add extra validation here
CString str;
CString strFilter;
CString *astrKeyWord[9];
CString astrColumnCaption[8];
CString *astrColumnVal[8];
CString *aAndOr[8];
int i,last;
CString kw,odby;
UpdateData();
// AfxMessageBox(m_strKey+m_strOrder);
if (m_strKey=="书号") kw="bno";
else if (m_strKey=="年份") kw="year";
else if (m_strKey=="类别") kw="category";
else if (m_strKey=="出版社") kw="press";
else if (m_strKey=="作者") kw="author";
else if (m_strKey=="价格") kw="price";
else if (m_strKey=="总藏书量") kw="totalnum";
else if (m_strKey=="现藏书量") kw="stockednum";
else kw="title";
if (m_strOrder=="升序") odby="asc";
else odby="desc";
// AfxMessageBox(kw+odby);
aAndOr[1]=&m_andOr1;
aAndOr[2]=&m_andOr2;
aAndOr[3]=&m_andOr3;
aAndOr[4]=&m_andOr4;
aAndOr[5]=&m_andOr5;
astrColumnVal[1]=&m_condition1;
astrColumnVal[2]=&m_condition2;
astrColumnVal[3]=&m_condition3;
astrColumnVal[4]=&m_condition4;
astrColumnVal[5]=&m_condition5;
astrColumnVal[6]=&m_condition6;
astrKeyWord[1]=&m_keyword1;
astrKeyWord[2]=&m_keyword2;
astrKeyWord[3]=&m_keyword3;
astrKeyWord[4]=&m_keyword4;
astrKeyWord[5]=&m_keyword5;
astrKeyWord[6]=&m_keyword6;
astrKeyWord[7]=&m_keyword7;
astrKeyWord[8]=&m_keyword8;
/* 书号
书名
类别
出版社
年份
作者
价格
总藏书量
现藏书量*/
for (i=1;i<7;i++)
{
if (!astrColumnVal[i]->Compare("书号"))
{
astrColumnCaption[i]="bno";
}
if (!astrColumnVal[i]->Compare("书名"))
{
astrColumnCaption[i]="title";
}
if (!astrColumnVal[i]->Compare("类别"))
{
astrColumnCaption[i]="category";
}
if (!astrColumnVal[i]->Compare("出版社"))
{
astrColumnCaption[i]="press";
}
if (!astrColumnVal[i]->Compare("年份"))
{
astrColumnCaption[i]="year";
}
if (!astrColumnVal[i]->Compare("作者"))
{
astrColumnCaption[i]="author";
}
if (!astrColumnVal[i]->Compare("价格"))
{
astrColumnCaption[i]="price";
}
if (!astrColumnVal[i]->Compare("总藏书量"))
{
astrColumnCaption[i]="totalnum";
}
if (!astrColumnVal[i]->Compare("现藏数量"))
{
astrColumnCaption[i]="stockednum";
}
}
i=1;last=0;
while(/*!astrKeyWord[i]->IsEmpty()&&*/i<7)
{
// AfxMessageBox("!");
if (astrKeyWord[i]->IsEmpty()) {i++;continue;}
if (last)
{
strFilter+=" ";
int j=last;
while (*aAndOr[j]=="") j++;
strFilter+=*aAndOr[j];
strFilter+=" ";
}
if (astrColumnCaption[i]=="price" || astrColumnCaption[i]=="year" ||
astrColumnCaption[i]=="totalnum" || astrColumnCaption[i]=="stockednum")
str.Format("%s>=%s and %s<=%s",astrColumnCaption[i],*astrKeyWord[i],astrColumnCaption[i],*astrKeyWord[i+2]);
else if (astrColumnCaption[i]=="bno") str.Format("%s ='%s'",astrColumnCaption[i],*astrKeyWord[i]);
else str=astrColumnCaption[i]+" like '%"+(*astrKeyWord[i])+"%'";
strFilter+=str;
last=i;
i++;
}
m_bookSet.m_strFilter=strFilter;
m_bookSet.m_strSort=kw+" "+odby;
// AfxMessageBox("Where "+m_bookSet.m_strFilter+" Order by "+m_bookSet.m_strSort);
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_bno+" "+m_bookSet.m_title);
m_bookSet.MoveNext();
}
//CDialog::OnOK();
}
void CQueryAdvancedDlg::OnSelchangeListResult()
{
// TODO: Add your control notification handler code here
CString Title[9];
Title[0]="图书编号: ";
Title[1]="类别: ";
Title[2]="书名: ";
Title[3]="出版社: ";
Title[4]="出版年份: ";
Title[5]="作者: ";
Title[6]="价格: ";
Title[7]="总藏书量: ";
Title[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);
strline.Empty();
strline+=Title[i];
strline+=strDetail;
m_listDetail.AddString(strline);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -