DataGrid Ado 本人在做毕业设计,是菜鸟级别的,做一个基于winpcap的网络协议分析软件,现在基本完成。思路是用winpcap抓包,把分析结果放到Access数据库中的一张表里,然后用DataGrid显示出来。我用了Datagrid和ADO,当数据库的表更新时怎样让显示也更新呢?请高手指导。QQ309327238 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用代码重新设置datagrid的数据源,然后调用datagrid的refresh函数更新显示 BOOL CDlgRecordset::QueryRecord(){ _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; } To syy64(太平洋) :我按照你给的例子做了,在代码中添加了 m_grid.SetRefDataSource((LPUNKNOWN)m_pRecordset);m_grid.Refresh();UpdateData(FALSE);但是运行时出错了,你能加我QQ吗? vs2005工程,我差点晕死 变量或函数名称的太长影响程序执行的效率吗? 大家有无用过CByteArray类啊 ? GNU,MICROSOFT我跟谁好呢?????苦恼 GDI+ gif 如何缩小文件存储大小 VC串口问题 关于dll一个疑难杂症! 细微之处见功夫! 我的程序!像我这样监视一个串口(COM1)可以吗? 有关RichEditCtrl控件的一个问题,欢迎各位大虾 关于加载组件的一个问题,请大家给看看 VARIANT类型参数怎么使用
{
_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;
}
m_grid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_grid.Refresh();
UpdateData(FALSE);
但是运行时出错了,你能加我QQ吗?