三层,DCOM,请分析 if ClientDataSet1.UpdateStatus<>usUnModified then showmessage(

  • 主题发起人 主题发起人 d_delphi
  • 开始时间 开始时间
D

d_delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
三层,DCOM,请分析 if ClientDataSet1.UpdateStatus<>usUnModified then
showmessage('有改动');这条语句为什么行不通?说usUnModified有误,为什么? (20分)
<br />三层,DCOM,请分析 if ClientDataSet1.UpdateStatus<>usUnModified then
showmessage('有改动');这条语句为什么行不通?说usUnModified有误,为什么?
 
这样做:
if ClientDataSet1.UpdateStatus in [usUnModified] then
showmessage('有改动');
 
我试一下,也不行。
 
是不是没有uses DB
 
是不是因为数据集没有打开,不能在一个关闭的数据集中进行此项操作。
 
以上都试过了,还不行。
D6+SP2
 
书上这样写:
刷新数据
客户端应用程序把从服务器取回的数据放在内存中。随着时间的推移,其他客户一直在修改数据,因此原来从应用程序服务器取回的数据与应用程序服务器的数据差别越来越大。
和其他数据表构件相似,TClientDataSet也有一个Refresh方法。当调用了这个方法后,把当前客户端的数据“刷新”与应用程序服务器上的数据保持相同。不过,调用Refresh前要保证客户端没有未确定的修改,否则的话,会引起异常。
客户端也可以只刷新数据,而不理会“改变日志”中未决的记录。这需要调用TClientDataSet的RefreshRecord方法。与Refresh方法不同,RefreshRecord只刷新客户端的数据,而日志中记载的修改继续保留。
警告: 经常调用RefreshRecord刷新数据是不合适的。如果客户对数据的修改与其他用户对数据的修改冲突的话,调用RefreshRecord将会隐藏掉这些冲突(因为各个客户端对本地未觉的记录都不理会)。
为了避免隐藏修改的错误,在调用RefreshRecord之前最好检查是否有未觉的数据。比如:
if ClientDataSet1.UpdateStatus <> usUnModified then
raise Exception.Create('You must apply updates before refreshing the current record.');
//如果有未觉的数据,引起异常
ClientDataSet1.RefreshRecord;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
I
回复
0
查看
601
import
I
后退
顶部