8 个解决方案
#1
关键是这个函数SetDataSource()?不会用,参数要求是LPUNKNOWN型,不知道应该怎样将记录集对象转化为LPUNKNOWN型的,帮帮我,各位大侠!
m_MyDBGrid.SetDataSource((LPUNKNOWN)...);m_MyDBGrid--控件变量
m_MyDBGrid.SetDataSource((LPUNKNOWN)...);m_MyDBGrid--控件变量
#2
拜托各位前辈帮帮我啊!
#3
自己再顶一顶!
#4
http://www.vckbase.com/document/viewdoc/?id=261
#5
DBGRID控件变量的成员函数SetDataSource(lpunknonw);
而_RecordsetPtr 的成员函数 GetDataSource()的返回值为Iunknonw类型.
所以GET得到的数据类型与SET函数需要的不一致,请问大侠如何解决呀.
而_RecordsetPtr 的成员函数 GetDataSource()的返回值为Iunknonw类型.
所以GET得到的数据类型与SET函数需要的不一致,请问大侠如何解决呀.
#6
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;
}
{
_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;
}
#7
syy怎么总是粘贴同样的代码...
#8
//***************************************************************************
CString sSql;
sSql.Format("select * from COMPANY");
_variant_t RecordsAffected;
rst=cnn->Execute((_bstr_t)sSql,&RecordsAffected,adCmdText);
_variant_t vCount = rst->GetCollect((_variant_t) (long) 0);
int i=vCount.lVal;
CString lpszString;
if(i>0)
{
m_COMPANY.ResetContent();
rst->MoveFirst();
while (!rst->ADOEOF)
{
lpszString=_com_util::ConvertBSTRToString((_bstr_t)rst->GetCollect("COMPANY"));
m_COMPANY.AddString((LPSTR)(LPCTSTR)lpszString);
rst->MoveNext();
}
m_COMPANY.SetCurSel(0);
}
rst->Close();
//***************************************************************************
CString sSql;
sSql.Format("select * from COMPANY");
_variant_t RecordsAffected;
rst=cnn->Execute((_bstr_t)sSql,&RecordsAffected,adCmdText);
_variant_t vCount = rst->GetCollect((_variant_t) (long) 0);
int i=vCount.lVal;
CString lpszString;
if(i>0)
{
m_COMPANY.ResetContent();
rst->MoveFirst();
while (!rst->ADOEOF)
{
lpszString=_com_util::ConvertBSTRToString((_bstr_t)rst->GetCollect("COMPANY"));
m_COMPANY.AddString((LPSTR)(LPCTSTR)lpszString);
rst->MoveNext();
}
m_COMPANY.SetCurSel(0);
}
rst->Close();
//***************************************************************************
#1
关键是这个函数SetDataSource()?不会用,参数要求是LPUNKNOWN型,不知道应该怎样将记录集对象转化为LPUNKNOWN型的,帮帮我,各位大侠!
m_MyDBGrid.SetDataSource((LPUNKNOWN)...);m_MyDBGrid--控件变量
m_MyDBGrid.SetDataSource((LPUNKNOWN)...);m_MyDBGrid--控件变量
#2
拜托各位前辈帮帮我啊!
#3
自己再顶一顶!
#4
http://www.vckbase.com/document/viewdoc/?id=261
#5
DBGRID控件变量的成员函数SetDataSource(lpunknonw);
而_RecordsetPtr 的成员函数 GetDataSource()的返回值为Iunknonw类型.
所以GET得到的数据类型与SET函数需要的不一致,请问大侠如何解决呀.
而_RecordsetPtr 的成员函数 GetDataSource()的返回值为Iunknonw类型.
所以GET得到的数据类型与SET函数需要的不一致,请问大侠如何解决呀.
#6
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;
}
{
_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;
}
#7
syy怎么总是粘贴同样的代码...
#8
//***************************************************************************
CString sSql;
sSql.Format("select * from COMPANY");
_variant_t RecordsAffected;
rst=cnn->Execute((_bstr_t)sSql,&RecordsAffected,adCmdText);
_variant_t vCount = rst->GetCollect((_variant_t) (long) 0);
int i=vCount.lVal;
CString lpszString;
if(i>0)
{
m_COMPANY.ResetContent();
rst->MoveFirst();
while (!rst->ADOEOF)
{
lpszString=_com_util::ConvertBSTRToString((_bstr_t)rst->GetCollect("COMPANY"));
m_COMPANY.AddString((LPSTR)(LPCTSTR)lpszString);
rst->MoveNext();
}
m_COMPANY.SetCurSel(0);
}
rst->Close();
//***************************************************************************
CString sSql;
sSql.Format("select * from COMPANY");
_variant_t RecordsAffected;
rst=cnn->Execute((_bstr_t)sSql,&RecordsAffected,adCmdText);
_variant_t vCount = rst->GetCollect((_variant_t) (long) 0);
int i=vCount.lVal;
CString lpszString;
if(i>0)
{
m_COMPANY.ResetContent();
rst->MoveFirst();
while (!rst->ADOEOF)
{
lpszString=_com_util::ConvertBSTRToString((_bstr_t)rst->GetCollect("COMPANY"));
m_COMPANY.AddString((LPSTR)(LPCTSTR)lpszString);
rst->MoveNext();
}
m_COMPANY.SetCurSel(0);
}
rst->Close();
//***************************************************************************