📄 admbookdlg.cpp
字号:
// ADMBookDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "MyZone.h"
#include "ADMBookDlg.h"
#include ".\admbookdlg.h"
// ADMBookDlg 对话框
IMPLEMENT_DYNAMIC(ADMBookDlg, CDialog)
ADMBookDlg::ADMBookDlg(CWnd* pParent /*=NULL*/)
: CDialog(ADMBookDlg::IDD, pParent)
, m_isbn(_T(""))
, m_bookname(_T(""))
, m_author(_T(""))
, m_publish(_T(""))
, m_publishdate(_T(""))
, m_total(_T(""))
, m_price(_T(""))
, m_left(_T(""))
{
}
ADMBookDlg::~ADMBookDlg()
{
}
void ADMBookDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_isbn);
DDX_Text(pDX, IDC_EDIT2, m_bookname);
DDX_Text(pDX, IDC_EDIT3, m_author);
DDX_Text(pDX, IDC_EDIT4, m_publish);
DDX_Text(pDX, IDC_EDIT5, m_publishdate);
DDX_Text(pDX, IDC_EDIT6, m_total);
DDX_Text(pDX, IDC_EDIT7, m_price);
DDX_Control(pDX, IDC_LIST3, m_List);
}
BEGIN_MESSAGE_MAP(ADMBookDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_LBN_SELCHANGE(IDC_LIST3, OnLbnSelchangeList3)
END_MESSAGE_MAP()
// ADMBookDlg 消息处理程序
void ADMBookDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_isbn.IsEmpty())
{
MessageBox("请输入ISBN");
return;
}
if(m_bookname.IsEmpty())
{
MessageBox("请输入书名");
return;
}
if(m_author.IsEmpty())
{
MessageBox("请输入作者名");
return;
}
if(m_publish.IsEmpty())
{
MessageBox("请输入出版社名");
return;
}
if(m_publishdate.IsEmpty())
{
MessageBox("请输入出版日期");
return;
}
if(m_total.IsEmpty())
{
MessageBox("请输入书目总数");
return;
}
if(m_price.IsEmpty())
{
MessageBox("请输入书目价格");
return;
}
try
{
// 写入各字段值
theApp.m_pRecordsetbook->AddNew();
theApp.m_pRecordsetbook->PutCollect("ISBN", _variant_t(m_isbn));
theApp.m_pRecordsetbook->PutCollect("Book_Name", _variant_t(m_bookname));
theApp.m_pRecordsetbook->PutCollect("Author", _variant_t(m_author));
theApp.m_pRecordsetbook->PutCollect("Publish", _variant_t(m_publish));
theApp.m_pRecordsetbook->PutCollect("Pub_Date", _variant_t(m_publishdate));
theApp.m_pRecordsetbook->PutCollect("Total_Num", _variant_t(m_total));
theApp.m_pRecordsetbook->PutCollect("Left_Num", _variant_t(m_total));
theApp.m_pRecordsetbook->PutCollect("Price", _variant_t(m_price));
theApp.m_pRecordsetbook->Update();
AfxMessageBox("插入成功!");
// 更新显示其库内容
int nCurSel = m_List.GetCurSel();
OnReadAccess();
m_List.SetCurSel(nCurSel);
// 移动记录指针到新的位置
OnLbnSelchangeList3();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void ADMBookDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
if(m_List.GetCount() == 0)
return;
else if(m_List.GetCurSel() < 0 || m_List.GetCurSel() > m_List.GetCount())
m_List.SetCurSel(0);
try
{
// 删除当前行记录
theApp.m_pRecordsetbook->Delete(adAffectCurrent);
theApp.m_pRecordsetbook->Update();
// 删除列表中当前值
int nCurSel = m_List.GetCurSel();
m_List.DeleteString(nCurSel);
if(nCurSel == 0 && (m_List.GetCount() != 0))
m_List.SetCurSel(nCurSel);
else if(m_List.GetCount() != 0)
m_List.SetCurSel(nCurSel-1);
// 移动记录指针到新的位置
OnLbnSelchangeList3();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void ADMBookDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(); // 更新对话框数据
if(m_List.GetCount() == 0 || m_isbn == "" || m_bookname == "" || m_author == "" || m_publish == "" || m_publishdate == "" || m_total == "" || m_price == "" )
{
AfxMessageBox("表中记录数为空或信息没有设置!");
return;
}
else if(m_List.GetCurSel() < 0 || m_List.GetCurSel() > m_List.GetCount())
m_List.SetCurSel(0);
// 修改当前记录的字段值
try
{
theApp.m_pRecordsetbook->PutCollect("ISBN", _variant_t(m_isbn));
theApp.m_pRecordsetbook->PutCollect("Book_Name", _variant_t(m_bookname));
theApp.m_pRecordsetbook->PutCollect("Author", _variant_t(m_author));
theApp.m_pRecordsetbook->PutCollect("Publish", _variant_t(m_publish));
theApp.m_pRecordsetbook->PutCollect("Pub_Date", _variant_t(m_publishdate));
theApp.m_pRecordsetbook->PutCollect("Total_Num", _variant_t(m_total));
theApp.m_pRecordsetbook->PutCollect("Left_Num", _variant_t(m_total));
theApp.m_pRecordsetbook->PutCollect("Price", _variant_t(m_price));
theApp.m_pRecordsetbook->Update();
// 重新读入库记录更新显示
int nCurSel = m_List.GetCurSel();
OnReadAccess();
m_List.SetCurSel(nCurSel);
// 移动记录指针到新的位置
OnLbnSelchangeList3();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void ADMBookDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
OnCancel();
}
BOOL ADMBookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
try
{
theApp.m_pRecordsetbook->Open(_variant_t("SELECT * FROM Book"),
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
OnReadAccess();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void ADMBookDlg::OnReadAccess(void)
{
_variant_t var;
CString strisbn,strbookname,strauthor,strpublish,strpublishdate,strtotal,strprice,strleft;
// 清空列表框
m_List.ResetContent();
strisbn=strbookname=strauthor=strpublish=strpublishdate=strtotal=strprice=strleft="";
try
{
if(!theApp.m_pRecordsetbook->BOF)
{
theApp.m_pRecordsetbook->MoveFirst();
}
else
{
AfxMessageBox("表内数据为空");
return;
}
// 读入库中各字段并加入列表框中
while(!theApp.m_pRecordsetbook->adoEOF)
{
var = theApp.m_pRecordsetbook->GetCollect("ISBN");//collect收集、聚焦
if(var.vt != VT_NULL)
strisbn = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Book_Name");
if(var.vt != VT_NULL)
strbookname = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Author");
if(var.vt != VT_NULL)
strauthor = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Publish");
if(var.vt != VT_NULL)
strpublish = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Pub_Date");
if(var.vt != VT_NULL)
strpublishdate = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Total_Num");
if(var.vt != VT_NULL)
strtotal = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Left_Num");
if(var.vt != VT_NULL)
strleft = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Price");
if(var.vt != VT_NULL)
strprice = (LPCSTR)_bstr_t(var);
m_List.AddString( strisbn + " --> "+strbookname + " --> "+strauthor + " --> "+strpublish + " --> "+strpublishdate+ " --> "+strtotal+ " --> "+strleft+ " --> "+strprice);
theApp.m_pRecordsetbook->MoveNext();
}
// 默认列表指向第一项,同时移动记录指针并显示
m_List.SetCurSel(0);
OnLbnSelchangeList3();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
BOOL ADMBookDlg::DestroyWindow()
{
// TODO: 在此添加专用代码和/或调用基类
theApp.m_pRecordsetbook->Close();
theApp.m_pRecordsetbook = NULL;
return CDialog::DestroyWindow();
}
void ADMBookDlg::OnLbnSelchangeList3()
{
// TODO: 在此添加控件通知处理程序代码
int curSel = m_List.GetCurSel();
_variant_t var,varIndex;
if(curSel < 0)
return;
try
{
// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
theApp.m_pRecordsetbook->MoveFirst();
theApp.m_pRecordsetbook->Move(long(curSel));
var = theApp.m_pRecordsetbook->GetCollect("ISBN");
if(var.vt != VT_NULL)
m_isbn = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Book_Name");
if(var.vt != VT_NULL)
m_bookname = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Author");
if(var.vt != VT_NULL)
m_author = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Publish");
if(var.vt != VT_NULL)
m_publish = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Pub_Date");
if(var.vt != VT_NULL)
m_publishdate = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Total_Num");
if(var.vt != VT_NULL)
m_total = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Left_Num");
if(var.vt != VT_NULL)
m_left = (LPCSTR)_bstr_t(var);
var = theApp.m_pRecordsetbook->GetCollect("Price");
if(var.vt != VT_NULL)
m_price = (LPCSTR)_bstr_t(var);
UpdateData(false);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -