缓存更新问题,(100分)

  • 主题发起人 主题发起人 perfic
  • 开始时间 开始时间
P

perfic

Unregistered / Unconfirmed
GUEST, unregistred user!
使用缓存更新的时候,怎样知道当前改动的数据提交了没有.检查哪个属性?
例如:
我在退出前要做一个检查,如果有数据改动了而没有提交,
则提示是否提交,如是,则applyupdate,如否,则cancelupdate.
 
TDataSet.State
 
对于C/S类型的MIS最好单做一个提交按钮,这样简单明了,使用缓存更新,用户可以
一次录入多条一并提交,其它部份就不用考虑APPLYUPDATE的问题。
一定要在退出之前判断也可以:
if dataset1.stat in [edsEdit, dsInsert] then
dataset1.applyupdate
在上面两个状态之外,说明数据没有改动,不需要再CANCELUPDATE
 
DataSet.UpdatesPending or (DataSet.State in [dsEdit, dsInsert])
 
忘了说明:
Indicates whether the cached updates buffer contains records that
are not yet applied.

property UpdatesPending: Boolean;

Description

Examine UpdatesPending to check the status of the cached updates
buffer. If UpdatesPending is True, then there are edited, deleted, or
inserted records to apply to the database. If UpdatesPending is
False, there are no records in the cache.

但是,一条正在编辑的记录是不会放到buffer中去的,所以要加上
(DataSet.State in [dsEdit, dsInsert])

同理,单是(DataSet.State in [dsEdit, dsInsert])也不够,一条编辑过的记录
Post之后,DataSet.State就会恢复为dsBrowse,不过此时DataSet.UpdatesPending 就已经等于True

 
多人接受答案了。
 
后退
顶部