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

原创 2007年09月12日 00:07:00

在三层结构中,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.packetrecord0,当前记录

3.Taggregates使用

1)在字段编辑中add new field类型为aggregates

     后设置expression(表达试)

     设置active:=true即可

     使用dbeditfield为前者即可

2)使用Aggergates属性add设计表达试

    调用

  showmessage(floattostr(ClientDataSet1.Aggregates.Count));

  showmessage(ClientDataSet1.Aggregates.Items[0].Value);

 

4.在单层数据库中不要BDE

  使用ClientDataSet代替table,使用ClientDataSetloadfilename装入cds

  代替tabletablenamedb或者dbf

  原来的程序改造方法:

  加一个ClientDataSet,使用右键assign locate data

  savetofile,loadfromfile,后删除table

  将原连tabledatasource设为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 才能获得这些附加的数据包。

  ClientDataSetpacketrecords设置一次取得的记录个数

8.ClientDataSet与服务器端query连接方法

  1sql内容为空

     ClientDataSet1.Close;

     ClientDataSet1.CommandText:=edit1.Text;//sql内容

     ClientDataSet1.Open;

   对于没有应用服务器设置filter 如:country like 'A%'

   filtered=true可实现sql功能

  (2)有参数

   如服务端querysql

    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;

  2cancel,RevertRecord

       取消对当前记录的修改,只适合没有post的,如果post,调用

   RevertRecord

   (3)cancelupdate

    取消对数据库所有的修改

  4UndoLastChange(boolean),changecount

    取消上一次的修改,可以实现连续撤消

    参数为true:光标到恢复处

          false:光标在当前位置不动

   changecount返回修改记录的次数,一个记录修改多次,返回只一次

   UndoLastChange只撤消一次

  

10.可写的recno

   对于TtableTqueryrecno是只读的,而TClientDataSetrecno可读可写

   ClientDataSet1.recno:=5;是设第五个记录为当前记录

11.数据保存

  对于table使用post可更新数据

  ClientDataSet1post只更新内存数据,要更新服务器数据要使用

  ApplyUpdatesMaxErrors: Integer),他有一个参数,是允许发出错误的

  次数,-1表示无数次,使用simpleobjectbroker时常设为0,实现自动容错和负载平衡

 

delphi开发学习四:TClientDataSet与TDataSetProvider控件使用实例

1、TClientDataSet控件 通过TClientDataSet控件可以建立瘦客户端的应用程序,且数据执行效率较高,但它不能和数据库自动连接,程序中必须制定它如何获取数据。一般情况下,TClie...

Delphi TClientDataSet 使用方法_详解

TClientDataSet 与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。 TClientDataSet最...
  • xxhh07
  • xxhh07
  • 2011年10月06日 14:12
  • 2863

【摘自网上】Delphi TClientDataSet用法

TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件。该控件封装了对数据进行操作处理的接口和功能,而本身并不依赖上述几种数据库...

Delphi三层开发小技巧:TClientDataSet的Delta妙用

Delphi做三层开发时,很多人都会在客户端放一个TClientDataSet,中间层远程数据模块就对应放一个TDataSetProvider,然后再连起来.其实这种方法很烦琐,而且程序痈肿不甘,不好...
  • aroc_lo
  • aroc_lo
  • 2013年07月29日 16:30
  • 815

Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”

当我们在客户端用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”!! 问题原因:服务器端对提供服务的控件所属单元选择错...
  • sunylat
  • sunylat
  • 2015年06月11日 10:56
  • 5325

Delphi 三层 TClientDataSet(2)

delphi Midas SQLServer的自增字段的处理 1.新增时,表中有自增字段,但是不希望用Refresh,直接ApplyUpdates直接看见自增字段的值 在DataSetProvid...

Delphi TClientDataSet的使用技巧

1. TClientDataSet、TDataSetProvider的使用技巧 ClientDataSet是一个功能强大的类,通过在内存中模拟表格,实现了其它数据集组件所不具备的强大功能。 T...

Delphi三层开发小技巧:TClientDataSet的Delta妙用

Delphi三层开发小技巧:TClientDataSet的Delta妙用   Delphi做三层开发时,很多人都会在客户端放一个TClientDataSet,中间层远程数据模块就对应放一个TDat...

Delphi TClientDataSet

Delphi TClientDataSet的使用    TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi多层结构中必不可少件TClientDataSet的全面剖析
举报原因:
原因补充:

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