📄 bookinfoview.cpp
字号:
// BookInfoView.cpp : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "BookInfoView.h"
#include "QueryBookInfo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBookInfoView
IMPLEMENT_DYNCREATE(CBookInfoView, CRecordView)
CBookInfoView::CBookInfoView()
: CRecordView(CBookInfoView::IDD)
{
//{{AFX_DATA_INIT(CBookInfoView)
m_pSet = NULL;
m_olePublishDate = COleDateTime::GetCurrentTime();
//}}AFX_DATA_INIT
m_bAdding = FALSE;
}
CBookInfoView::~CBookInfoView()
{
if (m_pSet)
delete m_pSet;
}
void CBookInfoView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBookInfoView)
DDX_FieldText(pDX, IDC_NAME, m_pSet->m_BookName, m_pSet);
DDX_FieldText(pDX, IDC_ISBN, m_pSet->m_ISBN, m_pSet);
DDX_FieldText(pDX, IDC_PRICE, m_pSet->m_Price, m_pSet);
DDX_FieldText(pDX, IDC_PUBLISHINGHOUSE, m_pSet->m_PublishingHouse, m_pSet);
DDX_FieldText(pDX, IDC_REMARK, m_pSet->m_Remark, m_pSet);
DDX_FieldText(pDX, IDC_BOOKTYPECODE, m_pSet->m_BookTypeCode, m_pSet);
DDX_FieldText(pDX, IDC_WRITER, m_pSet->m_Writer, m_pSet);
DDX_Text(pDX, IDC_PUBLISHDATE, m_olePublishDate);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBookInfoView, CRecordView)
//{{AFX_MSG_MAP(CBookInfoView)
ON_COMMAND(ID_INSERT_BOOKINFO, OnInsertBookinfo)
ON_COMMAND(ID_QUERY_BOOKINFO, OnQueryBookinfo)
ON_COMMAND(ID_UNQUERY_BOOKINFO, OnUnqueryBookinfo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBookInfoView diagnostics
#ifdef _DEBUG
void CBookInfoView::AssertValid() const
{
CRecordView::AssertValid();
}
void CBookInfoView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CBookInfoView message handlers
CRecordset* CBookInfoView::OnGetRecordset()
{
if (m_pSet != NULL)
return m_pSet;
m_pSet = new CBookInfoSet(NULL);
m_pSet->Open();
return m_pSet;
}
CBookInfoSet* CBookInfoView::GetRecordset()
{
CBookInfoSet* pData = (CBookInfoSet*) OnGetRecordset();
ASSERT(pData == NULL || pData->IsKindOf(RUNTIME_CLASS(CBookInfoSet)));
return pData;
}
void CBookInfoView::OnInitialUpdate()
{
BeginWaitCursor();
GetRecordset();
CRecordView::OnInitialUpdate();
if (m_pSet->IsOpen())
{
CString strTitle = m_pSet->m_pDatabase->GetDatabaseName();
CString strTable = m_pSet->GetTableName();
if (!strTable.IsEmpty())
strTitle += _T(":") + strTable;
GetDocument()->SetTitle(strTitle);
}
EndWaitCursor();
// 移动到第一条记录
if (m_pSet->IsBOF() == FALSE)
m_pSet->MoveFirst();
// 显示出版日期
m_olePublishDate.SetDate(m_pSet->m_PublisDate.GetYear(), m_pSet->m_PublisDate.GetMonth(), m_pSet->m_PublisDate.GetDay());
UpdateData(FALSE);
}
void CBookInfoView::OnInsertBookinfo()
{
// 添加新的书目信息
m_pSet->AddNew();
m_bAdding = TRUE;
// 更新显示
UpdateData(FALSE);
}
BOOL CBookInfoView::OnMove(UINT nIDMoveCommand)
{
if (m_bAdding == TRUE)
{
// 变量复位
m_bAdding = FALSE;
// 更新数据
UpdateData(TRUE);
// 设置出版日期
int year = m_olePublishDate.GetYear();
int month = m_olePublishDate.GetMonth();
int day = m_olePublishDate.GetDay();
m_pSet->m_PublisDate = CTime(year, month, day, 0, 0, 0);
// 更新数据
if (m_pSet->CanUpdate() == TRUE)
m_pSet->Update();
// 刷新记录
if (m_pSet->CanRestart() == TRUE)
m_pSet->Requery();
// 更新显示
UpdateData(FALSE);
}
else
{
// 先移动指针
BOOL ret = CRecordView::OnMove(nIDMoveCommand);
// 显示出版日期
m_olePublishDate.SetDate(m_pSet->m_PublisDate.GetYear(), m_pSet->m_PublisDate.GetMonth(), m_pSet->m_PublisDate.GetDay());
// 更新显示
UpdateData(FALSE);
return ret;
}
}
void CBookInfoView::OnQueryBookinfo()
{
// 条件查询
CQueryBookInfo dlg;
if (dlg.DoModal() == IDOK)
{
// 各种查询条件
CString sCondition = "";
if (dlg.m_sBookName != "")
sCondition += "书名 = '" + dlg.m_sBookName + "' AND ";
if (dlg.m_sWriter != "")
sCondition += "作者 = '" + dlg.m_sWriter + "' AND ";
if (dlg.m_sISBN != "")
sCondition += "书号 = '" + dlg.m_sISBN + "' AND ";
if (dlg.m_sPulishingHouse != "")
sCondition += "出版社 = '" + dlg.m_sPulishingHouse + "' AND ";
if (dlg.m_sYear != "" && dlg.m_sCondition != "" && dlg.m_sMonth != "")
{
// 得到月份
CString sMonth;
if (dlg.m_sMonth.Left(1) == "1")
sMonth = dlg.m_sMonth.Left(2);
else
sMonth = dlg.m_sMonth.Mid(2, 1);
if (dlg.m_sCondition == "等于")
sCondition += "出版日期 >= #" + sMonth + "/1/" + dlg.m_sYear + "# AND 出版日期 <= #" + sMonth + "/31/" + dlg.m_sYear + "# AND ";
if (dlg.m_sCondition == "大于")
sCondition += "出版日期 > #" + sMonth + "/31/" + dlg.m_sYear + "# AND ";
if (dlg.m_sCondition == "小于")
sCondition += "出版日期 < #" + sMonth + "/1/" + dlg.m_sYear + "# AND ";
}
sCondition += "图书ID > 0";
// 关闭数据库
if (m_pSet->IsOpen() == TRUE)
m_pSet->Close();
// 查找到指定卡号的记录
m_pSet->m_strFilter = sCondition;
// 打开数据库
m_pSet->Open();
// 移动到第一条记录
if (m_pSet->GetRecordCount() > 0)
{
m_pSet->MoveFirst();
// 显示出版日期
m_olePublishDate.SetDate(m_pSet->m_PublisDate.GetYear(), m_pSet->m_PublisDate.GetMonth(), m_pSet->m_PublisDate.GetDay());
}
// 更新显示
UpdateData(FALSE);
}
}
void CBookInfoView::OnUnqueryBookinfo()
{
// 关闭数据库
if (m_pSet->IsOpen() == TRUE)
m_pSet->Close();
// 无限定条件
m_pSet->m_strFilter = "";
// 打开数据库
m_pSet->Open();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -