数据为什么会自动保存???(25分)

  • 主题发起人 主题发起人 hzyingmu
  • 开始时间 开始时间
H

hzyingmu

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过DBEdit输入数据,用DBNavigator浏览数据,但是当我在DBEdit中输入
新的数据后(还没有按确定执行Post),直接按DBNavigator往前看数据后,
然后直接执行Table.Cancel。但数据却已存盘,不知为什么,如何保证其
在执行Post之前不会存盘?(若使Table的属性Cachedupdates设置为True
则这种情况不会发生,但我不想把它设成True)。请高手赐教!谢谢!
我用的是Delphi4,数据库是DBF。
 
要不你就不用DBEDIT来输入数据
 
这是系统自动隐式调用post的原因,可能不能解决。
 
用EDIT,自己处理Post,把DBEDIT隐藏,在DBEDIT的Onchange中
把数据显示在EDIT中。(DBEDIT只要关键字)
 
设置DBEdit的属性ReadOnly为True即可。
 
你可以使用Table的缓存机制,即table1.cachedupdates:=true;
 
正常的,用事务或自己post吧
 
将 Table 的 ReadOnly 属性设为 true
将 DataSource 的 AutoEdit 属性设为 false;
 
可用临时表保存;
在保存时,将临时表数据传入实际数据库表中。
 
将DataSource的AutoEdit属性设为False,onDatachange中添加Table.post
 
应该用事务来处理,这样速度也很快
 
用事务来处理,或者用Edit替代DBEdit, 想存盘时执行Post.
 
大家说的都差不多了,要么使用事务,要么别用dbedit那东西,就这么些。
 
在默认情况下,当你移动光标到另一条记录上时,系统就自动把未决的数据Post了.
你执行append,insert,next等命令也会这样,只要光标离开原来的记录,就会自动
Post,如果你不想要这效果,就把CachedUpdates设为True,这样修改记录时,会写
到一个缓冲区,想把缓冲区中的数据写入数据集时,再用ApplyUpdates和Commit,
如果想取消前面的修改,可用CancelUpdates.
 
嘻嘻,不好意思,写完后才看到你不要 CachedUpdates .
 
各人所说的“事务”是什么事务?
 
dbf 好像不支持事务(transaction)
你可以采用wumeng的办法
 
to 小菜:
我曾经用过类似你的方法,插入无问题,但修改却出现问题,
不能修改最后一条记录,是否还有要注意的地方?请赐教!!!
 
用DBEDIT本身就是自动保存的。最好自己实现,不要用他自带的。那样会更灵活。
 
后退
顶部