📄 qrybookdlg.cpp
字号:
// QryBookDlg.cpp : implementation file
//
#include "stdafx.h"
#include "BookLib.h"
#include "QryBookDlg.h"
#include "BookModiDlg.h"
#include "Columns.h"
#include "Column.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQryBookDlg dialog
CQryBookDlg::CQryBookDlg(CWnd* pParent /*=NULL*/)
: CDialog(CQryBookDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CQryBookDlg)
m_subtype = -1;
m_type = -1;
m_author = _T("");
m_isbn = _T("");
m_name = _T("");
m_pub = _T("");
m_prov = -1;
//}}AFX_DATA_INIT
}
void CQryBookDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQryBookDlg)
DDX_Control(pDX, IDC_CMB_PROV, m_cmb_prov);
DDX_Control(pDX, IDC_CMB_TYPE, m_cmb_type);
DDX_Control(pDX, IDC_CMB_SUBTYPE, m_cmb_subtype);
DDX_CBIndex(pDX, IDC_CMB_SUBTYPE, m_subtype);
DDX_CBIndex(pDX, IDC_CMB_TYPE, m_type);
DDX_Control(pDX, IDC_DATAGRID1, m_dg);
DDX_Text(pDX, IDC_EDIT_AUTHOR, m_author);
DDV_MaxChars(pDX, m_author, 20);
DDX_Text(pDX, IDC_EDIT_ISBN, m_isbn);
DDV_MaxChars(pDX, m_isbn, 13);
DDX_Text(pDX, IDC_EDIT_NAME, m_name);
DDV_MaxChars(pDX, m_name, 50);
DDX_CBString(pDX, IDC_CMB_PUB, m_pub);
DDV_MaxChars(pDX, m_pub, 30);
DDX_CBIndex(pDX, IDC_CMB_PROV, m_prov);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQryBookDlg, CDialog)
//{{AFX_MSG_MAP(CQryBookDlg)
ON_BN_CLICKED(IDC_BTN_QRY_BASIC, OnBtnQryBasic)
ON_BN_CLICKED(IDC_BTN_QRY_PROV, OnBtnQryProv)
ON_CBN_SELCHANGE(IDC_CMB_TYPE, OnSelchangeCmbType)
ON_BN_CLICKED(IDC_BTN_QRY_TYPE, OnBtnQryType)
ON_BN_CLICKED(IDC_BTN_MODI, OnBtnModi)
ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CQryBookDlg::OnBtnQryBasic()
{
if(!UpdateData()) return;
CString sql;
sql="select * from 书籍信息_类别_供应商视图 where ";
if(!m_isbn.IsEmpty())
sql=sql+" ISBN='"+m_isbn+"' and ";
if(!m_name.IsEmpty())
sql=sql+" 书名 like '%"+m_name+"%' and ";
if(!m_author.IsEmpty())
sql=sql+" 作者 like '%"+m_author+"%' and ";
if(!m_pub.IsEmpty())
sql=sql+" 出版社 like '%"+m_pub+"%'";
if(sql.Right(6)=="where ")
{
MessageBox("至少输入一个条件!","提示");
return;
}
if(sql.Right(4)=="and ")
sql=sql.Left(sql.GetLength()-4);
m_pRecordset=g_adoDB.ExecuteQuery(sql);
m_dg.SetRefDataSource(NULL);
m_dg.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_dg.SetCaption("按基本条件查询结果");
m_dg.Refresh();
}
void CQryBookDlg::OnBtnQryProv()
{
if(m_cmb_prov.GetCurSel()==-1)
{
MessageBox("请选择供应商!","提示");
return;
}
CString strProv;
m_cmb_prov.GetLBText(m_cmb_prov.GetCurSel(),strProv);
CString sql;
sql.Format("Select * from 书籍信息_类别_供应商视图 where 供应商名称='%s'",strProv);
m_pRecordset=g_adoDB.ExecuteQuery(sql);
m_dg.SetRefDataSource(NULL);
m_dg.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_dg.SetCaption("按供应商查询结果");
m_dg.Refresh();
}
void CQryBookDlg::InitCmb()
{
m_cmb_type.ResetContent();
m_cmb_prov.ResetContent();
CDStrs provFields;
g_adoDB.ExecuteQuery("Select 名称 from 供应商表",provFields);
for(int i=0;i<provFields.size();i++)//供应商名称数据
{
CStrs strs=provFields[i];
m_cmb_prov.AddString(strs[0]);
}
CDStrs typeFields;
g_adoDB.ExecuteQuery("Select distinct 类别名称 from 书籍类别表",typeFields);
for(i=0;i<typeFields.size();i++)//书籍类别名称数据
{
CStrs strs=typeFields[i];
m_cmb_type.AddString(strs[0]);
}
}
void CQryBookDlg::OnSelchangeCmbType()
{
CString type;
m_cmb_type.GetLBText(m_cmb_type.GetCurSel(),type);
m_cmb_subtype.ResetContent();
CString sql;
sql.Format("Select 子类名称 from 书籍类别表 where 类别名称='%s'",type);
CDStrs subtypeFields;
g_adoDB.ExecuteQuery(sql,subtypeFields);
for(int i=0;i<subtypeFields.size();i++)//子类名称
{
CStrs strs=subtypeFields[i];
m_cmb_subtype.AddString(strs[0]);
}
}
BOOL CQryBookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
InitCmb();
if(strUserLevel=="普通用户")
{
((CButton*)GetDlgItem(IDC_BTN_DEL))->EnableWindow(FALSE);//禁用删除按钮
((CButton*)GetDlgItem(IDC_BTN_MODI))->EnableWindow(FALSE);//禁用修改按钮
}
return TRUE;
}
void CQryBookDlg::OnBtnQryType()
{
if(m_cmb_type.GetCurSel()==-1)
{
MessageBox("请选择类别!","提示");
return;
}
CString strType;
m_cmb_type.GetLBText(m_cmb_type.GetCurSel(),strType);
CString sql;
sql="select * from 书籍信息_类别_供应商视图 where 类别名称='"+strType+"'";
if(m_cmb_subtype.GetCurSel()!=-1)
{
CString strSubtype;
m_cmb_subtype.GetLBText(m_cmb_subtype.GetCurSel(),strSubtype);
sql=sql+" and 子类名称='"+strSubtype+"'";
}
m_pRecordset=g_adoDB.ExecuteQuery(sql);
m_dg.SetRefDataSource(NULL);
m_dg.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_dg.SetCaption("按类别(和子类)查询结果");
m_dg.Refresh();
}
void CQryBookDlg::OnBtnModi()
{
if(m_pRecordset==NULL ||
(m_pRecordset->adoEOF && m_pRecordset->BOF)) return;
CBookModiDlg dlg;
CColumns columns;
columns=m_dg.GetColumns();
CColumn column;
VARIANT index;
index.vt=VT_INT;
index.lVal=0;
column=columns.GetItem(index);
dlg.strISBN=column.GetText();//ISBN
index.lVal=1;
column=columns.GetItem(index);
dlg.m_name=column.GetText();//书名
index.lVal=4;
column=columns.GetItem(index);
dlg.m_author=column.GetText();//作者
index.lVal=5;
column=columns.GetItem(index);
dlg.m_pub=column.GetText();//出版社
index.lVal=6;
column=columns.GetItem(index);
dlg.m_ver=column.GetText();//版本
index.lVal=7;
column=columns.GetItem(index);
dlg.m_price=atof(column.GetText());//价格
index.lVal=12;
column=columns.GetItem(index);
dlg.strProv=column.GetText();//供应商名称
index.lVal=13;
column=columns.GetItem(index);
dlg.m_remark=column.GetText();//备注
dlg.DoModal();
m_pRecordset->Requery(adCmdText);
m_dg.Refresh();
}
void CQryBookDlg::OnBtnDel()
{
if(m_pRecordset==NULL ||
(m_pRecordset->adoEOF && m_pRecordset->BOF)) return;
CColumns columns;
columns=m_dg.GetColumns();
CColumn column;
VARIANT index;
index.vt=VT_INT;
index.lVal=0;
column=columns.GetItem(index);
CString strID;
strID=column.GetText();
index.lVal=1;
column=columns.GetItem(index);
CString strName;
strName=column.GetText();
CString prompt;
prompt.Format("确定要删除:<< %s >>吗?",strName);
if(MessageBox(prompt,"提示",MB_OKCANCEL)!=IDOK)
return;
CString sql;
sql.Format("delete from 书籍编号表 where ISBN='%s'",strID);
g_adoDB.Execute(sql);//先删除书籍编号表中记录
sql.Format("delete from 书籍信息表 where ISBN='%s'",strID);
g_adoDB.Execute(sql);//删除书籍信息表中记录
m_pRecordset->Requery(adCmdText);
m_dg.Refresh();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -