工控编程吧
标题:
277上位机VC MFC使用DAO修改记录
[打印本页]
作者:
qq263946146
时间:
2016-5-7 23:09
标题:
277上位机VC MFC使用DAO修改记录
(, 下载次数: 0)
上传
点击文件名下载附件
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.添加按钮控件<浏览记录>及><保存修改>,关联按钮的点击函数
void CGkbc8View::OnBrowse()
{
CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
pListCtrl->DeleteAllItems();
if(!m_pSet->IsOpen())
m_pSet->Open();
m_pSet->MoveFirst();
CString sText;
int nItem;
while(!m_pSet->IsEOF())
{
sText.Format("%d",m_pSet->m_id);
nItem=pListCtrl->InsertItem(0,sText);
pListCtrl->SetItemText(nItem,1,m_pSet->m_name);
sText.Format("%d",m_pSet->m_age);
pListCtrl->SetItemText(nItem,2,sText);
pListCtrl->SetItemText(nItem,3,m_pSet->m_course);
pListCtrl->SetItemText(nItem,4,m_pSet->m_comment);
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
}
复制代码
void CGkbc8View::OnEdit()
{
if(!m_pSet->IsOpen())
m_pSet->Open();
m_pSet->MoveFirst();
CString sText;
GetDlgItemText(IDC_ID,sText);
long nID = atol(sText.GetBuffer(0));
while(!m_pSet->IsEOF())
{
if(m_pSet->m_id==nID)
{
m_pSet->Edit();//开始数据修改
GetDlgItemText(IDC_NAME,sText);
m_pSet->SetFieldValue("name",sText.GetBuffer(0));
GetDlgItemText(IDC_AGE,sText);
m_pSet->SetFieldValue("age",atol(sText.GetBuffer(0)));
GetDlgItemText(IDC_COURSE,sText);
m_pSet->SetFieldValue("course",sText.GetBuffer(0));
GetDlgItemText(IDC_COMMENT,sText);
m_pSet->SetFieldValue("comment",sText.GetBuffer(0));
m_pSet->Update();//保存数据修改
m_pSet->Requery();//数据刷新
break;
}
m_pSet->MoveNext();
}
OnBrowse();//刷新列表内容
}
复制代码
4.初始化列表控件及添加列表控件的NM_CLICK消息响应函数
//<>初始化列表控件
CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
pListCtrl->DeleteAllItems();
pListCtrl->ModifyStyle(0,LVS_REPORT,0);
pListCtrl->InsertColumn(0,"学号",LVCFMT_CENTER,50);
复制代码
pListCtrl->InsertColumn(1,"姓名",LVCFMT_CENTER,50);
pListCtrl->InsertColumn(2,"年龄",LVCFMT_CENTER,40);
pListCtrl->InsertColumn(3,"课程",LVCFMT_CENTER,70);
pListCtrl->InsertColumn(4,"评价",LVCFMT_CENTER,50);
void CGkbc8View::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
int nItem = pListCtrl->GetNextSelectedItem(pos);
SetDlgItemText(IDC_ID, pListCtrl->GetItemText(nItem,0));
SetDlgItemText(IDC_NAME, pListCtrl->GetItemText(nItem,1));
SetDlgItemText(IDC_AGE, pListCtrl->GetItemText(nItem,2));
SetDlgItemText(IDC_COURSE, pListCtrl->GetItemText(nItem,3));
SetDlgItemText(IDC_COMMENT, pListCtrl->GetItemText(nItem,4));
*pResult = 0;
}
复制代码
我们来演示下整个功能实现 过程
[iqiyi]http://player.video.qiyi.com/babce99a3694c0b90304583b85b5b061/0/0/w_19rstsslht.swf-albumId=6398110909-tvId=6398110909-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4