{ }
, m_mail(_T(\)) , m_address(_T(\)) m_pSet = NULL;
// TODO: 在此处添加构造代码
实现控件和成员变量的数据交换
void CtsuView::DoDataExchange(CDataExchange* pDX) { }
设定显示风格:
BOOL CtsuView::PreCreateWindow(CREATESTRUCT& cs) { }
初始化视图的显示
vvoid CtsuView::OnInitialUpdate() {
}
catch(CDBException *pe)
RefreshData(); try {
m_pSet=new CtsuSet(); m_pSet->Open();
m_pSet = &GetDocument()->m_tsuSet; CRecordView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit();
return CRecordView::PreCreateWindow(cs); // TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式 CRecordView::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, m_name); DDX_Text(pDX, IDC_EDIT_TYPE, m_type); DDX_Text(pDX, IDC_EDIT_MAIL, m_mail); DDX_Text(pDX, IDC_EDIT_ADDRESS, m_address);
11 / 16
}
{ }
AfxMessageBox(pe->m_strError); pe->Delete();
CtsuView的数据库支持和消息处理: 1) 获得数据
CRecordset* CtsuView::OnGetRecordset() { }
2) 显示第一条记录
void CtsuView::OnRecordFirst() { }
3) 显示最后一条记录
void CtsuView::OnRecordLast() { }
4) 显示下一条记录
void CtsuView::OnRecordNext() { }
5) 显示上一条记录
void CtsuView::OnRecordPrev() {
// TODO: 在此添加命令处理程序代码 m_pSet->MovePrev();
// TODO: 在此添加命令处理程序代码 m_pSet->MoveNext(); RefreshData();
// TODO: 在此添加命令处理程序代码 m_pSet->MoveLast(); RefreshData();
// TODO: 在此添加命令处理程序代码 m_pSet->MoveFirst(); RefreshData(); return m_pSet;
12 / 16
}
RefreshData();
6) 单击“修改记录”按钮的响应函数 void CtsuView::OnButtonModify() { }
void CtsuView::OnButtonDelete() {
13 / 16
// TODO: 在此添加控件通知处理程序代码 try {
m_pSet->Edit();; UpdateData(TRUE); m_pSet->column1=m_name;
m_pSet->column2=m_type; m_pSet->column3=m_address; m_pSet->column4=m_mail; }
catch(CDBException* pe) { }
AfxMessageBox(pe->m_strError); pe->Delete(); m_pSet->Update();
// TODO: 在此添加控件通知处理程序代码 try { }
catch(CDBException* pe) { }
AfxMessageBox(pe->m_strError); pe->Delete(); m_pSet->Delete(); m_pSet->Requery(); RefreshData();
}
7) 单击“删除记录”按钮的响应函数 void CtsuView::OnButtonDelete() { }
8) 单击“添加记录”按钮的响应函数 void CtsuView::OnButtonAdd() { }
14 / 16
// TODO: 在此添加控件通知处理程序代码 try { }
catch(CDBException* pe) { }
AfxMessageBox(pe->m_strError); pe->Delete(); m_pSet->Delete(); m_pSet->Requery(); RefreshData();
// TODO: 在此添加控件通知处理程序代码 try {
m_pSet->AddNew(); UpdateData(TRUE); m_pSet->column1=m_name;
m_pSet->column2=m_type; m_pSet->column3=m_address; m_pSet->column4=m_mail; }
catch(CDBException* pe) { }
AfxMessageBox(pe->m_strError); pe->Delete(); m_pSet->Update(); m_pSet->Requery();
9) 用数据集的当前内应更新视图 void CtsuView::RefreshData(void) { }
m_name=m_pSet->column1; m_type=m_pSet->column2; m_address=m_pSet->column3; m_mail=m_pSet->column4; UpdateData(false);
四 程序的调试与运行结果说明
运行结果如下图:
而用Visual C++6.0编译的结果如下图
15 / 16
由图可以清楚知道,两者界面存在很大差别。
五 课程设计总结
本程序基本完成了报告上要求的浏览、添加、修改、删除这些要求。通过自己的不断练习,自己逐渐学会一些基本控件的使用,掌握了ODBC连接数据库的方法。由于教程上所用的开发工具是vc6.0,而自己用的是vs2010,有一些函数在vs2010不能使用,通过自己网上搜索和请教同学,找到了相应的函数,并实现了所需的功能。
六 实验过程中遇到的问题
1、按照教程上的方法在运行时出现数据库连接失败,经过自己的调试和修改,发现是连接代码出现错误,针对不同的access版本,连接代码不同。得到了自己想要的结果。、 2、在编辑对话框时由于一些函数不会添加,我请教了和我做同一个设计的同学,最终完成
16 / 16