三层系统中如何返回一个数据集(50分)

  • 主题发起人 主题发起人 bobolyg
  • 开始时间 开始时间
B

bobolyg

Unregistered / Unconfirmed
GUEST, unregistred user!
在应用服务器端定义一个函数我希望该函数处理后能传递一个数据集(TADODataSet或TADOTable)给客户端。怎么实现?函数该怎么写?
 
分不多了望大家见谅。
 
怎么没人回复?
我只需要能给点大致的思路就可以了。
 
result := dsp.data ;
 
to hcm0790
但是应用服务器函数没有这个返回值类型
 
返回ClientDataSet.Xmldata吧
 
如果是用DELPHI做的COM,那就可以这样定义,搞定
function Ttest.FindTotalLog(const sDate1, sDate2, Flag, dbName,
FreeFlag: WideString): OleVariant;
var
sql:String;
begin

connectDb;
ADOSP1.ProcedureName :='get_data'
adosp1.close;
ADOSP1.Parameters.CreateParameter('@datename',ftDateTime,pdInput,20,sDate1);
ADOSP1.Parameters.CreateParameter('@datename1',ftDateTime,pdInput,20,sDate2);
ADOSP1.Parameters.CreateParameter('@flag',ftString,pdInput,2,Flag);
ADOSP1.Prepared :=true;
try
ADOSP1.open;
except
on E:Exceptiondo
begin

set_sPro1('1');
exit;
end;
end;
result := ADOSP1.recordset ;
end;
 
就是OleVariant
dsp 指的是DataSetProvider
 
to 一剑封喉
我打开 Type library 却不能为函数定义除HRESULT以外的其他任何返回值类型,
为什么?
 
to 一剑封喉
ADOSP1是什么东东?
 
返回函数是在下面的参数设定里添加的,比如,NAME:AAA,TYPE:VARIANT *
Modifier:[out, retval],这样,你就可以返回数据集了
adosp1是我的一个存储过程,它返回了一个数据集
这是我问的帖子,你看看吧
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1714834
 
to 一剑封喉
我调用了该函数后返回值是olevariant类型,
用 ADOTable1.recordset:=FindToTalLog(.....);不行要怎么转换类型?
 
to 一剑封喉
我用如下语句:
ADOTAble1.record:=IUNKnown(FindToTalLog(...)) as _recordSet;
应该可以但却报错:interface not supported.
为什么?
 
把这个问题到一下就是你的问题了
http://delphibbs.com/delphibbs/dispq.asp?lid=1436411
 
服务器的返回DataSetProvider的Data(OLEVARIANT) ;
客户端定义一个ClientDataSet,将服务器的返回的Data赋与其的Data,这个ClientDataSet就是你要查询。给分吧
 
to Sea008
按你的方法出错提示:Invalid Data packed
 
好了不管怎么样散分吧
 
多人接受答案了。
 
后退
顶部