多层结构中必不可少件TClientDataSet的全面剖析

原创 2004年09月07日 12:43:00
多层结构中必不可少件TClientDataSet的全面剖析

 在三层结构中,TClientDataSet的地位是不可估量的,她的使用正确与否,是十分关键的,本文从以下几个方面阐述她的使用,希望对你有所帮助.
1.动态索引
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if (not column.Field is Tblobfield) then//Tblobfield不能索引,二进制
ClientDataSet1.IndexFieldNames:=column.Field.FieldName;
end;
2.多层结构中主从表的实现
设主表ClientDataSet1.packetrecord为-1,所有记录
设从表ClientDataSet1.packetrecord为0,当前记录
3.Taggregates使用
(1)在字段编辑中add new field类型为aggregates
     后设置expression(表达试)
     设置active:=true即可
     使用dbedit的field为前者即可
(2)使用Aggergates属性add设计表达试
    调用
  showmessage(floattostr(ClientDataSet1.Aggregates.Count));
  showmessage(ClientDataSet1.Aggregates.Items[0].Value);
 
4.在单层数据库中不要BDE
  使用ClientDataSet代替table,使用ClientDataSet的loadfilename装入cds
  代替table的tablename的db或者dbf
  原来的程序改造方法:
  加一个ClientDataSet,使用右键assign locate data
  后savetofile,再loadfromfile,后删除table
  将原连table的datasource设为ClientDataSet
  唯一注意的是:要将midas.dll拷到system或者当前目录
5.三层结构的公文包的实现方法
 同时设定1:filename(*.cds)2.remote server
6.可以对data赋值(从另一个数据集取值)
 ClientDataSet2.Data:=ClientDataSet1.Data;
 ClientDataSet2.Open;
 或者
 ClientDataSet2.CloneCursor(ClientDataSet1,true);
 ClientDataSet2.Open;
7.附加数据取得
  客户程序向应用服务器请求数据。如果TClientDataSet 的
  FetchOnDemand 属性设为True
  客户程序会根据需要自动检索附加的数据包如BLOB字段的值或嵌套表的内容。
  否则,
  客户程序需要显式地调用GetNextPacket 才能获得这些附加的数据包。
  ClientDataSet的packetrecords设置一次取得的记录个数
8.ClientDataSet与服务器端query连接方法
  (1)sql内容为空
     ClientDataSet1.Close;
     ClientDataSet1.CommandText:=edit1.Text;//即sql内容
     ClientDataSet1.Open;
   对于没有应用服务器设置filter 如:country like 'A%'
   filtered=true可实现sql功能
  (2)有参数
   如服务端query的sql为
    select * from animals 
    where name like :dd
   则:客户端ClientDataSet
   var
   pm:Tparam;
  begin
     ClientDataSet1.Close;
     ClientDataSet1.ProviderName:='DataSetProvider1';
     pm:=Tparam.Create(nil);
     pm.Name:='dd';
     pm.DataType:=ftString;
     ClientDataSet1.Params.Clear;
     ClientDataSet1.Params.AddParam(pm);
     ClientDataSet1.Params.ParamByName('dd').AsString:=edit1.Text ;
     ClientDataSet1.Open;
     pm.Free;
  end;

9.数据的更新管理
  (1)savepoint 保存目前为止数据状态,可以恢复到这个状态
  var
    pp:integer;
  begin
     pp:=ClientDataSet1.SavePoint;
     ClientDataSet1.Edit;
     ClientDataSet1.FieldByName('姓名').asstring:='古话';
     ClientDataSet1.Post;
     table1.Refresh;
   end;
  恢复点
    ClientDataSet1.SavePoint:=pp;
  (2)cancel,RevertRecord
       取消对当前记录的修改,只适合没有post的,如果post,调用
   RevertRecord
   (3)cancelupdate
    取消对数据库所有的修改
  (4)UndoLastChange(boolean),changecount
    取消上一次的修改,可以实现连续撤消
    参数为true:光标到恢复处
          false:光标在当前位置不动
   changecount返回修改记录的次数,一个记录修改多次,返回只一次
   但UndoLastChange只撤消一次
   
10.可写的recno
   对于Ttable和Tquery的recno是只读的,而TClientDataSet的recno可读可写
   ClientDataSet1.recno:=5;是设第五个记录为当前记录
11.数据保存
  对于table使用post可更新数据
  而ClientDataSet1的post只更新内存数据,要更新服务器数据要使用
  ApplyUpdates(MaxErrors: Integer),他有一个参数,是允许发出错误的
  次数,-1表示无数次,使用simpleobjectbroker时常设为0,实现自动容错和负载平衡
注:本人水平有限,难免有误,望高手多多指点

Spring学习笔记(四)-- Spring事务全面分析

通过本系列的文章对Spring的介绍,我们对Spring的使用和两个核心功能IOC、AOP已经有了初步的了解,结合我个人工作的情 况,由于项目是金融系统,那对事务的控制是必不可少的,并且是非常严格的控...
  • JordanInShenzhen
  • JordanInShenzhen
  • 2016年04月17日 17:03
  • 3877

全面剖析Redis Cluster原理和应用

全面剖析Redis Cluster原理和应用 1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么...
  • caomiao2006
  • caomiao2006
  • 2016年07月17日 14:35
  • 630

多层架构设计与实践

多层架构设计与实践 IDEADATA大数据 2016-08-25 09:32 一、现有架构的问题 大型应用系统项目在安全性保障、灵活可扩展性、服务组件可管理可重用等方面提出了...
  • agzhchren
  • agzhchren
  • 2016年12月18日 14:10
  • 1185

可能你不知道的TClientDataset功能

keyLife富翁笔记   作者: shiningplus 标题: delphi Midas SQLServer的自增字段的处理  关键字: delphi Midas 自增字段  分类:...
  • onebigday
  • onebigday
  • 2016年02月29日 08:59
  • 1649

多层循环嵌套结构的设计

在很多编程的书籍中会给出这样的建议:     在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。     这个“跨循环层”的概念本身是说,...
  • laoniu_c
  • laoniu_c
  • 2014年09月05日 16:07
  • 1250

多层PCB层叠结构

转自:http://www.eefocus.com/html/08-07/46800s.shtml   在设计多层PCB电路板之前,设计者需要首先根据电路的规模、电路板的尺寸和电磁兼容(E...
  • chengpiaopiao
  • chengpiaopiao
  • 2013年07月31日 00:04
  • 1300

深入剖析PE文件

 PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一、 基本结构。   上图便是PE文件的...
  • u014563989
  • u014563989
  • 2016年12月09日 16:41
  • 403

内存管理 之 存储器层次结构

一、存储系统的分层管理 1、为什么需要分层存储管理 现代的高性能计算机系统要求存储器速度快、容量大,并且价格合理;然而,按照当前的技术水平,仅用单一的存储介质是很难满足要求的。因此,现代计算机系统...
  • zhaobryant
  • zhaobryant
  • 2014年07月22日 15:03
  • 761

python源码分析----对象结构

在python中,所有的东西都是对象,整数是,方法也是,。。总之什么都是。。。。 在看python的代码实现中,可以随处看到指针类型:PyObject*,那么我们就先来看看PyObject这到底是怎么...
  • fjs_cloud
  • fjs_cloud
  • 2015年05月18日 12:51
  • 922

Java读取多层级xml文件

最近在做国际客服北京职场的项目,需要提供一个接口服务端的能力,也就是需要开发一个http+xml的协议,入参和出参均为Map格式,各系统间的请求或应答是以xml格式封装的。在将返回报文(xml)解析为...
  • lmb55
  • lmb55
  • 2016年12月05日 19:17
  • 3839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多层结构中必不可少件TClientDataSet的全面剖析
举报原因:
原因补充:

(最多只允许输入30个字)