⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 odbcdemoview.cpp

📁 应用Visual c++.net连接数据库事例(ODBC)
💻 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 + -