上次感谢各位的帮忙,希望各位不要因为我因 过圣诞没空上网而晚解贴给分 而产生情绪这次又有个问题请教大家:
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('select * from :table');
adoquery.parameters.ParamByName('table').Value := 'user' + 'table';
adoquery.open;
执行adoquery.open是弹出异常提示“invalid table name”,我修改成如下时,正确执行,如果我一定要用adoquery的parameter参数时,我应该怎么修改这个问题?
strtable := 'usertable';
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('select * from ' + strtable);
adoquery.open;

解决方案 »

  1.   

    好像不能那样用,你可以定义一个变量,如
    var
      ls_sql,strtabel:string;
    begin
      ls_sql:='select * from'+strtable;
      adoquery.close;
      adoquery.sql.clear;
      adoquery.sql.add(ls_sql);
      adoquery.open;
    end;
    这样你每次的SQL就会根据自己的需要改变了
      

  2.   

    改成:
    strtable := 'usertable';
    adoquery.close;
    adoquery.sql.clear;
    adoquery.sql.add('select * from '''+strtable+''' ');
    adoquery.open;每次把你要查询的表名赋值给strtable  就可以了
      

  3.   

    或:
      with adoquery1 do
        begin
          close;
          sql.clear;
          sql.add('select * from '+edit1.text);///
          sql.open;
        end;
      

  4.   

    试试加行
    adoquery.close;
    adoquery.sql.clear;
    adoquery.sql.add('select * from :table');
    adoquery.prepare;
    adoquery.parameters.ParamByName('table').Value := 'user' + 'table';
    adoquery.open;
      

  5.   

    adoquery.close;
    adoquery.sql.clear;
    adoquery.sql.add('select * from :table');
    adoquery.parameters.ParamByName('table').Value := 'usertable';
    adoquery.open;