多层结构中必不可少件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,实现自动容错和负载平衡
注:本人水平有限,难免有误,望高手多多指点

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

在三层结构中,TClientDataSet的地位是不可估量的,她的使用正确与否,是十分关键的,本文从以下几个方面阐述她的使用,希望对你有所帮助.1.动态索引procedure TForm1.DBGri...
  • liumz_silly
  • liumz_silly
  • 2007-09-12 00:07:00
  • 1112

全面剖析Spring 框架

http://tech.it168.com/zt/spring/index.html
  • holandstone
  • holandstone
  • 2014-03-05 17:19:23
  • 624

深入TClientDataSet

与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。TClientDataSet最大的特点是它不依赖于BDE(Borland...
  • qiume
  • qiume
  • 2009-03-06 14:41:00
  • 2607

memcached全面剖析

memcached完全剖析–1. memcached的基础 memcached全面剖析–2.理解memcached的内存存储 memcached全面剖析–3.memcached的删除机制和发展方向...
  • xdonx
  • xdonx
  • 2013-09-11 18:14:35
  • 1212

memcached全面剖析(入门到精通)

  • 2013年05月12日 09:03
  • 905KB
  • 下载

Delphi TClientDataSet

Delphi TClientDataSet的使用    TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的...
  • lailai186
  • lailai186
  • 2013-08-07 13:30:20
  • 1594

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

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

Linux内部的时钟处理机制全面剖析

http://www.xuebuyuan.com/388444.html 在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等。所以说,了解 Linux 操作系统中的时...
  • larryliuqing
  • larryliuqing
  • 2014-07-21 15:06:58
  • 525

AOP 之 AspectJ 全面剖析 in Android

【原文】 AspectJ 是 Android 平台上一种比较高效和简单的实现 AOP 技术的方案。 相类似的方案有以下几种: AspectJ: 一个 JavaTM 语言的面向切面编程的无缝扩...
  • han_han_1
  • han_han_1
  • 2017-10-17 15:14:52
  • 150

多层数据库开发十一:TClientDataSet

                                                  第十一章 TClientDataSet  与TTable、TQuery一样,TClientDataS...
  • shuaihj
  • shuaihj
  • 2004-11-05 11:55:00
  • 2174
收藏助手
不良信息举报
您举报文章:多层结构中必不可少件TClientDataSet的全面剖析
举报原因:
原因补充:

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