DBGrid的刷新问题

DBGrid的刷新问题 Delphi / Windows SDK/API
http://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;

posted on 2009-02-19 16:46  delphi2007  阅读(418)  评论(0编辑  收藏  举报