我的表单有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;

解决方案 »

  1.   

    form3.ADOQuery1.sql.Add('SELECT * FROM :ta WHERE state=''F0A''');改成
    form3.ADOQuery1.sql.Add('SELECT * FROM ' + ta + 'WHERE state=''F0A''');
      

  2.   

    form3.ADOQuery1.sql.Add('SELECT * FROM :ta WHERE state=''F0A''');改成
    form3.ADOQuery1.sql.Add('SELECT * FROM ' + ta + ' WHERE state=''F0A''');
      

  3.   

    delphi表名不可作为SQL参数传递的
    且你程序中没的定义参数
    form3.ADOQuery1.sql.Add('SELECT * FROM ' + ta + ' WHERE state=:stat'
    ADOQuery1.Parameters.ParamByName('stat').Value:=Quotedstr('F0A'); //这个可以