I
isfine
Unregistered / Unconfirmed
GUEST, unregistred user!
关于传递RecoordSet的问题!
我在MIDAS服务器上是这样做的。
1。通过Type Library 引入ADO库,即ADO原生接口(ADODB_TLB)
定义一个返回函数
function TSQLConnectDM.GetQueryData: _Recordset;
var
ConnStr: WideString;
begin
{ Create an ADO Recordset instance directly }
ConnStr := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=FDB_Educate;Data Source=KUGHJUGJ-6T0R3V;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=GUYGFIUY-1FOUF4';//SQL连接字符
Result := CoRecordSet.Create;//创建ADO原生接口
Result.CursorLocation := adUseClient;
Result.Open('st_dataBase', ConnStr, adOpenStatic,chOptimistic,adCmdTable);//查询并返回_RecordSet
end;
客户端:
procedure TQueryFrm.Button1Click(Sender: TObject);
var
aRec :_RecordSet;//ADODB_TLB._RecordSet原生接口
cDisp :ISQLConnectDMDisp;
begin
cDisp :=ISQLConnectDMDisp(IDispatch(MidasSkt.AppServer));//MidasSkt:TSocketConnection控件;
aRec :=cDisp.GetQueryData;//调用服务器返回_RecordSet;
// aRec :=ADODB_TLB._RecordSet(cDisp.GetQueryData);
showmessage(inttostr(aRec.RecordCount));//不加这行代码,可以调用服务器方法。无错误提示,加了后运行提示“灾难性故障”。
// aRec :=IUnknown(cDisp.GetQueryData) as _Recordset;//错误提示:interface not supported
// aRec :=IDispatch(cDisp.GetQueryData) as _Recordset;
//错误提示:interface not supported
end;
问题:在服务器也用过OleVariant和IDispatch来传递的_RecordSet,可在客户调用提示interface not supported错误
导入ADO库后,直接传递_RecordSet,可客户端调用后得到的aRec即_RecordSet不能使用.
不知到问题到底出在那里。。。苦恼了几天了。。
希望高人给于指点。
我在MIDAS服务器上是这样做的。
1。通过Type Library 引入ADO库,即ADO原生接口(ADODB_TLB)
定义一个返回函数
function TSQLConnectDM.GetQueryData: _Recordset;
var
ConnStr: WideString;
begin
{ Create an ADO Recordset instance directly }
ConnStr := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=FDB_Educate;Data Source=KUGHJUGJ-6T0R3V;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=GUYGFIUY-1FOUF4';//SQL连接字符
Result := CoRecordSet.Create;//创建ADO原生接口
Result.CursorLocation := adUseClient;
Result.Open('st_dataBase', ConnStr, adOpenStatic,chOptimistic,adCmdTable);//查询并返回_RecordSet
end;
客户端:
procedure TQueryFrm.Button1Click(Sender: TObject);
var
aRec :_RecordSet;//ADODB_TLB._RecordSet原生接口
cDisp :ISQLConnectDMDisp;
begin
cDisp :=ISQLConnectDMDisp(IDispatch(MidasSkt.AppServer));//MidasSkt:TSocketConnection控件;
aRec :=cDisp.GetQueryData;//调用服务器返回_RecordSet;
// aRec :=ADODB_TLB._RecordSet(cDisp.GetQueryData);
showmessage(inttostr(aRec.RecordCount));//不加这行代码,可以调用服务器方法。无错误提示,加了后运行提示“灾难性故障”。
// aRec :=IUnknown(cDisp.GetQueryData) as _Recordset;//错误提示:interface not supported
// aRec :=IDispatch(cDisp.GetQueryData) as _Recordset;
//错误提示:interface not supported
end;
问题:在服务器也用过OleVariant和IDispatch来传递的_RecordSet,可在客户调用提示interface not supported错误
导入ADO库后,直接传递_RecordSet,可客户端调用后得到的aRec即_RecordSet不能使用.
不知到问题到底出在那里。。。苦恼了几天了。。
希望高人给于指点。