怎样在服务器和客户端之间传递纪录集?
小弟想在数据服务器上垫一层,作个数据服务层.
由于使进程间传递,怎么返回纪录集?
书上说的例子是:
HRESULT GetRecords(BSTR strSQL, IDispatch** pVval)
{
_RecordsetPtr pTemp;
pTemp.CreateInstance(__uuidof(Recordset));
pTemp->Open(strSQL,.....);
*pVal = pTemp->Detach();
}
客户端怎么办?
我简单的写成:
_RecordsetPtr pClient;
IServerPtr pData;
pData.CreateInstance(CLSID_Server);
pData->GetRecords("provider....",reinpret_cast<IDispatch**> (&pClient));
int n = pClient->RecordCount; ////出错!!!!!!!!!
小弟想在数据服务器上垫一层,作个数据服务层.
由于使进程间传递,怎么返回纪录集?
书上说的例子是:
HRESULT GetRecords(BSTR strSQL, IDispatch** pVval)
{
_RecordsetPtr pTemp;
pTemp.CreateInstance(__uuidof(Recordset));
pTemp->Open(strSQL,.....);
*pVal = pTemp->Detach();
}
客户端怎么办?
我简单的写成:
_RecordsetPtr pClient;
IServerPtr pData;
pData.CreateInstance(CLSID_Server);
pData->GetRecords("provider....",reinpret_cast<IDispatch**> (&pClient));
int n = pClient->RecordCount; ////出错!!!!!!!!!
HRESULT GetRecords(BSTR strSQL, VARIANT* pVval)
{
_RecordsetPtr pTemp;
pTemp.CreateInstance(__uuidof(Recordset));
pTemp->Open(strSQL,.....); VARIANT vtRec;
VariantInit(pVval);
vtRec = VT_DISPATCH;
vtRec.pdispVal =(IDispatch )pTemp;
VariantCopy(pVval,&vtRec)
}
应写成:
_RecordsetPtr pTemp;
IDispatch* pDisp;
pTemp.CreateInstance(__uuidof(Recordset));
pTemp->Open(strSQL,.....);
pTemp->QueryInterface(__uuidof(IDispatch),(LPVOID)pDisp);
*pVal = pDisp->Detach();