添加新的数据,post后,第一次浏览全部数据时显示的还是旧的数据,再浏览一次后才出现添加后的所有数据,为什么会出现这种现象?该如何解决?

解决方案 »

  1.   

    如果使用append方式post的可以马上看到,如果你执行的是insert语句那需要重新获得记录集才可以看到
      

  2.   

    append的方式是怎么样?
    我用的是insert语句的,重新获得记得是不是要重新连接数据库呢?请说详细些,谢谢,正在学习中
      

  3.   

    用了append方式post后还是不可以马上看,依然要再浏览第二次才看到新的数据;重新获得记录集要怎么操作?
      

  4.   

    要在显示的数据集上进行Append...Post或者Edit...Post才能在Post立刻显示更改之后的结果集。重新获得记录集的操作是Refresh
      

  5.   

    这是我的部分代码:
    ADOTable1.Append;
    ADOTable1.FieldByName('报修时间').AsString:=Edit1.Text;
    ADOTable1.FieldByName('部门').AsString:=Edit2.Text;
    ADOTable1.FieldByName('故障描述').AsString:=Edit3.Text;
    ADOTable1.FieldByName('是否修好').AsString:='否';
    ADOTable1.Post;
    SqlStr:='select * from deji2 ';
         ADOQuery1.SQL.Clear;
         ADOQuery1.SQL.Text:=SqlStr;
         ADOQuery1.Open;
         Label6.Caption:=IntTostr(ADOQuery1.RecordCount);
    ADOQuery1.Last;
    执行后,执行的结果还是旧的记录集,再执行一次SQL,才显示新的数据,应该怎么修改可以立刻显示更改后的数据集?
      

  6.   

    问题没有解决啊,哪位高手帮我看下是什么问题?我用是的TDBGrid来显示数据的,输入新数据后不能立刻显示出新的数据,要第二浏览时才能显示出新的数据,怎么解决?
      

  7.   

    TDBGrid
    ?
    刷新下记录不就成了?
      

  8.   

    代码看起来好象没有问题,你可以这样试,把adotable1连接到tdbgrid,不要执行adoquery1.open,试 一试看,用单步试一试就知道了,很容易解决的问题
      

  9.   

    to fstao:
    AdoTable可以使用到SQL语句的吗?TDBGrid不用AdoQuery连接的话,怎么使用SQL语句?
      

  10.   

    这是一个很基础的问题,我一下不知道如何回答你了,要不你自己看看delphi自带的例子吧,里面有丰富的数据库操作的问题
      

  11.   

    检查一下 ADOTable1.LockType的属性是什么.应该设置为 ltOptimistic,如果是ltBatchOptimistic,不能用POST,应该用UpdateBatch
      

  12.   

    用TTable控件试试.假设表名table1 : TTable;
    把table1的AutoRefresh属性设置为True.
    然后你插入数据并post后,执行如下语句:
    if table1.Active then
      table1.Active := False;
    table1.Active := True;
    这样就应该可以更新数据了.
      

  13.   

    为什么用了两种数据库控件呢ADOTable1,ADOQuery1
    改成一种统一的吧.
    SqlStr:='select   *   from   deji2   '; 
              ADOQuery1.SQL.Clear; 
              ADOQuery1.Close;
              ADOQuery1.SQL.Text:=SqlStr; 
              ADOQuery1.Open; 
    少了一个ADOQuery1.Close;
      

  14.   

    是在GRID里面不能直接看到你的數據,還是在數據庫里面呀。要說清楚
      

  15.   

    可能跟你设置的translation有关系!
      

  16.   


    SqlStr:='select * from deji2 ';
         ADOQuery1.Close; 
         ADOQuery1.SQL.Clear; 
         ADOQuery1.SQL.Text:=SqlStr; 
         ADOQuery1.Active:=true;
         ADOQuery1.Open; 
         Label6.Caption:=IntTostr(ADOQuery1.RecordCount); 
    ADOQuery1.Last; -----------------
    只要设置好adotable,datasource,dbgrid这间的属性就可以了
      

  17.   

       这个问题解决了,是由于我设置数据库连接时用的分别是adotable和adoquery两个连接开关,导致ddbgrid不能及时更新,现在把数据库连接统一交给AdoConnection,adotablet和adoquery都指向它后数据立即更新显示的问题解决了。
       现在又出现了一个问题,由于在实验连接数据库时进行了一次错误的连接,现导致每次添加新数据后都变成了是在第一条记录前面添加,而不是在末尾添加纪录,重新按正确连接数据库后,现象依然,不知为什么出现这种问题,怎么解决?高手赐教啊
      

  18.   

    这个应该是你的sql语句的排序问题了吧,如果不是,你也可以试一下用order by试一下。