DBGrid的刷新问题 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061218110558245.html
我是一个新手,有一个问题,就是在一数据库中添加纪录后(ADOQuery),显示在DBGrid中,但是添加显示以后不是追加到最后,而是清空了以前的纪录,并只加一条纪录,不能显示已经添加过的纪录,我用了刷新命令也不行,我看到有人说ADOQuery不支持刷新,还有人说再open/close可是我用了还是不行,是不是我用的不对,能不能给我个简单的解释啊,谢谢了。。。。
新手求助。。。
添加操作要用ADOQUERY.EXECSQL.所以你OPEN后并没有刷新.
建议你用两个ADOQUERY.第一个专门用来插入,另一个专门用来显示DBGRID,DBGRID和第二个ADOQUERY连接.
第二个close-OPEN后就可以刷新啦.
欧了。。。。很感谢上面的朋友啊。。。两个就可以,非常的感谢,呵呵,开心。。。。。
一个也可以
但是execsql之后还要重新读取数据
open
select * from 表名
close
才可以的。数据集保存的是刚刚通过SQL语句来获得的数据
给了分才算真感谢.
楼上那位说的也对,但是语句写错顺序了
close
select * from tablename
open
ADOQUERY.EXECSQL好象好些
ADOQUERY.EXECSQL 的做法是重新加载数据集,不知道你的添加记录的方式是什么样的,如果是insert into table方法 就如你说的情况一样,如果是用ADOQUERY.append 或 ADOQUERY.insert就不会有这个问题,这是在现有的数据集基础上操作的! 注意 要想通过ADOQUERY这样的方式操作写数据库
其实只要添加一条记录用post就可以直接的刷新了
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(str);
adoquery1.ExecSQL;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from toone');
adoquery1.open;
就可以了
adoquery1.open;
如用到返回数据集的语法 Select 不包括DELETE、UPDATE、INSERT等语法
相当于将Query的Active属性设为True;
adoquery1.ExecSQL;
对于不返回数据集的语法DELETE、UPDATE、INSERT等语法时使用;
二楼的朋友,我不知道怎么给你分啊?呵呵,我到是真想给你。。。。
其他的朋友也谢谢了昂。。。。
但是这样的刷新DBGRID就会回到表格第一行了。如何可以让表格定位在原来的位置呢,比如我对一个在第2000行的数据修改了,应该在修改并刷新后再定位在2000行的位置上吧。
adoquery1.open
后加一条
adoquery1.Last;