出错语句如下:
t_outbase.Filter:='oid='+q_outbase_list['出库号'];
其中oid为smallint型,q_outbase_list['出库号']为查询返回的字段值。
我分析是数据类型不匹配所致,但对于filter表达式中数值型如何表示?
q_outbase_list的sql语句为:select oid as 出库号,

解决方案 »

  1.   

    t_outbase.Filter:='oid='+q_outbase_list['出库号'].Asstring;
      

  2.   

    这个问题嘛,你的查询结果没有值。或者应该是
     t_outbase.Filter := 'oid=' + q_outbase_list.FieldByName('出库号').asstring;
      

  3.   

    t_outbase.Filter := 'oid=' + strtoint(q_outbase_list.FieldByName('出库号').asstring);
      

  4.   

    试试这样行吗?
    t_outbase.Filter:='出库号'='+q_outbase_list['出库号'];
      

  5.   

    用这个应该可以了:
    t_outbase.Filter := 'oid=' + q_outbase_list.FieldByName('出库号').asstring;
      

  6.   

    t_outbase.Filter:='oid='''+q_outbase_list['出库号'].Asstring+'''';
    filter为字符串型,int型的怎么可以 呢?
      

  7.   

    各位大侠以上方法均不好用,现在提出两个问题:
    1。sql语句返回各字段值是否与表中字段值一致?
    2数值型filter表达式如何书写
      

  8.   

    你想表达的意思我明白,可以不在table.filter中写,你可以在table的事件filterrecord中写,
    事例如下:
    procedure TForm1.t_outbaseFilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    begin
      if strtoint(t_outbase.fieldbyname('oid').asstring)=
    strtoint(q_outbase_list.FieldByName('出库号').asstring) then
      accept:=true;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      t_outbase.filtered:=true;//设置使打开。
      t_outbase.close;
      t_outbase.open;
    end;
    你试试看看效果就可以了