QQ登录

只需一步,快速开始

277上位机VC MFC使用DAO修改记录

[ 复制链接 ]

277上位机VC MFC使用DAO修改记录

277上位机VC MFC使用DAO修改记录
277上位机VC MFC使用DAO修改记录


功能展示
在用DAO进行编写数据库程序时,对相关或值的修改也是很常用的功能,我们当前例程就实事了对数据记录值的修改保存功能,效果如图,1.点击浏览记录按钮打开指定表并显示在列表视图中。2.点击视图中学号后会将对应的数据显示到编辑框中,修改编辑框内容,再点击保存修改可修改并保存已修改的记录到数据表中;
要点提示
使用DAO技术修改数据库记录可以使用CDaoRecordset类的成员函数Edit (),在调用EDIT函数后,对当前记录有改变都会被拷贝到一个缓冲区,修改完后调用CDaoRecordset 类的Update()函数进行保存,如果调用EDIT后对记录集做了修改,没有调用update进行保存,又再 一次调用了edit记录的值将恢复到首次调用EDIT前的状态,另外调用了EDIT在没有调用update进行保存之前关闭记录集或数据库对记录集做的修改也将丢失
实现功能
1.新建基于单文档应用程序,在创建过程中选择基于DAO,数据库文件选择例程根目录数据库文件,表选择course,具体的创建操作过程可以参考视频演示;
2.根据例程界面添加一列表控件ID为IDC_LIST,五个编辑框,ID分别为IDC_ID ,IDC_NAME , IDC_AGE , IDC_COURSE,IDC_COMMENT
3.添加按钮控件<浏览记录>及><保存修改>,关联按钮的点击函数
  1. void CGkbc8View::OnBrowse()
  2. {
  3.         CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
  4.         pListCtrl->DeleteAllItems();

  5.         if(!m_pSet->IsOpen())
  6.                 m_pSet->Open();
  7.         m_pSet->MoveFirst();

  8.     CString sText;
  9.         int nItem;
  10.         while(!m_pSet->IsEOF())
  11.         {
  12.         sText.Format("%d",m_pSet->m_id);
  13.         nItem=pListCtrl->InsertItem(0,sText);
  14.                 pListCtrl->SetItemText(nItem,1,m_pSet->m_name);

  15.                 sText.Format("%d",m_pSet->m_age);
  16.                 pListCtrl->SetItemText(nItem,2,sText);
  17.                 pListCtrl->SetItemText(nItem,3,m_pSet->m_course);
  18.                 pListCtrl->SetItemText(nItem,4,m_pSet->m_comment);

  19.                 m_pSet->MoveNext();
  20.         }
  21.         m_pSet->MoveFirst();        
  22. }
复制代码
  1. void CGkbc8View::OnEdit()
  2. {
  3.         if(!m_pSet->IsOpen())
  4.                 m_pSet->Open();
  5.         m_pSet->MoveFirst();
  6.         
  7.         CString sText;
  8.         GetDlgItemText(IDC_ID,sText);
  9.         long nID = atol(sText.GetBuffer(0));
  10.         while(!m_pSet->IsEOF())
  11.         {
  12.         if(m_pSet->m_id==nID)
  13.                 {
  14.                         m_pSet->Edit();//开始数据修改
  15.                         
  16.                         GetDlgItemText(IDC_NAME,sText);
  17.                         m_pSet->SetFieldValue("name",sText.GetBuffer(0));
  18.                         
  19.                         GetDlgItemText(IDC_AGE,sText);
  20.                         m_pSet->SetFieldValue("age",atol(sText.GetBuffer(0)));
  21.                         
  22.                         GetDlgItemText(IDC_COURSE,sText);
  23.                         m_pSet->SetFieldValue("course",sText.GetBuffer(0));
  24.                         
  25.                         GetDlgItemText(IDC_COMMENT,sText);
  26.                         m_pSet->SetFieldValue("comment",sText.GetBuffer(0));
  27.                         
  28.                         m_pSet->Update();//保存数据修改
  29.                         m_pSet->Requery();//数据刷新
  30.                         
  31.                         break;
  32.                 }
  33.                 m_pSet->MoveNext();
  34.         }  
  35.         OnBrowse();//刷新列表内容        
  36. }
复制代码
4.初始化列表控件及添加列表控件的NM_CLICK消息响应函数
  1. //<>初始化列表控件
  2.         CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
  3.         pListCtrl->DeleteAllItems();
  4.         pListCtrl->ModifyStyle(0,LVS_REPORT,0);
  5.         pListCtrl->InsertColumn(0,"学号",LVCFMT_CENTER,50);
  6.    
复制代码
  1. pListCtrl->InsertColumn(1,"姓名",LVCFMT_CENTER,50);
  2.     pListCtrl->InsertColumn(2,"年龄",LVCFMT_CENTER,40);
  3.     pListCtrl->InsertColumn(3,"课程",LVCFMT_CENTER,70);
  4.     pListCtrl->InsertColumn(4,"评价",LVCFMT_CENTER,50);

  5. void CGkbc8View::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
  6. {
  7.         CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
  8.         POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
  9.         int nItem = pListCtrl->GetNextSelectedItem(pos);

  10.         SetDlgItemText(IDC_ID, pListCtrl->GetItemText(nItem,0));
  11.         SetDlgItemText(IDC_NAME, pListCtrl->GetItemText(nItem,1));
  12.         SetDlgItemText(IDC_AGE, pListCtrl->GetItemText(nItem,2));
  13.         SetDlgItemText(IDC_COURSE, pListCtrl->GetItemText(nItem,3));
  14.         SetDlgItemText(IDC_COMMENT, pListCtrl->GetItemText(nItem,4));
  15.         
  16.         *pResult = 0;
  17. }
复制代码
我们来演示下整个功能实现 过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:277.上位机VC MFC使用DAO修改记录.zip 
文件大小:42.63 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索