网站给假冒伪劣产品做推广,长沙门户网站有哪些,php综合网站源码,网站建设面试TClientDataSet控件继承自TDataSet#xff0c;其数据存储文件格式扩展名为 .cds#xff0c;是基于文件型数据存储和操作的控件。该控件封装了对数据进行操作处理的接口和功能#xff0c;而本身并不依赖上述几种数据库驱动程序#xff0c;基本上能满足单机瘦数据… TClientDataSet控件继承自TDataSet其数据存储文件格式扩展名为 .cds是基于文件型数据存储和操作的控件。该控件封装了对数据进行操作处理的接口和功能而本身并不依赖上述几种数据库驱动程序基本上能满足单机瘦数据库应用程序的需要。 一、TClientDataSet的基本属性和方法介绍 1)FieldDefs: 字段定义列表属性 开发者可通过单击属性编辑器中该属性编辑按钮或在该控件上单击右键选择弹出菜单中的Fields Editor菜单进行字段编辑。设置完此属性后实际上就相当于定义了表的结构如果想装入已有的数据表的结构和数据可通过单击右键选择弹出菜单中的Assign Local Data菜单从弹出对话框中选取当前窗体中已与数据库连接好的数据集控件名称即可当前窗体中必须已放置好要套用的数据集控件并打开激活。 使用注意 对于自定义的字段名表该属性编辑完后该控件仍然无法打开。必须右键单击该控件选择弹出菜单中的Create DataSet菜单让该控件以上述编辑的字段列表为依据创建数据集后才能够被激活打开和使用。否则会出现类似ClientDataSet1: Missing data provider or data packet.的错误包括在运行期运行期可调用该控件的CreateDataSet方法从而动态定义字段和表。 2)FileName属性 说明数据存储文件的名称。 因该控件是基于文件型的数据操作控件因此必须指定所操作的数据文件名称默认扩展名称.cds从而打开和激活该控件进而进行数据编辑。 例1利用此属性打开指定的.cds文件 varPath: string;begin Path : ExtractFilePath(Application.ExeName); //取得可执行文件路径 CDataSet1.FileName : Path test.cds; CDataSet1.Open;end; 3)CreateDataSet方法 说明该方法以FieldDefs中的字段名表为结构建立数据集常用来进行动态定义表。 例2动态创建一具有姓名和年龄两个字段的数据集。 //创建字段名表CDataSet.FieldDefs.Clear;with CDataSet.FieldDefs.AddFieldDef dobegin Name : Name; Size : 10; DataType : ftString;end;with CDataSet.FieldDefs.AddFieldDef dobegin Name : Age; DataType : ftInteger;end; //动态创建数据集 CDataSet.CreateDataSet; //激活和打开该数据集 CDataSet.Open; 4)Open方法 说明 打开和激活数据集控件从而进行数据编辑。 a. 如果指定了FileName属性则直接用Open方法即可打开和激活该控件,见例1。 b. 如果未指定FileName属性可使用例2方法动态创建和打开数据集,进而操作数据。 5)LoadFromFile和SaveToFile 说明从文件中装入表结构和数据以及存储数据到文件。该方法类似于Word中的打开新文件和另存为的功能。 例3:将数据集的数据存储到指定文件中 CDataSet.SaveToFile(c:\windows\desktop\test.cds); 6).First到首Prior(向前)Next(向后)Last(到尾)Edit(编辑)CanCel(取消编辑)Post(保存)Insert(插入记录)Append(添加记录)Delete删除Refresh数据刷新等数据集常用方法 说明当指定了FileName属性时其Post方法可将数据存入指定的文件中,类似其SaveToFile方法如果未指定存储文件名则Post方法只将数据存储在RAM中。其它方法同一般数据集控件使用方法略。 7).Filter, Filtered: 过滤筛选属性 说明:用于筛选指定条件的记录,用法同一般数据集控件,略。 例4在已经激活打开的数据集中筛选性别为男性的记录 CDataSet.Close;CDataSet.Filter : 性别 男 ;CDataSet.Filtered : True;CDataSet.Open; 二、使用TClientDataSet控件的应用程序发布的注意事项 如前所述使用TClientDataSet控件的程序发布时不需要任何数据库驱动程序大大节省了安装文件的大小。但是在发布程序时别忘了将Windows系统目录下midas.dll(257KB)与应用程序一起发布运行必须否则程序仍然无法正常运行。 三、结束语 通过使用Delphi中TClientDataSet控件既实现了应用程序可彻底脱离数据库驱动程序也实现了常规数据集控件简单易用的特性为编写瘦数据库应用程序提供了一种技术方法和手段。 上述程序在Pwindows98Delphi5下测试通过。 TClientDataSet在三层结构中TClientDataSet的地位是不可估量的她的使用正确与否是十分关键的本文从以下几个方面阐述她的使用希望对你有所帮助. 1.动态索引procedure TForm1.DBGrid1TitleClick(Column: TColumn);beginif (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 server6.可以对data赋值从另一个数据集取值) ClientDataSet2.Data:ClientDataSet1.Data; ClientDataSet2.Open; 或者 ClientDataSet2.CloneCursor(ClientDataSet1,true); ClientDataSet2.Open;7.附加数据取得 客户程序向应用服务器请求数据。如果TClientDataSet 的 FetchOnDemand 属性设为True 客户程序会根据需要自动检索附加的数据包如BLOB字段的值或嵌套表的内容。 否则 客户程序需要显式地调用GetNextPacket 才能获得这些附加的数据包。 ClientDataSet的packetrecords设置一次取得的记录个数8.ClientDataSet与服务器端query连接方法 1sql内容为空 ClientDataSet1.Close; ClientDataSet1.CommandText:edit1.Text;//即sql内容 ClientDataSet1.Open; 对于没有应用服务器设置filter 如country like A% filteredtrue可实现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; 2cancel,RevertRecord 取消对当前记录的修改只适合没有post的如果post调用 RevertRecord (3)cancelupdate 取消对数据库所有的修改 4UndoLastChange(boolean),changecount 取消上一次的修改可以实现连续撤消 参数为true:光标到恢复处 false:光标在当前位置不动 changecount返回修改记录的次数一个记录修改多次返回只一次 但UndoLastChange只撤消一次10.可写的recno 对于Ttable和Tquery的recno是只读的而TClientDataSet的recno可读可写 ClientDataSet1.recno:5;是设第五个记录为当前记录11.数据保存 对于table使用post可更新数据 而ClientDataSet1的post只更新内存数据要更新服务器数据要使用 ApplyUpdatesMaxErrors: Integer),他有一个参数是允许发出错误的 次数,-1表示无数次,使用simpleobjectbroker时常设为0实现自动容错和负载平衡 转载于:https://www.cnblogs.com/spiritofcloud/p/3980370.html