比如要select * from table,但是table是变量!

解决方案 »

  1.   

    Procedure TForm1.button1Click(Sender:TObject);
    var
      sqlstr,tablename:String;  
    begin
    tablename:='成绩表';
    sqlstr='select * from '+tablename;
    queyr1.close;
    query1.sql.clear;
    query1.sql.add(sqlstr);
    end;
      

  2.   

    构造动态字符串
    'select * from '+tablename;这样是正确的
      

  3.   

    只要进行字符串相加就行了:
    sql.add('select * from '+ tablename');
      

  4.   

    Sql.Add(Format('select * from %s ',[TableName]));
      

  5.   

    简单问一下,怎么读取sql里的变量到edit中,如要读取@name
      

  6.   

    算你运气好,因为你问的问题曾经困绕了我整整半个月,用'select * from '+tablename; 这个语句基本上是对了,可是你在SQL自动创建的语句中可以发现是这样的,举个例子来说,有一个固定的数据库:成绩表.db,SQL语句为:select * from '成绩表.db'  这样才是对的,同理,应该在你的变量两边加上两个'号 ,具体为:'select * from  '+''''+tablename+'''' ,这样保证对,因为已经通过我的实践证明了,多给点分吧,这可花了我不少时间,很少有人能解决这个问题!
      

  7.   

    with query1 do
    begin
       close;
       sql.clear;
       sql.add('select * from ');
       sql.add(table);
       open;
    end;
      

  8.   

    To:  yanzifeifei(燕子)其实查询表名称的话,不用加引号就可以了!
    Query.sql.text:='select Fieldname1,FieldName2...  From '+ TableName;但是如果使用动态的查询条件拼接查询的时候,需要加相应的引号,Query.sql.text:='select * from tablename where fieldname1='''+str_cause1+''' and .具体的原因同你所说!!
      

  9.   

    相应的查询语句是:
    select * from   Tablename
                (tablename在程序动态制定,但是这不用加引号)select * from tablename where fieldname='111'
                                      ('111'在程序中是动态制定的,但是拼接的时候要注意引号的拼接)
      

  10.   

    也可以这样写吧:
        query1.close;
        query1.sql.clear;
        query1.sql.add('select * from :table');
        query1.parambyname('table').asstring:=edittable.text;
        query1.open;
    也可写成:
         'select * from '''+edittable.text+''''
      

  11.   

    to yanzifeifei(燕子) :
      其实俺也碰到过类似的问题,俺的解决方法是在变量里加引号,需要的时候就加,不需要就不加。
      

  12.   

    还有简单的一种方法,用Format函数好了,不管是什么,赋值就好了!