代码如下:m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Temp.mdb",
"", "", adModeUnknown); m_pConnection->PutCursorLocation(adUseClient); m_pRecordset = m_pConnection->Execute("select * from t_TempTable", varRecordCount, adCmdText); m_DGView.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DGView.Refresh();
UpdateData(TRUE);执行的时候datagrid里的数据只是闪了一下就又没有了,为什么呢?
"", "", adModeUnknown); m_pConnection->PutCursorLocation(adUseClient); m_pRecordset = m_pConnection->Execute("select * from t_TempTable", varRecordCount, adCmdText); m_DGView.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DGView.Refresh();
UpdateData(TRUE);执行的时候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;
}
{
// TODO: Add extra validation here _variant_t *varRecordCount = new _variant_t(); UpdateData(TRUE);
m_pConnection.CreateInstance(__uuidof(Connection));
m_pCommand.CreateInstance(__uuidof(Command));
m_pRecordset.CreateInstance(__uuidof(Recordset)); try
{
m_pConnection->PutCursorLocation(adUseClient);
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=temp.mdb",
"", "", adModeUnknown); m_pRecordset->Open("select * from t_TempTable",
m_pConnection.GetInterfacePtr(),
adOpenStatic,
adLockOptimistic,
adCmdText); m_DGView.SetRefDataSource((LPUNKNOWN)m_pRecordset);
UpdateData(false);
} catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
} if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
}我知道问题的所在了,关键是我把connection关闭了,我把最后三行代码去掉就可以了。谢谢!