已经难倒了大半个中国DELPHI程序员的问题[高手来看,一般人不懂] ( 积分: 200 )

  • 主题发起人 主题发起人 redbase
  • 开始时间 开始时间
R

redbase

Unregistered / Unconfirmed
GUEST, unregistred user!
例:
请问,clientdataset中的值已经改变,如何不使用ApplyUpdates方法,使CLIENTDATASET的修改状态回到OPEN后的状态.
更详细说明:
clientdataset.open;
clientdataset.edit;
clientdataset.fieldbyname('a').asstring :='wwww';
clientdataset.post;
在这里,我已经对CLIENTDATASET中的数值进行了更改,此时的ChangeCount值为1.此条数据的updatestatus为 usModified
如果我们调用 clientdataset.applyupdates(-1)的方法,会将修改提到服务器,changecount的值为0.此条数据的updatestatus为 usUnmodified
如何不使用applyupdates方法,让CLIENTDATASET本地的记录进行修改,让其状态回到刚打开时的状态,即changcount为0,本条记录的updatestatus为usUnmodified
 
clientdataset1.CancelUpdates
 
你重新打开一下不就行了
 
这问题有这么难吗
uses
dbclient, DSIntf;
type
THackDataSet = class(TClientDataSet)
end;

clientdataset.open;
THackDataSet(clientdataset).DSBase.SetProp(dspropLOGCHANGES, Integer(False));
try
clientdataset.edit;
clientdataset.fieldbyname('a').asstring :='wwww';
clientdataset.post;
finally
THackDataSet(clientdataset).DSBase.SetProp(dspropLOGCHANGES, Integer(False));
end;

这样就可以了,只不过是让TClientDataSet不产生日志而已啦
 
ClientDataSet1.MergeChangeLog;
 
楼主对clientdataset的VCL封装只知道皮毛,还顾弄玄虚激将大家,井底之蛙
不服可以到http://www.programbbs.com找蓝蔓龙交流^_^
 
后退
顶部