当我在dbgrid里显示出很多条附合条件数据时,其它用户改变了数据库的一条或多条数据.这时可能dbgrid里的有些记录已经是不附合条件的了.所以要自动去掉.怎么实现.

解决方案 »

  1.   

    同意 yoic(我是一棵菠菜,菜,菜,菜,菜,菜,菜)
      

  2.   

    楼上说的对,显示数据时把dbgrid对应的Tdataset用refresh更新就可以啦
      

  3.   


    DBGrid1.DataSouce.DataSet.Refresh;orDBGrid1.DataSouce.DataSet.Close;
    DBGrid1.DataSouce.DataSet.Open;
      

  4.   

    目前我没有好的方法,要不在dbgrid旁边加个刷新按钮,然后每隔30秒刷新一次吧。还有一个想法:就是在服务器端做个小程序,频繁检查数据库的日志,如果有修改某表的记录就发消息给用到该表的Application,让dbgrid刷新。是不是异想天开了?请高人指点。谢谢!
      

  5.   

    放一个Timer,每隔一段时间就将DBGrid的DataSource.DataSet----->Query刷新一下
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Query1.Close;
      Query1.Open;
    end;
      

  6.   

    由客户自己设定时间间隔,10秒,20秒,30秒,
    设Timer的interval属性:1000为1秒。
      

  7.   

    我认为你可以在让用户输完查询条件后设置刷新,比如文本框的exit事件,单选或复选框的cllck事件等
      

  8.   

    Query1.active:=false;
      Query1.active:=true;
      

  9.   

    搞来搞去就是那些玩意儿,你们这些呀儿不觉得烦啊,跟老子一起改行啊,有空聊聊
    [email protected]
      

  10.   

    是多客户端吗?如果是只需要在里边加一个TIMER的控件,然后爱控件里边写Query1.active:=false;
      Query1.active:=true;
    设置一下时间就好了
    或者用
    WHILE TRUE DO
    BEGIN
    Query1.active:=false;
    Query1.active:=true;
    SEELP(6000);
    END;
    调用它
      

  11.   

    在两层的结构中可以使用refresh来处理,在三层中就不行了,只有用close,open dataset
    如果要对应到记录,建议使用标签或者记录号来定位