1.基本情况介绍; clientdataset内存表,他的data属性存放的是数据, delta 增量记录的是日志, 就相当于数据库的 savepoint保存点;每当clientdataset的数据有变化时(onbeforeedit,onafteredit),savepoint都会变化。如果我们想取消一段时间的操作,我们可以先记录下这个savepoint,然后修改,如果想取消,直接让这个savepoint = 以前的那个点即可。
try this var BaseLine:Integer; begin with ClientDataSet1 do begin BaseLine:=SavePoint; Insert; FieldByName('Name').Asstring:= Edit1.Text; FieldByName('Weight').AsInteger:= StrToInt(Edit2.Text); if 提交 then MergeChangeLog else //取消 SavePoint:=BaseLine; end; end;
2. clientdaset可以不连接数据库直接使用,如果设置了clientdataset的filename属性,那么在数据集打开或者关闭的时候,都会将数据集里的数据保存到对应的文件中,这个过程是会合并日志的。也就是说你编辑到什么状态,然后下次打开还是什么状态。
3.mergechangelog; 就是将 delta里面的操作日志跟 data合并,
4.emptydataset,清空数据集。
5.三层服务的构造方法,在客户端放上clientdataset,然后放上socketconnect; 然后将clientdataset的remoteserver 指向 socketserver; clientdataset的dataprovider设置为服务器上的datasetprovider 服务器上放上dataprovider即可。
6.创建内存表:createdataset,创建数据集。
//明细表内存对象创建 with cdsDtl do begin with FieldDefs do begin Clear; //数据库字段 Add('Num',ftString,14,False); Add('Cls',10,False); Add('Line',ftInteger,False); Add('GDCode',20,False); Add('sl',False); Add('GID',False); //Todo 增加业务明细字段 //辅助字段 Add('GDName',120,False); Add('Note',255,False); Add('LSTINPRC',ftFloat,False); end; IndexDefs.Add('','Line',[ixPrimary]); CreateDataSet; Append; end;
procedure TForm1.FormCreate(Sender: TObject); begin self.ds1.FieldDefs.Add('Name',50); self.ds1.FieldDefs.Add('Age',50); self.ds1.CreateDataSet; self.ds2.FieldDefs.Add('Name',50); self.ds2.FieldDefs.Add('Age',50); self.ds2.CreateDataSet; self.ds1.AppendRecord(['100','100']); self.ds1.AppendRecord(['100','100']); self.ds2.Data:=self.ds1.Delta; end; procedure TForm1.btn1Click(Sender: TObject); begin self.ds1.AppendRecord(['1001','100']);//添加新纪录 self.ds2.Data:=self.ds1.Delta; end;
李维的书,有空还是看看吧。
提交数据的时候,记得applyupdates(-1,0.3),分别是提交正常的,不管不正常的了,0出错,允许3个出错。
如果我想要通过sql语句更新客户修改的数据,那么我们可以这样做
再放一个ClientDataSet2,用ClientDataSet2.Data=ClientDataSet1.Delta; while not ClientDataSet2.Eof do case ClientDataSet2.UpdateStatus of usDeleted: XXX通过将原 clientdataset里面的日志复制到另一个数据集,然后遍历记录,看看修改过的日志。就可以找到修改过的数据了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。