200分大奉送:利用TQuery對資料表進行維護時出現了間題,哪位仁兄幫忙?火急!!!(200分)

  • 主题发起人 主题发起人 ljy
  • 开始时间 开始时间
L

ljy

Unregistered / Unconfirmed
GUEST, unregistred user!
將Tquery 的cachedupdate,RequestLive設為True,后臺使用Oracle 8!
本人源代碼如下:
if not Dbase.intransaction then Dbase.StartTranction;
try
Query1.ApplyUpdate;
Dbase.Commit;
except
Dbase.Rollback;
end;
Query1.commitupdates;
當本段程序執行后,query中的數據被更新到后臺數據庫中,但在Client
端的dbgrid中卻不顯示了,必須重新開表後才顯示.如果不使用commit
updates則立即修正記錄時會出現'at the end of table'.使用ttable
卻沒有此間題.請仁兄幫忙出手解決,十分火急!!!!
 
>>當本段程序執行后,query中的數據被更新到后臺數據庫中,但在Client端的dbgrid
>>中卻不顯示了
query和dbgrid是否都在client端,如不在同一程序中,则query更新看数据,在其它
的数据控件不会自动看更新显示.
 
在更新以前:query1.DisableControls
更新以后:query1.EnabledControls
 
query1.DisableControls
......
query1.EnabledControls
不知行不行
Query1.commitupdates;好象是提交后把cach清空了,不知query1.EnabledControls
会不会刷新database


 
在客户端加一个刷新功能,把dbgrid关了再开,
不知行不行?
 

if not Dbase.intransaction then Dbase.StartTranction;
try
Query1.ApplyUpdate;
Query1.commitupdates
end;
 
这是因为 DBGrid 的数据源的内容改变了,而前台却没有及时刷新,只要在操作
后,把数据源关上再打开就行了。
 
操作远端数据库的时候,要用tquery+tupdatesql,把tquery的Cachedupdate=true
,把RequestLive設為False,再加上你写的代码,OK!
 
多人接受答案了。
 
后退
顶部