咨询函数参数传递问题
我的表单有5个下拉框,每个下拉框都从数据库表填充其ITEMS,我想写一个函数来实现,函数如下(上帖函数的错误已纠正):
问题:
下面get_list函数已经正确,但是,调用函数时却出错了,不知道怎么修改,即:
get_list('table1',dls); //执行到该句时为什么出错,提示:不正常地定义参数对象。提供了不一致或不完整的信息。
参数说明:
'table1'是ORACLE的一个表名
dls是下拉框的name值,类型为TComboBox
get_list函数如下:
procedure TForm3.get_list(ta:string; xlk:TComboBox);
//ta ---- ORACLE表名
//xlk ---- TComboBox类型的下拉框
begin
adoquery1.Connection:=datamodule2.to_xdcx;
with adoquery1 do
begin
Close;
form3.ADOQuery1.sql.Clear;
form3.ADOQuery1.sql.Add('SELECT * FROM :ta WHERE state=''F0A''');
form3.ADOQuery1.open;
form3.ADOQuery1.first;
while not eof do
begin
xlk.Items.Add(fields[0].asstring);
next;
end;
xlk.itemindex:=0;
end;
end;
[解决办法]
form3.ADOQuery1.sql.Add('SELECT * FROM :ta WHERE state=''F0A''');改成
form3.ADOQuery1.sql.Add('SELECT * FROM ' + ta + 'WHERE state=''F0A''');
[解决办法]
delphi表名不可作为SQL参数传递的
且你程序中没的定义参数
form3.ADOQuery1.sql.Add('SELECT * FROM ' + ta + ' WHERE state=:stat'
ADOQuery1.Parameters.ParamByName('stat').Value:=Quotedstr('F0A'); //这个可以