如果有一个字符串比如str:=‘姓名 张三’,str的内容未知,但格式为‘¥¥ ××’,怎样利用ADOQuery.SQL.Add(select * from table where....)来查询呢?其中,¥¥为table中的一列的名称,××为其对应的内容。
  另外,当要查询的表名也为一个变量时又该怎么办呢?

解决方案 »

  1.   

    ss:string;
    ss='select * from '+表名变量+' where '+列名变量+'=姓名 张三';
    adoquery.sql.add(ss);
      

  2.   

    按一楼的意思,应该是这样,但是其中有好几个语法错误,大概意思是说表名和列名不能以变量的形式来写,不知道具体应该怎样才能实现?procedure TForm1.Button1Click(Sender: TObject);
    var
      s,table,rowname:string;
    begin
      table := '人口查询';
      rowname := '姓名';
      s := 'select * from'+ table + 'where' + rowname + '=' + #39+'刘玉涛'+#39;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(s);
      ADOQuery1.Open;
      ADOQuery1.Prepared;  s:=ADOQuery1.FieldByName('身份证').AsString;
      memo1.Lines.Add(s);
    end;
      

  3.   

    对楼主在楼上的代码提点建议:
    1、不要用table这样的保留关键词做变量名。
    2、要注意SQL语句中的空格(你可以把你赋值后的S显示一下看一看,是不是你想要的串)。
    大体给你改一下楼上的代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,tbName,rowname:string;
    begin
      table := '人口查询';
      rowname := '姓名';
      s := 'select * from  '+ tbName + '  where  ' + rowname + '=' + #39+'刘玉涛'+#39;
      ADOquery1.close;  
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(s);
      ADOQuery1.Open;
      //ADOQuery1.Prepared;  s:=ADOQuery1.FieldByName('身份证').AsString;
      memo1.Lines.Add(s);
    end;