查询后回传的数据怎么接收?(100分)

S

shuszj

Unregistered / Unconfirmed
GUEST, unregistred user!
我的应用服务端是这样写的。只取了某个函数
type
TMyMerSort = class(TRemoteDataModule, IMyMerSort)
function TMyMerSort.GetMerSort(const sSQL: WideString): OleVariant;
begin
with ADOQuery1do
begin
SQL.Clear;
SQL.Text :=sSQL;
Open;
Result :=Recordset;
end;
end;
在客户端是这样接收
procedure TForm1.AreaCodeInit;
var
lBookMark : TBookMark;
lTreeNode : TTreeNode;
MyTest: Olevariant;
begin
inherited;
MyTest := DataM.DCOMConnection1.AppServer.GetMerSort('SELECT * FROM SM_MerSort');
DataM.ClientDataSet2.Data :=MyTest.data;
TreeView.Items.Clear;
.....
end;
执行到 DataM.ClientDataSet2.Data :=MyTest.data;
这里就会出错
出现 Method 'data' not supported by automation object 的错误? 这怎么觖决?
各位帮帮我
 
应该是没有 data 这个属性。
 
应用层端:
function TFLAGMTLMETHOD.DSPPrintrespriteDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
QueryPrintresprite.SQL.Text:=Input;
end;

客户端:
MyTempStr:='Select * from CQSIYO.YBYSD where '+
' rtrim(ltrim(JCDWBM))=rtrim(ltrim('#39+FormMainClient.MyDepartID+#39'))'+
' and SSSL>YFSL ORDER BY WZXXBM';
DataModule5.CDSSelectYBYSD.Close;
DataModule5.CDSSelectYBYSD.DataRequest(MyTempStr);
DataModule5.CDSSelectYBYSD.Open;
或者:
procedure TForm1.AreaCodeInit;
var
lBookMark : TBookMark;
lTreeNode : TTreeNode;
MyTest: Olevariant;
begin
inherited;
MyTest := DataM.DCOMConnection1.AppServer.GetMerSort('SELECT * FROM SM_MerSort');
DataM.ClientDataSet2.close;
DataM.ClientDataSet2.Data :=MyTest.data;
DataM.ClientDataSet2.open;
TreeView.Items.Clear;
您最好将服务器端取数的方法写到DataSetProvider1的数据请求里面。ondatarequest事件里
面。

 
把MyTest.data;
强制转化为 DataM.ClientDataSet2.Data支持的类型。
 
这个我写过了, 可能是是我写错了,是如果强制转化,你能举个语句吗?
 
还没碰到这样的问题,我做的时候就是这样的,没错呀
 
这样就行了:
DataM.ClientDataSet2.Data :=MyTest;
 
在服务器端用一个DATASETPROVIDER回传DATA
 
为什么你们都会正常运行, 我都换了电脑了,就是不行
 
多个接受分了
 
顶部