我是一个新手,有一个问题,就是在一数据库中添加纪录后(ADOQuery),显示在DBGrid中,但是添加显示以后不是追加到最后,而是清空了以前的纪录,并只加一条纪录,不能显示已经添加过的纪录,我用了刷新命令也不行,我看到有人说ADOQuery不支持刷新,还有人说再open/close可是我用了还是不行,是不是我用的不对,能不能给我个简单的解释啊,谢谢了。
新手求助

解决方案 »

  1.   

    添加操作要用ADOQUERY.EXECSQL.所以你OPEN后并没有刷新.建议你用两个ADOQUERY.第一个专门用来插入,另一个专门用来显示DBGRID,DBGRID和第二个ADOQUERY连接.
    第二个close-OPEN后就可以刷新啦.
      

  2.   

    一个也可以
    但是execsql之后还要重新读取数据
    open
    select * from 表名
    close
    才可以的。数据集保存的是刚刚通过SQL语句来获得的数据
      

  3.   

    给了分才算真感谢.
    楼上那位说的也对,但是语句写错顺序了
    close
    select * from tablename
    open
      

  4.   

    ADOQUERY.EXECSQL 的做法是重新加载数据集,不知道你的添加记录的方式是什么样的,如果是insert into table方法 就如你说的情况一样,如果是用ADOQUERY.append 或 ADOQUERY.insert就不会有这个问题,这是在现有的数据集基础上操作的! 注意 要想通过ADOQUERY这样的方式操作写数据库
      

  5.   

    其实只要添加一条记录用post就可以直接的刷新了
      

  6.   

    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等语法时使用;
      

  7.   

    但是这样的刷新DBGRID就会回到表格第一行了。如何可以让表格定位在原来的位置呢,比如我对一个在第2000行的数据修改了,应该在修改并刷新后再定位在2000行的位置上吧。
      

  8.   

    adoquery1.open
    后加一条 
    adoquery1.Last;