这是老问题了~~可实在没法找到资料~~~死活邦不上~~~
难就没有个野驴了么~~~能野一把~~~
来个野驴~~帮忙解决一下~~
小弟叩谢了~~Code 1:
/*
m_pRecordset是_RecordsetPtr
m_ctlGrid是DBGrid Control
*/
m_ctlGrid.SetDataSource(NULL);
m_ctlGrid.SetDataSource((LPUNKNOWN)m_pRecordset->GetDataSource());
m_ctlGrid.Refresh();结果:不支持此接口Code 2:
/*
m_pRecordset是_RecordsetPtr
m_ctlGrid是DBGrid Control
*/
m_ctlGrid.SetDataSource(NULL);
m_ctlGrid.SetDataSource((LPUNKNOWN)m_pRecordset);
m_ctlGrid.Refresh();结果:不支持此接口(这种是在网站上查的)
难就没有个野驴了么~~~能野一把~~~
来个野驴~~帮忙解决一下~~
小弟叩谢了~~Code 1:
/*
m_pRecordset是_RecordsetPtr
m_ctlGrid是DBGrid Control
*/
m_ctlGrid.SetDataSource(NULL);
m_ctlGrid.SetDataSource((LPUNKNOWN)m_pRecordset->GetDataSource());
m_ctlGrid.Refresh();结果:不支持此接口Code 2:
/*
m_pRecordset是_RecordsetPtr
m_ctlGrid是DBGrid Control
*/
m_ctlGrid.SetDataSource(NULL);
m_ctlGrid.SetDataSource((LPUNKNOWN)m_pRecordset);
m_ctlGrid.Refresh();结果:不支持此接口(这种是在网站上查的)
m_pCon->PutCursorLocation(adUseClient);
m_pCon->Open()
.........
m_ctlGrid.SetDataSource(NULL);
m_ctlGrid.SetDataSource((LPUNKNOWN)m_pRecordset);
m_ctlGrid.ReBind(); //不是必须
m_ctlGrid.Refresh();
m_ctlGrid.SetDataSource(NULL);
m_ctlGrid.SetDataSource((LPUNKNOWN)m_pRecordset);/*已经置出错误了*/
m_ctlGrid.ReBind(); //不是必须
m_ctlGrid.Refresh();
已经换了N个Grid控件~~难道_RecordsetPtr不支持数据源!?
忘了说了~~
GetDataSource()返回的是IUnknownPtr智能指针~
莫非都不玩ADO接口么~~~非B我用VB~~~55555555555555555555555555
有点垃圾了~~~
{
_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;
}
//函数名称:ReadData
//函数功能:读取数据
//函数参数:无
//函数返回:无
/////////////////////////////////////////////////////////////////////////////
void CDemoProjectView::ReadData(void)
{
if(m_cAdo.GetRecoPtr() == NULL) return; CListCtrl& ctl = GetListCtrl();
ctl.DeleteAllItems(); long nOrder = 0;
int nCount = m_cAdo.GetFieldCount();
int nWidth[10] = {0}; try
{
m_cAdo.MoveFirst();
while(!m_cAdo.adoEOF())
{
LV_ITEM item;
//if(nOrder > 50) return;
for(int i = 0; i < nCount; i++)
{
_variant_t var;
CString strData("");
CString strName(""); strName = m_cAdo.GetFieldName(i);
m_cAdo.GetCollect((LPCTSTR)strName, var);
if(var.vt != VT_NULL) strData = (CString)var; item.mask = LVIF_TEXT;
item.iItem = nOrder;
item.iSubItem = i;
item.pszText = (LPSTR)(LPCTSTR)strData;
if(i == 0)
ctl.InsertItem(&item);
else
ctl.SetItem(&item); ctl.GetStringWidth((LPCTSTR)item.pszText);
ctl.SetColumnWidth(i, 80);
}
nOrder++;
m_cAdo.MoveNext();
}
ctl.Update(ctl.GetItemCount());
ctl.UpdateWindow();
}
catch(...)
{
::AfxMessageBox("读取数据时出错!");
}
}
偶用的VS2005.NET、WindowsXP,控件是DBGrid。
恩~~奇怪,为啥能抱错呢~~~~
不可能~~~~
你用GridView来充当DataGrid就行了