关于Dbgrid的控制问题(150分)

G

gcys

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老兄:
请问对于Dbgrid控件,能否控制它的存盘功能,比如我想存盘时它
才能存盘。(或有无可替代控件).^-^
 
你是不是指post?
你可以用cachedupdate或者数据库的事务来实现

关于cachedupdate,Delphi在/demos/db/cachedup/下有例子,主要是把
query的cachedupdates属性置为true,要保存数据时手工调用ApplyUpdates.

事务:并不是所用的数据库都支持事务,参见数据库文档
set Transaction
commit(提交)// rollback(滚回,即放弃)
推荐用cachedupdates
 
yifeng老兄:
感谢你提供的答案,利用cachedupdates属性,可以
较好的控制数据存取。但对于数据的唯一性或正确性却不好处理。
比如其中一字段为关键字,具有唯一性,利用缓存,在DGGRID中
可以随意改动,但插入了重复的记录,它也不报告出错,只是在
applyupdates时才出错。请问有无好的办法解决?
 
yifeng老兄:
感谢你提供的答案,利用cachedupdates属性,可以
较好的控制数据存取。但对于数据的唯一性或正确性却不好处理。
比如其中一字段为关键字,具有唯一性,利用缓存,在DGGRID中
可以随意改动,但插入了重复的记录,它也不报告出错,只是在
applyupdates时才出错。请问有无好的办法解决?
 
怎么没人管我呢?
 
on first:you can make a copy of data.
if cansave then update the copyeddata
else copy copyeddata to sourcedata.
 
今天我没有上来,已经给你回信了
看看demo,很有帮助
 
还是用事务处理吧,标准数据库后台都支持的。
标准又简单好用。
 
cacheupdate + 事务处理
在录入时要检查出错误,要么用MIDAS,ASTA,MIDWAVE 要么自己检查
 
自己编写一个DBNavigate以控制数据库的更新,方法为:
procedure BltBtnClick(sender);
Begin
DBNavi.BtnClk(nbpost);
end;
在使用该按钮时应将DBNavigate1.visible := False;即可。
本人的程序一直采用该方法。
 
jams兄:
能不能更详尽一点。(呵呵...得寸进尺了)
 
jams,在dbgrid里,不用dbnavigator也是可以post的
所以,你的方法可能不行.

gcys,你的问题还没有解决? 我看了delphi的例子,你只要按照他的方法就可以了
 
接受yifeng兄的答案,不过对于无关键字table情况好像不怎么好。
 
顶部