TClientDataSet的使用技巧

简介: 转载自:http://www.pcbookcn.com/article/3679.htm 在三层结构中,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,实现自动容错和负载平衡


目录
相关文章
|
8月前
|
监控 关系型数据库 MySQL
Alibaba Cloud Linux基础入门(1)——配置zabbix
该文档是关于在Alibaba Cloud Linux上配置Zabbix的教程。首先,通过添加Zabbix仓库并安装相关软件包(如zabbix-server,web前端和agent)。然后,安装并启动MySQL数据库,执行`mysql_secure_installation`进行配置。接着,创建名为zabbix的数据库和用户,并导入Zabbix默认数据。最后,设置Zabbix服务开机自启动,并通过浏览器访问http://服务器IP/zabbix完成Web端配置,使用Admin/zabbix登录。
|
1月前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
435 8
|
1月前
|
设计模式 算法 定位技术
策略模式(Strategy Pattern)
策略模式(Strategy Pattern)是一种行为型设计模式,允许在运行时选择算法或行为,而不是在编译时确定。通过将具体算法封装成独立的类,并通过统一接口与客户端交互,实现算法的动态替换,避免代码重复和复杂条件语句。适用于支付方式切换、导航路径选择等场景。
84 1
|
7月前
|
SQL 存储 DataWorks
DataWorks操作报错合集之遇到错误信息提示:"ErrorMessage: ClickHouse exception, code: 210, host: cc-,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
数据挖掘 物联网 API
API接口在各个领域的发挥着什么样的作用呢
API接口在电商、金融、医疗、物联网、媒体和游戏等领域发挥重要作用。从商品管理、支付集成、用户管理,到金融风控、医疗数据共享、智能交通,再到内容整合、数据分析和游戏数据交互,API助力各行业实现高效协同与创新。
|
8月前
|
存储 芯片 内存技术
存储器的分类
存储器的分类
252 1
|
5月前
|
存储 关系型数据库 MySQL
软件设计与实现:从概念到产品
【8月更文第21天】在现代软件开发过程中,从概念到产品的转化需要经过多个阶段的设计和规划。本文将重点介绍软件设计的几个关键方面:软件设计概述、架构设计、模块设计、用户界面设计以及数据库设计,并通过一个假设的项目——在线图书管理系统为例进行说明。
595 1
|
8月前
|
存储 运维 Kubernetes
Kubernetes学习-集群搭建篇(一) 搭建Master结点
Kubernetes学习-集群搭建篇(一) 搭建Master结点
|
算法 前端开发 C++
拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)
拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)
1397 0
|
数据库连接 C# 数据库