CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

在com+类中怎么样定义一个返回数据集的函数?

楼主freevc(梦想飞)2006-05-02 16:07:25 在 Delphi / 数据库相关 提问

在com+类中怎么样定义一个返回数据集的函数,在客户端又怎么样来调用它? 问题点数:20、回复次数:5Top

1 楼freevc(梦想飞)回复于 2006-05-02 16:43:30 得分 0

客户端怎么样才能不要执行的SQL语句传给com+类里的adoquery,  
  是不是在com+里ado   的用法和在普通程序里是一样的了?Top

2 楼creativepeter(头皮屑)回复于 2006-05-02 16:47:00 得分 0

To   freevc   (梦想飞):  
          “客户端怎么样才能不要执行的SQL语句传给com+类里的adoquery”这句话是什么意思?  
  Top

3 楼freevc(梦想飞)回复于 2006-05-02 16:55:42 得分 0

哈哈,不好意思写错了,  
  是客户端怎样才能把要执行的sql语句传给com+类里的adoquery?Top

4 楼creativepeter(头皮屑)回复于 2006-05-02 18:43:21 得分 20

To   freevc   (梦想飞):  
          1.   “是不是在com+里ado   的用法和在普通程序里是一样的了?”  
  ===================================================================================  
          是的,ADO的用法没有什么改变,因为多层分布式应用系统中的数据(即记录集合)是以OleVariant的形式在机器间进行传递的(抛开底层数据结构不谈)。请看以下数据传递过程,你就明白为什么ADO的用法没有改变了,因为其提供的数据要经过TDataSetProvider封包后再传递给客户端。客户端[TClientDataSet]---TDCOMConnection---服务器[TDataSetProvider]---具体数据存取引擎[TADOQuery]---具体数据库[SQL   Server2000]。  
   
          2.   “客户端怎样才能把要执行的sql语句传给com+类里的adoquery?”  
  ===================================================================================  
          假定你的COM+接口为ITestDCOM,添加一个方法为MethodTransferSQL,然后添加一个参数strSQL   :   WideString,最后把你要传递的SQL语句赋值给该参数,这是第一步。第二步,你在该方法中实现将strSQL参数赋值作为TADOQuery对象的SQL语句,不就可以了吗?还有一种更加快捷的方式就是直接对TDataSetProvider对象的Options属性进行赋值,然后你就可以直接操作TClientDataSet对象的CommandText属性对TADOQuery进行SQL语句的赋值了。  
   
          3.   “在com+类中怎么样定义一个返回数据集的函数,在客户端又怎么样来调用它?”  
  ===================================================================================  
          注意,如果你不是开发Web应用程序,请返回OleVariant类型的数据,然后将其赋值为TClientDataSet.Data,由TClientDataSet直接帮你解析为数据集即可。客户端如何调用?为了让你有一个比较形象和充分的了解,我来写一个简单的示例:  
          COM+端的ITestDCOM有一个方法为MReturnRecords,其形式为:  
          function   MReturnRecords(var   ReturnData   :   OleVariant)   :   Integer;  
          begin  
              1.   调用TADOQuery对象进行数据库操作  
              2.   ReturnData   :=   TDataSetProvider.Data  
              3.   Return   100   //预先设定的返回值  
          end;  
          在客户端你就可以使用一个TClientDataSet对象和一个函数将COM+返回的数据进行显示或其他的操作了。  
          function   GetRecordsFromDCOM   :   Boolean;  
          var  
              aDCOMObj   :   ITestDCOM;  
          begin  
              aDCOMObj   :=   coTestDCOM.CreateRemote('MidServer');  
              aDCOMObj.MReturnRecords(aClientDataSet.Data);  
              Result   :=   True;  
          end;  
          由于时间所限,以上论述和伪码中可能存在错误,但希望给你帮助。  
  Top

5 楼freevc(梦想飞)回复于 2006-05-02 19:17:34 得分 0

谢谢!!Top

相关问题

关键词

得分解答快速导航

  • 帖主:freevc
  • creativepeter

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo