table.filter := number字段=123;  table.filtered := true;

解决方案 »

  1.   

    错了,而且我的Filter不止一个条件
      

  2.   

    table.filter:='Name=''www'' and Place=''BBB'''  可以 
    table.filter:='Name=''www'' and Place=''BBB'' and num=2001'  不行
    其中字段'Name','Place'为varchar2类型,'num'为number类型
    我在delphi端为num赋整数值(integer),为'Name','Place'赋字符类型值(string)
    以上只是个例子,效果与实际一样
      

  3.   

    table.filter:='Name=''www'' and Place=''BBB'' and num=''2001'''  
    试一下
      

  4.   

    提示出什么错误???  
    试试:
    table.filter:='Name=''www'' and (Place=''BBB'') and (num=2001)';
      

  5.   

    在sql server中,num=''2001''是可以的,至少我的程序是这样写的
      

  6.   

    把你的filter语句直接拿到sql explorer中执行一下,错误的提示不是针对你的语句吧
      

  7.   

    直接写不行吗?
    比如Table1.Filtered := False ;
    Table1.Filter := 'num = 1 and ---' ;
    Table1.FIltered := True ;
    是定值Var
            Num_1 : Real ;
    ------+++
    Table1.Filtered := False ;
    Table1.Filter := 'num = ' + CurrToStr( Num_1 ) +  ' and ---' ;
    Table1.Filtered := True ;
    是动值
      

  8.   

    谢谢各位!to: Nizvoo(瓦匠泥) 你好,直接写我试过了,但windows2000下没问题,win98不行,好像Filter的语法是和数据库的SQL相关的。我现在已经已经解决了,用的是OnFilterRecord,不过罗嗦了一点,用了好几个判断语句(多条件查询)。
     例子如下:
    procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
    begin
        Accept := False;
        If DataSet.FieldByName('year').AsInteger<>2001 Then Exit;
        If DataSet.FieldByName('month').AsInteger<>08 Then Exit;
        If DataSet.FieldByName('Dept').AsString<>'办公室' Then Exit;
        Accept := True;
    end; 
      

  9.   

    OnFilterRecord的缺点:慢
    OnFilterRecord的优点:弹性强