请问:一个传递SELECT语句中的WHERE条件到函数的问题(50分)

L

liuri

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有一个SQL语句"select f1 from t1 where f2=aa"
在adoquery中为
add('select f1 from t1 where f2=:lcvari');
parameters[0].value:='aa';
但现在我想把它做成一个过程,使用
gsb_Adddata('f1','t1','f2','aa')进行调用,
过程如下:
procedure Tmain.gsb_Adddata(fname,tname:string;condition:string='';variable:string='');
var
sqlcommand,lcvari:string;
AQuery: TADOQuery;
begin
sqlcommand:='select '+fname+' from '+tname;
AQuery:=TADOQuery.Create(nil);
AQuery.Connection:=adoconnection1;
with AQuery do
begin
if condition<>'' then
begin //就下面这两句,不知道应该怎么写
sqlcommand:=sqlcommand+' where '+condition+'=:lcvari';
parameters[0].value:=variable;
end;
Sql.add(sqlcommand);
....
 
with AQuery do
begin
if condition<>'' then
begin
sqlcommand:=sqlcommand+' where '+condition+'=:lcvari';
//放到下边 parameters[0].value:=variable;
end;
Sql.add(sqlcommand);
if condition<>'' then
parameters[0].value:=variable;
 
字符型可考虑加引号:

sqlcommand:=sqlcommand+' where '+condition+'='':lcvari''';
 
看起来没错。
condition 应该是一个字段名吧?
 
哦,明白了,谢谢,这个参数是要在ADD后再能加的啊:)
 
顶部