COM高手帮忙 ( 积分: 100 )

  • 主题发起人 主题发起人 xt2002xt
  • 开始时间 开始时间
X

xt2002xt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在COM里生成了一个TADOQuery控件
现在我调用的程序里有个TDataSource1控件,
现在我希望能将TADOQuery控件赋值给DataSource1.DataSet里,该怎么做?
 
我在COM里生成了一个TADOQuery控件
现在我调用的程序里有个TDataSource1控件,
现在我希望能将TADOQuery控件赋值给DataSource1.DataSet里,该怎么做?
 
DataSource1.dataSet := ADOQuery1;
 
不是吧!ADOQUERY1可是在COM里啊!这样怎么可以呢?不过还是谢谢你的帮助[:)]
 
用 TDataSetProvider
 
//取结果集
function TMTSServer.MTS_GetDataSet(const AiHosCode: WideString;
AiTermInfo, AiBuffer01, AiBuffer02: OleVariant;
out AoBuffer01,
AoBuffer02, AoMsg: OleVariant): OleVariant;
begin
Result := -1;
Try
With MTS_SelectQuerydo
begin
Close;
SQL.Clear;
SQL.Text := AiBuffer01[0];
Open;
AoBuffer01 := MTS_SelectDataSetProvider.Data;
If IsEmpty then
AoMsg := '下载成功:记录集为空'
else
AoMsg := AiBuffer01[0];
end;
UserLog(AiHosCode, rdTermInfo, AoMsg);
Result := 0;
Except
On E:Exceptiondo
begin
AoMsg := AiBuffer01[0] + ':' + E.Message;
UserLog(AiHosCode, rdTermInfo, AoMsg);
end;
end;
end;
 
com控件中TADOQuery是没有办法传出来的。
通常值需要把其中的数据传出来就行了,可以打包成xml文档或者用variant传递
 
这样的?那我不是不能用DataSource1以及任何数据敏感控件了?比如DBGRID等等
 
在客户端用 TClientDataSet
ClientDataSet1.Data := AoBuffer01;
DataSource1.DataSet := ClientDataSet1;
 
谢谢xianguo,因我学识有限,没用过你提的控件,但我觉得你的答案有可能是关于DCOM里的数据传送问题的,而我的问题是在COM里封装的ADOQuery怎么可以传递出来,嘿嘿,帮帮我哦!
 
呵呵,迷糊已经告诉你了
只能将数据存储在OleVariant或Variant 中
 
这样就比较麻烦咯!!!我再研究研究先,谢谢两位先!!
 
不明白你到底想干什么`
 
你可以看看delphi的例子
C:/Program Files/Borland/Delphi7/Demos/Midas/Pooler
 
已用variant解决,不过做起来比较麻烦那,不过还是谢谢大家!!!
 
后退
顶部