我的form用了ADOQuery、DBGrid
现在实现了insert、update等等~但是 每次增加记录或者修改记录
dbgrid不能显示实时的数据库记录我看到dbgrid ADOQuery都有refresh方法
但是 一调用就报错!!希望高手指点~~

解决方案 »

  1.   

    你可以不用refresh,用
    AdoQuery.close
    AdoQuery.open
    来从新定位数据集。
      

  2.   

    ADOQuery1.Active := false;
    ADOQuery1.Active := true;
      

  3.   

    应该尽量使用adoquery自带的方法
    第一,只使用一个adoquery
    第二,如果为insert可以使用adoquery1.append方法 post之后可以做到实时显示
    第三,如果为update可以使用adoquery1.edit方法  post之后可以做到实时显示
      

  4.   

    AdoQuery.close;
    AdoQuery.open;
    如果使用的是Access数据库,可以加上Sleep(500);
    ----------------------------------------------------------------
                 花自飘零水自流,一种相思,两处闲愁。
                   此情无计可消除,才下眉头,又上心头。
    ----------------------------------------------------------------
      

  5.   

    可以用refresh,你是不是没定义关键字段(唯一索引)
      

  6.   

    回复人: whythinkwhy(小生) ( ) 信誉:100  2004-10-27 14:38:00  得分: 0  
     
     
       应该尽量使用adoquery自带的方法
    =====================================================
    我不同意小生的意见
    在使用DELPHI提供的数据控件进行数据库操作时,最好用SQL语句操作,对于控件自带的方法,不用也罢,用控件的文件到数据库那里也是要转换为SQL才可以执行,如果有机会可以看一下,李维写的关于DBEXPRESS的一本书,书名我忘了,书里后边几章讲了多种取数据方法优劣的比较  
     
      

  7.   

    最主要的忘了说了,~~~
    用SQL语句进行刷新,即SELECT 重取数据集!
      

  8.   

    你在这个语句(用SQL语句进行刷新,即SELECT 重取数据集!)应该POST哦,否则数据没有写入数据库!
      

  9.   

    ADOQuery1.Close ;
    ADOQuery1.Open ;
      

  10.   

    我是写sql语句 进行数据记录插入的 可以进数据库
    没有用post
    不知道为什么 dbgrid总是只能在每次开启页面的时候读取数据
      

  11.   

    你用sql写的数据插入和更新语句是直接作用于数据库的,但是dbgrid是显示数据的界面,必须从数据库重新提取数据才可以正确再界面上显示,你可以关闭数据集再开启试试