删除记录的刷新问题?(15分)

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

linger_1

Unregistered / Unconfirmed
GUEST, unregistred user!
实现功能是这样的,点击删除则将该记录从数据库内删除,然后Dbgrid即时更新,
显示目前数据库的内容,但是现在我实现的是有时能更新有时就不能更新,请问是
什么原因呢?该如何解决?
 
用dbgrid 的refresh是不起做用的
你把数据库close 然后在open
 
antic_ant 说的极是,但他所说的数据库是指Tquery控件或Ttable控件
 
那我该在什么地方写呢?
 
对于ADO ,antic_ant 说的也可以的,没错的
 
为什么有时候刷新有时候就没有呢?
 
把表更新一下,如table.refresh 或table.active:=false ;table.active:=true;
再把dbgrid.refresh 应该可以了
 
先关后开,保证没问题
 
先關後幵,可以解決,但速度太慢.
你可以用 Tquery控件的話 你可以加一個updatesql 控件
設定 Tquery控件的
updateobject 的屬性為updatesql 來連接Tquery控件和updatesql控件
cachedupdates 的屬性為true
requestlive 的屬性為true
雙擊updatesql,設定它的 generate sql
那你做甚麼動作都可以
Query1.Append;
Query1.Delete;
記住 做動作之后 再做以下動作就一定可以了
Query1.ApplyUpdates
Query1.CommitUpdates
 
应更新的是DBGrid连接的数据集,而不是DBGrid
 
用table.refresh 或table.active:=false ;table.active:=true;很慢的,因为你需要调用
整个数据库的数据,如果数据量大的话就会有客户骂你了,(机器为什么死了啊!)
你实际是在更新DBGRID所连的数据库,建议使用QUERY,QUERY.close ;
再QUERY.open 就OK 了.
 
with query do
begin
disablecontrols;
close;
open;
enablecontrols;
end;

very quickly
 
如过你用的是Query的话,实在不行就在Qurey的SQL属性中动态的添加一条查询语句!
with qurey do
begin
sql.clear;
sql.add ('select * from table');
open;
end;
 
昨晚刚做的demo
close;
open;
 
在删除或更新后用datasource1.ondatachange(sender);(记不清拼写)
(datasource1是Dbgrid数据源)
 
数据表记录先定位.
关闭数据表.
打开数据表.
数据表记录重定位.
 
dbgrid.refresh该如何写呢?
 
应该用数据库的的刷新,用query的话就用close,open;
用table的话就用refresh;有的时候可以多写几个refresh;
 
query里面我写了close和open了,但是就是有时候能刷新有时候不能
 
close;
open;
最笨的方法,不过效率好像不高!
 
后退
顶部