📄 odbcdemoview.cpp
字号:
// ODBCDemoView.cpp : CODBCDemoView 类的实现
//
#include "stdafx.h"
#include "ODBCDemo.h"
#include "ODBCDemoSet.h"
#include "ODBCDemoDoc.h"
#include "ODBCDemoView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CODBCDemoView
IMPLEMENT_DYNCREATE(CODBCDemoView, CRecordView)
BEGIN_MESSAGE_MAP(CODBCDemoView, CRecordView)
ON_COMMAND(ID_RECORD_ADD, OnRecordAdd)
ON_COMMAND(ID_RECORD_DELETE, OnRecordDelete)
ON_UPDATE_COMMAND_UI(ID_RECORD_DELETE, OnUpdateRecordDelete)
ON_COMMAND(ID_RECORD_EDIT, OnRecordEdit)
ON_UPDATE_COMMAND_UI(ID_RECORD_EDIT, OnUpdateRecordEdit)
END_MESSAGE_MAP()
// CODBCDemoView 构造/销毁
CODBCDemoView::CODBCDemoView()
: CRecordView(CODBCDemoView::IDD)
, m_sName(_T(""))
, m_sAddress(_T(""))
, m_sPostalCode(_T(""))
, m_sHomePhone(_T(""))
, m_sWorkPhone(_T(""))
, isadd(false)
{
m_pSet = NULL;
// TODO: 在此处添加构造代码
}
CODBCDemoView::~CODBCDemoView()
{
}
void CODBCDemoView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如
// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet)
// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
// 有关更多信息,请参阅 MSDN 和 ODBC 示例
DDX_Text(pDX, IDC_NAME, m_sName);
DDX_Text(pDX, IDC_ADDRESS, m_sAddress);
DDX_Text(pDX, IDC_POSTALCODE, m_sPostalCode);
DDX_Text(pDX, IDC_HOMEPHONE, m_sHomePhone);
DDX_Text(pDX, IDC_WORKPHONE, m_sWorkPhone);
DDX_FieldText(pDX, IDC_NAME, m_pSet->m_Name, m_pSet);
DDX_FieldText(pDX, IDC_ADDRESS, m_pSet->m_Address, m_pSet);
DDX_FieldText(pDX, IDC_POSTALCODE, m_pSet->m_PostalCode, m_pSet);
DDX_FieldText(pDX, IDC_HOMEPHONE, m_pSet->m_HomePhone, m_pSet);
DDX_FieldText(pDX, IDC_WORKPHONE, m_pSet->m_WorkPhone, m_pSet);
}
BOOL CODBCDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CRecordView::PreCreateWindow(cs);
}
void CODBCDemoView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_ODBCDemoSet;
CRecordView::OnInitialUpdate();
}
// CODBCDemoView 诊断
#ifdef _DEBUG
void CODBCDemoView::AssertValid() const
{
CRecordView::AssertValid();
}
void CODBCDemoView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
CODBCDemoDoc* CODBCDemoView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CODBCDemoDoc)));
return (CODBCDemoDoc*)m_pDocument;
}
#endif //_DEBUG
// CODBCDemoView 数据库支持
CRecordset* CODBCDemoView::OnGetRecordset()
{
return m_pSet;
}
// CODBCDemoView 消息处理程序
void CODBCDemoView::OnRecordAdd()
{
// TODO: 在此添加命令处理程序代码
if(m_pSet->CanAppend())
{
m_pSet->AddNew();
isadd=true;
}
}
void CODBCDemoView::OnRecordEdit()
{
// TODO: 在此添加命令处理程序代码
m_pSet->Edit();
UpdateData(TRUE);
if( !m_pSet->Update())
{
AfxMessageBox( "Record not updated; no field values were set." );
}
}
void CODBCDemoView::OnUpdateRecordEdit(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(!m_pSet->IsEOF());
}
void CODBCDemoView::OnRecordDelete()
{
// TODO: 在此添加命令处理程序代码
m_pSet->Delete();
if(!m_pSet->IsEOF())
m_pSet->MoveNext();
else
m_pSet->MoveLast();
UpdateData(false);
}
void CODBCDemoView::OnUpdateRecordDelete(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(!m_pSet->IsEOF());
}
BOOL CODBCDemoView::OnMove(UINT nIDMoveCommand)
{
// TODO: 在此添加专用代码和/或调用基类
if(isadd)
{
isadd=false;
UpdateData(true);
m_pSet->m_Name = m_sName;
m_pSet->m_Address = m_sAddress;
m_pSet->m_PostalCode = m_sPostalCode;
m_pSet->m_HomePhone = m_sHomePhone;
m_pSet->m_WorkPhone = m_sWorkPhone;
if( !m_pSet->Update())
{
AfxMessageBox( "Record not updated; no field values were set." );
}
m_pSet->Requery();
UpdateData(false);
return true;
}
else
{
switch (nIDMoveCommand)
{
case ID_RECORD_PREV:
m_pSet->MovePrev();
if (!m_pSet->IsBOF())
break;
case ID_RECORD_FIRST:
m_pSet->MoveFirst();
break;
case ID_RECORD_NEXT:
m_pSet->MoveNext();
if (!m_pSet->IsEOF())
break;
if (!m_pSet->CanScroll())
{
m_pSet->SetFieldNull(NULL);
break;
}
case ID_RECORD_LAST:
m_pSet->MoveLast();
break;
default:
ASSERT(FALSE);
}
UpdateData(FALSE);
return TRUE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -