我想要动态的指定要使用要用那个Ado,试了好多方法都不行,大家帮帮忙.
解决方案 »
- IE在进程中杀不掉
- 如何在主线程中判断子线程是否结束
- 请高手指教!
- 多frame的页面中,某个frame能否自动打开某个URL
- vc月来月找到感觉了,刚开始时好晕~~~虽然现在还是晕,但好多了,呵呵~~~
- 新人求助:基于vc编译器的课程设计,要求用c语言写图形界面的二十四点小游戏
- SHBrowseForFolder()函数的使用
- 关于WINDOWS运行机制,哪些书比较好啊!!
- 紧急在线等待:如何在SendMessage(WM_USER_MSG,WPARAM wParam,LPARAM lParam)里传送CString对象或字符窜?
- 花了三周时间,终于让自己的分析系统具备了积木式的构架,累死了,现在可以动态加入主框架、数据IO....,,
- 一个toolbar中如何加多个toolbar?奇怪!
- 如何将CRichEditCtrl控件中的文本内容保存为文本文件?
m_pCon->PutCursorLocation(adUseClient); //
m_pCon->Open()m_datagrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_datagrid.ReBind();
以下是InitDialog中的部分代码////设置ado数据源信息:
m_adodc.SetConnectionString("Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=ts_xt;Data Source=LP");
m_adodc.SetCommandType(1);
m_adodc.SetRecordSource("Select * from Books") ;
m_adodc.Refresh();
}
我是想如何用动态的方法使m_datagrid指向这个Ado?
因为没有SetDataSource()事件,初学者大家能否写详细点,问题没有想的那么复杂.
再问两个问题
1.
m_pRecordset->CursorLocation = adUseClient;
m_DataGridCtrl.SetRefDataSource(NULL);
m_DataGridCtrl.SetRefDataSource((LPUNKNOWN) m_pRecordset);为什么加m_pRecordset->CursorLocation = adUseClient;
这句是什么意思?不加这句,弹出错误“The rowset is not bookmakable!”2.
在绑定数据源后
m_pConnection->Close();关闭连接后,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;
}
? 1. m_pRecordset->CursorLocation = adUseClient
把从数据库取到的记录集放在你本地缓冲区,这是你用datagrid是必须这么设置。
2. 你的datasource都没有了,可能datagrid自动做了清空。