ADOQuery怎么不能将字段做为参数进行传递?
列如:
ADOQuery的SQL语名为: select :sField form tableName;
这样执行
  ADOQuery1.Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
  ADOQuery1.Open;
会出错,为什么?

解决方案 »

  1.   

    打错了 select :sField from tableName
      

  2.   

    var 
    ss,ssql:string
    begin
      
       ssql:='select '''+ss+''' from table;
        ss:='';
         query.sql.open(ssql);
    end
      

  3.   

    这样好像不行的,你试这样行不行:
    txtsql:string;
    tmpstr:string;
    tmpsrt:='Name,Addr';
    txtsql:='select '+tmpstr+' form tableName';
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.text:=txtsql;
    adoquery1.open;
      

  4.   

    用这个试试,txtsql+\:='select '+quotedstr(name)+','+quotedstr(addr)+'from tablename';
      

  5.   

    如果是参数的话也不应是
    ADOQuery1.Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
    里面不就加‘:’
    可以用这样
    m:='Name,Addr';
    sql.text='select'+m+' from tablename'; 
      

  6.   

    ADOQuery1.Parameters.ParamByName(':sFiled').Value := 'Name,Addr'
    应该为
    ADOQuery1.Parameters.ParamByName('sFiled').Value := 'Name,Addr';
      

  7.   

    你试试这个:
     with ADOQuery1 do
      Begin
       Sql.Clear;
       Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
       Prepared; 
       Open;
      End;
      

  8.   

    试了一下,还查了一下,字段在QUREY编辑器里面好象不能作为参数
    那样的话只能用拼凑SQL语句的方法来实现你的功能了
    var 
      sql,sfieldname:string;
    begin
        sfieldname := 'Name,Addr';
        sql:='select' + sfieldname + 'from table';
      .
      .
      

  9.   

    这样应该可以吧~
    Edt1.text,Edt2.text为字段名称()   with  Adoquery1,Sql  do begin
         Clear;
         Add(Format('select %s,%s from table1',[Edt1.text,Edt2.text]));
         try
           Open;
         Except
           Raise; Exit;
         end; 
       end;