var str1,str2:string;
  begin
    str1:=Name;//把字段名Name赋给变量str1
    str2:=张三;//把查询条件张三赋给变量str2
    query1.close;
    query1.sql.clear;
    query1.sql.add('select * from T1 where ''%'+str1+'%'' like ''%'+str2+'%''');
    query1.open;
  end;
为什么查询不出结果,是不是那里有错误呀,两处都需要用到变量,请高手指点。

解决方案 »

  1.   

    改成
    query1.sql.add('select * from T1 where '+str1+' like ''%'+str2+'%''');
      

  2.   

    var str1,str2:string;
      begin
        str1:='Name';//把字段名Name赋给变量str1
        str2:='张三';//把查询条件张三赋给变量str2
        query1.close;
        query1.sql.clear;
        query1.sql.add('select * from T1 where '+str1+' like '+Quotedstr('%'+str2+'%'));
        query1.open;
      end;
      

  3.   

    强烈建议把参数单独写出来赋值,这样的程序维护的时候,容易一些。   str1:=Name;//把字段名Name赋给变量str1
      with Query1 do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from T1 where '+str1+' like :#aa');
        Params.ParamByName('#aa').Value := '%张三%';
        open;
      end;
      

  4.   

    TO:wudi_1982(︻┳═一) 
    再次请教,如果我用ComboBox1.Text来代替变量str1,用Edit1.Text来代替变量str2那用你的方法如何写代码,请指点。
      

  5.   

    str1:=ComboBox1.Text;//从COMBOBOX1中取得字段名赋给变量str1
      with Query1 do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from T1 where '+str1+' like :#aa');
        Params.ParamByName('#aa').Value := edit1.text;//edit1.text为你的%张三%
        open;
      end;
      

  6.   

    str1:=ComboBox1.Text;//从COMBOBOX1中取得字段名赋给变量str1
      with Query1 do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from T1 where '+str1+' like :#aa');
        Params.ParamByName('#aa').Value := '%'+edit1.text+'%';//edit1.text为你的张三
        open;
      end;