我的数据库中有多个格式相同的表(每年生成一个),如b2001,b2002,b2003,我在程序运行时需要来回切换表名,可是程序中有好多处的sql语句中,都有select * from b2003 这样的语句,用手工改动太麻烦了,能不能这样写 select * from 变量名  ,然后我只要在一个地方改变这个变量的值就可以了,不知怎样设定??
各位高手还有别的办法请一并告知。

解决方案 »

  1.   

    可以呀!
    AdoQuery.SQL.Text := 'select * from '+ myTable;
      

  2.   

    当然可以:
    var 
      TableName:string;
    begin
      TableName:='b2003';
      ...
      ADoQuery1.SQL.Text:='select * from '+TableName;
    end;
      

  3.   

    var 
      TableName:string;
    begin
      TableName:='b2003';
      ...
      ADoQuery1.SQL.Text:='select * from '+TableName;
    end;
      

  4.   

    如果是在存储过程中:
    select @Str='select * from '+@TabName
    Exec(@Str)
      

  5.   

    谢谢各位的帮助和批评,但是,我想在属性中的sql中直接填入'select * from '+TableName;
    这时系统报错:“tablename没有变量定义”,我在unit中定义了它也不认,怎么办?
      

  6.   

    可以用变量,变成一个字符串再加到QUERY里,但不能作为参数
    表名与字段是不能用参数的
      

  7.   

    不能在控件的属性里写,在程序中用语句来写,在用到的时候 ,用凡MYTABLE记录下来表名,再用上面说的语句,来执行
      

  8.   

    Delphi的变量不能在AdoQUery的SQL属性中使用的,因为它实在运行时被创建的,编译的时候还没有创建,所以不能使用。