我用了一个Table控件和DBGrid控件,我想在DBGrid控件中动态的显示符合条件的记录!但是我不知道怎么实现?请前辈指教!

解决方案 »

  1.   

    可以更改Table 的 Filter 属性,就是对结果过滤。
    也可以换用Query,修改它的SQL属性。
      

  2.   

    同意楼上!
    with adoquery do
    begin
      close;
      sql.clear;
      sql.add('select * from table where ...');
      open;
    end;
    dbgrid.datasource := adoquery;
      

  3.   

    能说的更具体一点吗?
    我是菜鸟!
    我有点不太明白,能麻烦你给写个例子吗?如何修改Filter的属性阿!
    谢谢了!希望前辈指教!
      

  4.   

    来晚了,swayi21(微斯人) 说的对,俺来混点分,嘻嘻……
      

  5.   

    //假设你要显示所有id=1并且nd=38的记录
    table1.Active:=false;
    table1.Filter:=('id=1 and nd=38');
    table1.Filtered:=true;
    table1.Active:=true;
      

  6.   

    为何不用sql语句,多方便,
    table1.filter:='fieldname='''+edit1.text+'''';
    table1.filtered:=true;
    字符串区分大小写。
      

  7.   

    我现在已经可以用Table动态的显示了,但是又发生了这样一个问题!
    就是,现在的查询条件只能是数字,要是用字符的话就提示找不到!但是在数据库中那条记录是存在的!(我的代码如下,有什么地方写的不对,请指正谢谢!)with DM do
         begin
           JTable.Active := False;
           JTable.Filter := 'jcid='+jbmEdit.Text+' or jcunit='+jdwEdit.Text+'';
           JTable.Filtered := True;
           JTable.Active := True;
         end;
      

  8.   

    改为:
    with DM do
         begin
           JTable.Active := False;
           JTable.Filter := 'jcid='+''''+jbmEdit.Text+''''+'(空格)or '+ '  jcid='+''''+jdwEdit.Text+'''';
           JTable.Filtered := True;
           JTable.Active := True;
         end;
      

  9.   

    我觉得还是用SQL语句比较好
    使用filter要把所有的记录取回来先,数据比较多的时候会比较慢