ADOQuery怎么不能将字段做为参数进行传递?
列如:
ADOQuery的SQL语名为: select :sField form tableName;
这样执行
ADOQuery1.Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
ADOQuery1.Open;
会出错,为什么?
列如:
ADOQuery的SQL语名为: select :sField form tableName;
这样执行
ADOQuery1.Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
ADOQuery1.Open;
会出错,为什么?
ss,ssql:string
begin
ssql:='select '''+ss+''' from table;
ss:='';
query.sql.open(ssql);
end
txtsql:string;
tmpstr:string;
tmpsrt:='Name,Addr';
txtsql:='select '+tmpstr+' form tableName';
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.text:=txtsql;
adoquery1.open;
ADOQuery1.Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
里面不就加‘:’
可以用这样
m:='Name,Addr';
sql.text='select'+m+' from tablename';
应该为
ADOQuery1.Parameters.ParamByName('sFiled').Value := 'Name,Addr';
with ADOQuery1 do
Begin
Sql.Clear;
Parameters.ParamByName(':sFiled').Value := 'Name,Addr';
Prepared;
Open;
End;
那样的话只能用拼凑SQL语句的方法来实现你的功能了
var
sql,sfieldname:string;
begin
sfieldname := 'Name,Addr';
sql:='select' + sfieldname + 'from table';
.
.
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;