关于ClientDataSet的有关问题
关于ClientDataSet的问题
我编了一个midas的程序,
客服端用到多个clientdataset连接一个Dcomconnection1,
在客服端的一个button事件里(用于保存修改过的数据)代码如下:
begin
if clientdataset1.changeconut> 0 then
begin
clientdataset1.applyupdates(-1);
clientdataset1.refresh;
showmessage( '保存成功 ');
end
end;
运行点击button后会出现如下错误;
"Must apply updates before refreshing "
但数据已经被写到数据库中啦!
如果去掉clientdataset1.refresh就没有问题啦。或者用一个新的Dcomconnection连接clientdataset1也正常;
请各位帮看看是什么原因,有什么解决的办法?
谢谢各位啦!
------解决方案--------------------
3.10.4 刷新记录
客户程序把数据在内存中建立一个副本,并工作于这个副本,而其他用户有可能已经修改了数据,也就是说,内存中的数据已不是数据库中的实际数据。
为了使内存中的数据是当前最新的,可以调用TClientDataSet的Refresh。不过,调用Refresh前要保证客户端没有未确定的修改,换句话说,就是客户端的日志中没有记载任何修改,否则会触发异常。
不过,TClientDataSet的RefreshRecord可以不管当前有没有未决的修改,它可以刷新当前记录,而日志中记载的修改继续保留。
注意:调用RefreshRecord有可能带来冲突。因此,调用RefreshRecord之前,最好还是检查一下当前是否有未决的修改,如果有的话,就触发异常,程序示例如下:
If ClientDataSet1.UpdateStatus <> usUnModified then
Raise Exception.Create( 'You must apply updates before refreshing the current record. ');
ClientDataSet1.RefreshRecord;
我编了一个midas的程序,
客服端用到多个clientdataset连接一个Dcomconnection1,
在客服端的一个button事件里(用于保存修改过的数据)代码如下:
begin
if clientdataset1.changeconut> 0 then
begin
clientdataset1.applyupdates(-1);
clientdataset1.refresh;
showmessage( '保存成功 ');
end
end;
运行点击button后会出现如下错误;
"Must apply updates before refreshing "
但数据已经被写到数据库中啦!
如果去掉clientdataset1.refresh就没有问题啦。或者用一个新的Dcomconnection连接clientdataset1也正常;
请各位帮看看是什么原因,有什么解决的办法?
谢谢各位啦!
------解决方案--------------------
3.10.4 刷新记录
客户程序把数据在内存中建立一个副本,并工作于这个副本,而其他用户有可能已经修改了数据,也就是说,内存中的数据已不是数据库中的实际数据。
为了使内存中的数据是当前最新的,可以调用TClientDataSet的Refresh。不过,调用Refresh前要保证客户端没有未确定的修改,换句话说,就是客户端的日志中没有记载任何修改,否则会触发异常。
不过,TClientDataSet的RefreshRecord可以不管当前有没有未决的修改,它可以刷新当前记录,而日志中记载的修改继续保留。
注意:调用RefreshRecord有可能带来冲突。因此,调用RefreshRecord之前,最好还是检查一下当前是否有未决的修改,如果有的话,就触发异常,程序示例如下:
If ClientDataSet1.UpdateStatus <> usUnModified then
Raise Exception.Create( 'You must apply updates before refreshing the current record. ');
ClientDataSet1.RefreshRecord;