如下代码: 数据库名通过参数来传递,但没有起作用,使用MEMO1调试得到的结果仍然是:
select * from  :parm1    参数传递的内容没有起作用,因此:报 from 字句语法错误。      X_Table_Name:='country';
      with ADOQuery1 do
      begin
        SQL.Clear;
     //  SQL.Add('select * from  country '  );
        ADOQuery1.SQL.Add('select * from  :parm1 '  );
        ADOQuery1.Parameters.ParamByName('parm1').Value:=X_Table_Name;
        Memo1.Text := ADOQuery1.SQL.Text;
        Open;
      end;

解决方案 »

  1.   

    查询的表名称不能带参数的,参数只能在where之后,比如where ID=:param1...
    你试试这样:
    var
      sql:string
    ...............
      sql:='select * from '+X_Table_Name;
      ADOQuery1.SQL.Add(sql);
    ...............
    如果还不行,就写个if语句判断吧
    if X_Table_Name='country' then
       being
         ADOQuery1.SQL.Add('select * from country');
         ....
       end
      

  2.   

    樓主你可以這麼寫:      X_Table_Name:='country';      with ADOQuery1 do
          begin
            SQL.Clear;
            ADOQuery1.SQL.Add(format('select * from %s ',[X_Table_Name] ));
            //   ADOQuery1.Parameters.ParamByName('parm1').Value:=X_Table_Name;  這個參數不用要啦
            Memo1.Text := ADOQuery1.SQL.Text;
            Open;
          end;