我原本想利用记录集为Datagrid控件提供数据源,编译通过后,可执行时出现错误对话框,消息是:The rowset is not bookable.请问是什么原因。是不是Datagrid控件中的哪个属性没设置??
程序框架如下:_RecordsetPtr m_pRecordSet;
m_Datagrid.SetRefDataSource(m_pRecordSet.GetRecordSet(vSQL));
程序框架如下:_RecordsetPtr m_pRecordSet;
m_Datagrid.SetRefDataSource(m_pRecordSet.GetRecordSet(vSQL));
解决方案 »
- c:\documents and settings\administrator\桌面\源代码修改1\globalapi.h(42) : fatal error
- 请问什么命令可以列出所有窗口?
- 我想做一个随时都在监测系统磁盘空间的程序该咋办?
- 要将一个图形自动旋转和移动到另一个图形中,用什么方法比较好?谢谢!
- 如何使Windows程序UI中控件具有XP Style?
- List Control的列头的单击功能屏蔽
- CString 的GetAt()的越界问题。。。
- 如何可以取得一条任意方向的直线所经过的像素?
- 关于单色位图的问题,求求大家,帮个忙吧!我都弄了一个星期了!
- 如何利用VC建立静态库.lib
- inf文件问题
- 给Datagrid提供数据源的问题
{
_CommandPtr cmd;
_RecordsetPtr rs;
_ConnectionPtr conn;
_variant_t vra;
VARIANT *vt1 = NULL;
try
{
/* cmd.CreateInstance( __uuidof(Command));
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));*/ UpdateData(TRUE);
theApp.m_pConnection->PutCursorLocation(adUseClient);
/* conn->CursorLocation = adUseClient;
conn->Open(_bstr_t( theApp.m_pConnection.GetInterfacePtr() ), L"", L"", -1);
cmd->ActiveConnection = conn;
cmd->CommandText = (_bstr_t) m_strQuery;
cmd->CommandType = adCmdText;
rs = cmd->Execute(&vra,vt1, adCmdText);*/
/*rs->PutRefActiveConnection(theApp.m_pConnection);
rs->Open((_bstr_t)m_strQuery,
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);*/
/// ((CTestDllApp*)(&theApp))->m_pConnection
/// m_pRecordset.CreateInstance(__uuidof(Recordset));
/* m_pRecordset->Open((_bstr_t)m_strQuery,
_variant_t((IDispatch*)theApp.m_pConnection, TRUE),
adOpenStatic,
adLockOptimistic,
adCmdText);*/
if(m_pRecordset->State==1)
{
m_pRecordset->Close();
}
m_pRecordset->Open((_bstr_t)m_strQuery,
theApp.m_pConnection.GetInterfacePtr(),//»ñÈ¡¿â½Ó¿âµÄIDispatchÖ¸Õë
adOpenStatic,
adLockOptimistic,
adCmdText);
/* m_DataGrid.SetRefDataSource(NULL);
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DataGrid.Refresh();*/
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),"Ìáʾ",MB_OK);
}
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DataGrid.Refresh();
UpdateData(FALSE);
//m_pRecordset->Close();
return true;
}