我想将edit1.text中的内容作为查询条件,使用table中的Filter属性,直接在其中写id=edit1.text显然不行,我看到有一种是id=:id,1)但我不清楚:id的意义,2)而且不知如何进行定义,3)是否用query能更快的解决。请指教。谢谢!

解决方案 »

  1.   

    你的动态查询是什么意思?是输入条件查询么?
    那样你直接使  字段名='''+Edit.text+''' 不行么?
      

  2.   

    id是一个参数,不用定义
    用filter
    procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    begin
      if dataset.FieldValues['id']=form1.Edit1.Text then
        accept:=true
      else
        accept:=false;
    end;
    用query
    query1.close;
    query1.sql.clear;
    query1.sql.add('select * from talbename where id=:id');
    query1.parambyname('id').value:=edit1.text;
    query1.open;
      

  3.   

    1、直接使用字段名='''+Edit1.text+''' ,将active设置为true时报错“capability not supported.”。问为什么一边要加三个单引号
    2、"id是一个参数"是什么意思,如3,如何给id赋值呢?
    3、我想在maskedit中onEdit实现动态查询如下:
    procedure form1.MaskEdit1Exit(Sender: TObject);
    begin
      with table1 do
      begin
        filter:='sta_cod=:id';
        filtered:=true;
        open;
        if RecordCount<>1 then
        begin
          close;
          showmessage('编号无效,请重新输入!')
        end;
      end;
    end;
    我想让id指向MaskEdit1.text,请问id如何定义。
      

  4.   

    1.在delphi里,一对引号内若有单引号,则该单引号用两个单引号表示。
    使用filter:
        with table1 do    
        begin
        Filtered :=false;
        Filter :='字段名='+edit1.Text;
        Filtered :=true;
        end;2.在SQL参数化查询里,id是一个参数,不用定义,直接使用。3.使用SQL参数化查询:
        with query1 do
        begin
        close;
        sql.clear;
        sql.add('select * from tablename where id=:id');
        parambyname('id').value:=maskedit1.text;
        open;
        end;