求教怎么更新DataGrid
m_pRecordset->Open("SELECT * FROM info", m_pConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdUnknown);
m_ctrlDG.SetRefDataSource((LPUNKNOWN)m_pRecordset);//m_ctrlDG是CDataGrid控件变量
m_ctrlDG.Refresh();
为什么不能更新呢
m_pRecordset->Open("SELECT * FROM info", m_pConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdUnknown);
m_ctrlDG.SetRefDataSource((LPUNKNOWN)m_pRecordset);//m_ctrlDG是CDataGrid控件变量
m_ctrlDG.Refresh();
为什么不能更新呢
解决方案 »
- mfc菜鸟求救
- 线程在执行了很长时间无法返回时如何释放?
- 遍历一幅位图,将某一颜色替换为另一颜色,但是速度很慢,怎么提速?
- 已知线程句柄如何获得线程号?
- 大家来帮忙
- ATL 类中怎么不能操作 CString str
- 急问:如何在使用GDI采集屏幕时,得到鼠标的图像
- 请问怎么编写一个关闭所有端口的程序(除指定的几个端口外)??
- 关于SQL SERVER提供的Virtual Device for BACKUP/RESTORE的移植问题!高手请进!
- error LNK2001: 无法解析的外部符号 "public: __thiscall CClientSocket::CClientSocket(void)" (??0CClientSocket@@QAE@XZ)
- ATL写的Outlook Addin调用MFC对话框dialog的问题
- 怎么控制属性页中各控件的大小和字体的大小?
m_dataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_dataGrid.Refresh();
这句是重点,如果加上这句还不行,你看看m_pRecordset这个记录集是否取得到数据了,如果记录集有数据,就再在m_dataGrid.Refresh();这句下面加上这句:
UpdateData(false);
m_pRecordset->LockType=adLockBatchOptimistic;
m_pRecordset->CursorLocation=adUseClient;
m_pRecordset->Open("select * from info",(IDispatch *)m_pConnection, adOpenDynamic, adLockOptimistic, adCmdText);
m_ctrlDG.SetRefDataSource(NULL);
m_ctrlDG.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_ctrlDG.Refresh();
第一次可以更新成功,但第二次就会报错,应该是没有加m_pRecordset->Close()。但是我把这句加上后就又不能更新了,超级郁闷啊
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
//设置为更新模式
m_pRecordset->LockType=adLockBatchOptimistic;
m_pRecordset->CursorLocation=adUseClient;
//更新DataGrid
m_pRecordset->Open("select * from info",(IDispatch *)m_pConnection, adOpenDynamic, adLockOptimistic, adCmdText);
m_ctrlDG.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_ctrlDG.Refresh();
m_dataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_dataGrid.Refresh();