发布时间 : 星期一 文章用ado连接access更新完毕开始阅读d1e0d2eb19e8b8f67c1cb962
var = m_pRecordset->GetCollect(\ if(var.vt != VT_NULL)
m_Name = (LPCSTR)_bstr_t(var);//////m_Name,m_Age等要做定义
////在对话框中新建几个按键 先定义名称
并代表申明变量 m_Name,m_Age
var = m_pRecordset->GetCollect(\ if(var.vt != VT_NULL)
m_Age = (LPCSTR)_bstr_t(var);
UpdateData(false); }
catch(_com_error *e) {
AfxMessageBox(e->ErrorMessage()); } } 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 、、、、、、、-----------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
--------------------------------------------------------------------
8)---------------------------------插入的字段值------------------------------------- ////////////////////////////////////////////////////////////////////////////// //名称:OnWriteAccess
//功能:用ADO来写入插入的字段值
///////////////////////////////////////////////////////////////////////////// ////步骤:1 调用AddNew()新增一个空记录集
//////////2 调用PutCollect(字段名,值)输入每个字段的值 //////////3 调用Update()更新数据库中的数据 ///////
void CAdoRWAccessDlg::OnWriteAccess() {
UpdateData();
if(m_Name == \ {
AfxMessageBox(\姓名和年龄信息不能为空!\
return; }
//检验年龄是否正确 long age;
age=atol(m_Age); if(age<0 || age>150) {
AfxMessageBox(\“年龄”错误,请重新输入“年龄”!\ m_Age=\
UpdateData(false);
GetDlgItem(IDC_AGE)->SetFocus(); return;//////这里出错!!怎么改??
//////////////////////////////定义主键是 数字不能相同,所以要排除 }
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息, //因为它有时会经常出现一些想不到的错误。 try {
// 写入各字段值
m_pRecordset->AddNew();
m_pRecordset->PutCollect(\ m_pRecordset->PutCollect(\ m_pRecordset->Update();
AfxMessageBox(\插入成功!\
// 更新显示其库内容
int nCurSel = m_AccessList.GetCurSel(); ListData();///显示出来
m_AccessList.SetCurSel(nCurSel); // 移动记录指针到新的位置 OnSelchangeListaccess(); }
catch(_com_error *e) {
AfxMessageBox(e->ErrorMessage()); } }
9)---------------------------------修改并更新当前记录值------------------------------- ---------------------------------------------------------------------- ////////////////////////////////////////////////////////////////////////////// //名称:OnModify
//功能:修改并更新当前记录值
/////////////////////////////////////////////////////////////////////////////
//////1 调用PutCollext(字段名,值)给当前记录行的每个字段赋新值 //////2 调用UPdate()更新数据库中的数据 //////////////////////////////////////////////
void CAdoRWAccessDlg::OnModify() {
UpdateData(); // 更新对话框数据
if(m_AccessList.GetCount() == 0 || m_Name == \ {
AfxMessageBox(\表中记录数为空或姓名和年龄信息没有设置!\ return; }
else if(m_AccessList.GetCurSel() < 0 || m_AccessList.GetCurSel() >
m_AccessList.GetCount())
m_AccessList.SetCurSel(0);
//判断年龄是否正确 long age;
age=atol(m_Age); if(age<0 || age>150) {
AfxMessageBox(\“年龄”错误,请重新输入“年龄”!\ m_Age=\
UpdateData(false);
GetDlgItem(IDC_AGE)->SetFocus(); return; }
// 修改当前记录的字段值 try {
m_pRecordset->PutCollect(\ m_pRecordset->PutCollect(\ m_pRecordset->Update();
// 重新读入库记录更新显示
int nCurSel = m_AccessList.GetCurSel(); ListData();
m_AccessList.SetCurSel(nCurSel); // 移动记录指针到新的位置 OnSelchangeListaccess(); }
catch(_com_error *e) {
AfxMessageBox(e->ErrorMessage()); } }
10)/////////////////////////////删除并更新当前记录/////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// //名称:OnDelete
//功能:删除并更新当前记录
///////////////////////////////////////////////////////////////////////////// void CAdoRWAccessDlg::OnDelete() {
if(m_AccessList.GetCount() == 0) return;
else if(m_AccessList.GetCurSel() < 0 || m_AccessList.GetCurSel() >
m_AccessList.GetCount())
m_AccessList.SetCurSel(0);
try {
// 删除当前行记录
m_pRecordset->Delete(adAffectCurrent); m_pRecordset->Update();
// 删除列表中当前值
int nCurSel = m_AccessList.GetCurSel(); m_AccessList.DeleteString(nCurSel);
if(nCurSel == 0 && (m_AccessList.GetCount() != 0)) m_AccessList.SetCurSel(nCurSel); else if(m_AccessList.GetCount() != 0) m_AccessList.SetCurSel(nCurSel-1);
// 移动记录指针到新的位置 OnSelchangeListaccess(); }
catch(_com_error *e) {
AfxMessageBox(e->ErrorMessage()); } }