关于listctrl(ADO+acess)刷新问题 用listctrl做数据的现实ADO操作+acess数据库(Provider=Microsoft.Jet.OLEDB.4.0)增、删、改操作都实现了但不知道为什么每次用的时候第一次操作总是不能直接刷新数据甚至有时候要2~3次后才更新数据到listctrl(我弄了刷新。。在增、删、改操作后调用查询语句更新数据)是access的事务提交么、延迟??有什么办法解决?网上搜了下,有提到ADOQuerry,貌似没看到具体的介绍之类 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 甚至有时候要2~3次后才更新数据到listctrl这个看不懂?远程的啊? 以前使用ACCESS也发现有滞后的问题,每次独立访问后就正常了,不知道能否解决你的问题 这有个例子你可以参考一下http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx void CDLG_EditGroup::OnEdit() //修改按钮{ CString sql; CGroup group; //数据对象 CDB_Group DB_Group; //数据库操作类 UpdateData(TRUE); group.SetID(m_id); group.SetName(m_name); group.SetGroupManager(m_manager); group.SetGroupInfo(m_info); //已更改的数据对象 DB_Group.DB_UpData(group); //数据库更新(ADO) sql="select * from t_group"; ((CDLG_Group *)(this->GetParent()->GetParent()))->ShowList(sql);//更新list m_id=-1; m_info=""; m_manager=""; m_name=""; UpdateData(FALSE);}过程是点击对话框的更新按钮,将更新后的数据同步更新到List显示 listctrl数据是不会自动更新的比如你删除了一条记录再成功实现数据库的操作之后要在listctrl里把这条item也delete掉 void CDLG_Group::ShowList(CString sql){ DB_Group.v_Group.clear(); DB_Group.DB_Sel(sql); // m_OrderList.SetItemState(0,~LVIS_SELECTED,0); m_ListCtl.DeleteAllItems(); for(int i=0;i<DB_Group.v_Group.size();i++) { CString id,time; time=DB_Group.v_Group[i].GetTime(); time.Format("%04d-%02d-%02d %02d:%02d:%02d",(DB_Group.v_Group[i].GetTime()).GetYear(), (DB_Group.v_Group[i].GetTime()).GetMonth(),(DB_Group.v_Group[i].GetTime()).GetDay(), (DB_Group.v_Group[i].GetTime()).GetHour(),(DB_Group.v_Group[i].GetTime()).GetMinute(), (DB_Group.v_Group[i].GetTime()).GetSecond()); id.Format("%d",DB_Group.v_Group[i].GetID()); m_ListCtl.InsertItem(i,id); m_ListCtl.SetItemText(i,1,DB_Group.v_Group[i].GetName()); m_ListCtl.SetItemText(i,2,time); m_ListCtl.SetItemText(i,3,DB_Group.v_Group[i].GetGroupManager()); m_ListCtl.SetItemText(i,4,DB_Group.v_Group[i].GetGroupInfo()); } m_ListCtl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); UpdateData(FALSE);}有删除item的 微软的RTC技术开发音视频通讯软件问题? 用web browser控件来打开一个https页面时的问题 如何再VC里创建个ACESS数据库表? 求各位帮帮忙 关于用户线程、内核线程、轻量型进程! 求教要实现一个自动查找活动硬盘,并自动拷贝文件到指定目录的程序,望指点!! 我想在html文件中实现垂直表示的字,应该怎么实现!谢谢! vc6中如何设定edittext中的默认字体?多谢? 请问有办法隐藏MSFlexGrid控件中的一列或几列数据吗? 问个简单的问题(有关拷贝的) 怎样显示文本框中数据?初学者请教 加入兔子群,散分 MFC中异常终止
http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
{
CString sql;
CGroup group; //数据对象
CDB_Group DB_Group; //数据库操作类
UpdateData(TRUE);
group.SetID(m_id);
group.SetName(m_name);
group.SetGroupManager(m_manager);
group.SetGroupInfo(m_info); //已更改的数据对象
DB_Group.DB_UpData(group); //数据库更新(ADO)
sql="select * from t_group";
((CDLG_Group *)(this->GetParent()->GetParent()))->ShowList(sql);//更新list
m_id=-1;
m_info="";
m_manager="";
m_name="";
UpdateData(FALSE);
}过程是点击对话框的更新按钮,将更新后的数据同步更新到List显示
比如你删除了一条记录
再成功实现数据库的操作之后要在listctrl里把这条item也delete掉
{ DB_Group.v_Group.clear();
DB_Group.DB_Sel(sql);
// m_OrderList.SetItemState(0,~LVIS_SELECTED,0);
m_ListCtl.DeleteAllItems();
for(int i=0;i<DB_Group.v_Group.size();i++)
{ CString id,time;
time=DB_Group.v_Group[i].GetTime();
time.Format("%04d-%02d-%02d %02d:%02d:%02d",(DB_Group.v_Group[i].GetTime()).GetYear(),
(DB_Group.v_Group[i].GetTime()).GetMonth(),(DB_Group.v_Group[i].GetTime()).GetDay(),
(DB_Group.v_Group[i].GetTime()).GetHour(),(DB_Group.v_Group[i].GetTime()).GetMinute(),
(DB_Group.v_Group[i].GetTime()).GetSecond());
id.Format("%d",DB_Group.v_Group[i].GetID());
m_ListCtl.InsertItem(i,id);
m_ListCtl.SetItemText(i,1,DB_Group.v_Group[i].GetName());
m_ListCtl.SetItemText(i,2,time);
m_ListCtl.SetItemText(i,3,DB_Group.v_Group[i].GetGroupManager());
m_ListCtl.SetItemText(i,4,DB_Group.v_Group[i].GetGroupInfo()); }
m_ListCtl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
UpdateData(FALSE);}有删除item的