目的:实现ADO类跟DataGrid控件的组合应用,如增删改查
目的:实现ADO类和DataGrid控件的组合应用,如增删改查。
目的:实现ADO类和DataGrid控件的组合应用,如增删改查。
最近学习 在MFC架构下使用ADO和DataGrid 访问 MDB数据库。
有感于各位大神的缥缈,所以做了比较详细的记录,希望可以初学者一个支撑。
目前只是实现县增删改查中的查,盼指导如何实现 其他三个操作(可付费)。
谢谢
链接:http://pan.baidu.com/s/1qWIzMcG 提取密码:yg70
关键词: MFC VS2010 DataGrid ADO 数据库 详细 教程
运行效果:

------解决方案--------------------
try
{
//A :确定行 也是游标 这里使用默认游标
//m_pRecordset->MoveFirst();
//m_pRecordset->MoveLast();
//m_pRecordset->move
//B:使用记录集的 GetCollect("ID")函数获取 对应列中的数据
vID = m_pRecordset->GetCollect("ID");//使用列
vName = m_pRecordset->GetCollect("NameGsz");
vXingBie= m_pRecordset->GetCollect("XinBie");
vZhaoShu= m_pRecordset->GetCollect("ZhaoShu");
}
这段,读数据之前应该先判断当前位置是非BOF或者EOF
m_pRecordset->MoveFirst();//首先将游标移到首位
m_pRecordset->Move(1);//然后再移动到第二行
m_pRecordset->Delete(adAffectCurrent);//调用函数删除当前行
这段代码会删错数据,要删除的记录定位后,不能再Move,直接Delete就是
m_pRecordset->MoveLast();
//C: 调用函数PutCollect 修改数据
m_pRecordset->PutCollect("ID",_variant_t(ID));
m_pRecordset->PutCollect("NameGsz",_variant_t(Name));
m_pRecordset->PutCollect("XinBie",_variant_t(XingBie));
m_pRecordset->PutCollect("ZhaoShu",_variant_t(ZhaoShu));
//D: 更新数据库 也可以理解为写入数据库
m_pRecordset->AddNew();
m_pRecordset->Update();
这段,顺序搞错了,AddNew();应该放在前面,MoveLast();没有必要,>Update();更新到数据库,但是更新后,如果再修改可能会出现行集定位错误
使用Datagrid更新功能是比较不可取的,最好使用Update查询更新
ID你应该是使用自动编号的数据类型,由数据库更新,不需赋值
------解决方案--------------------
再一步就是实现 DataGrid每行的颜色可以控制。(我的目的是实现报警记录可查,不同等级的报警不同的颜色)
你这个目的使用Datagrid是无法实现,如果真要控制则可以考虑使用
MSHFlexGrid,这个控件每个单元格可以控制颜色,但是使用起来会比较繁杂,同时,速度会比较慢
目的:实现ADO类和DataGrid控件的组合应用,如增删改查。
最近学习 在MFC架构下使用ADO和DataGrid 访问 MDB数据库。
有感于各位大神的缥缈,所以做了比较详细的记录,希望可以初学者一个支撑。
目前只是实现县增删改查中的查,盼指导如何实现 其他三个操作(可付费)。
谢谢
链接:http://pan.baidu.com/s/1qWIzMcG 提取密码:yg70
关键词: MFC VS2010 DataGrid ADO 数据库 详细 教程
运行效果:
------解决方案--------------------
try
{
//A :确定行 也是游标 这里使用默认游标
//m_pRecordset->MoveFirst();
//m_pRecordset->MoveLast();
//m_pRecordset->move
//B:使用记录集的 GetCollect("ID")函数获取 对应列中的数据
vID = m_pRecordset->GetCollect("ID");//使用列
vName = m_pRecordset->GetCollect("NameGsz");
vXingBie= m_pRecordset->GetCollect("XinBie");
vZhaoShu= m_pRecordset->GetCollect("ZhaoShu");
}
这段,读数据之前应该先判断当前位置是非BOF或者EOF
m_pRecordset->MoveFirst();//首先将游标移到首位
m_pRecordset->Move(1);//然后再移动到第二行
m_pRecordset->Delete(adAffectCurrent);//调用函数删除当前行
这段代码会删错数据,要删除的记录定位后,不能再Move,直接Delete就是
m_pRecordset->MoveLast();
//C: 调用函数PutCollect 修改数据
m_pRecordset->PutCollect("ID",_variant_t(ID));
m_pRecordset->PutCollect("NameGsz",_variant_t(Name));
m_pRecordset->PutCollect("XinBie",_variant_t(XingBie));
m_pRecordset->PutCollect("ZhaoShu",_variant_t(ZhaoShu));
//D: 更新数据库 也可以理解为写入数据库
m_pRecordset->AddNew();
m_pRecordset->Update();
这段,顺序搞错了,AddNew();应该放在前面,MoveLast();没有必要,>Update();更新到数据库,但是更新后,如果再修改可能会出现行集定位错误
使用Datagrid更新功能是比较不可取的,最好使用Update查询更新
ID你应该是使用自动编号的数据类型,由数据库更新,不需赋值
------解决方案--------------------
再一步就是实现 DataGrid每行的颜色可以控制。(我的目的是实现报警记录可查,不同等级的报警不同的颜色)
你这个目的使用Datagrid是无法实现,如果真要控制则可以考虑使用
MSHFlexGrid,这个控件每个单元格可以控制颜色,但是使用起来会比较繁杂,同时,速度会比较慢