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;
构造动态字符串 'select * from '+tablename;这样是正确的
只要进行字符串相加就行了: sql.add('select * from '+ tablename');
Sql.Add(Format('select * from %s ',[TableName]));
简单问一下,怎么读取sql里的变量到edit中,如要读取@name
算你运气好,因为你问的问题曾经困绕了我整整半个月,用'select * from '+tablename; 这个语句基本上是对了,可是你在SQL自动创建的语句中可以发现是这样的,举个例子来说,有一个固定的数据库:成绩表.db,SQL语句为:select * from '成绩表.db' 这样才是对的,同理,应该在你的变量两边加上两个'号 ,具体为:'select * from '+''''+tablename+'''' ,这样保证对,因为已经通过我的实践证明了,多给点分吧,这可花了我不少时间,很少有人能解决这个问题!
with query1 do begin close; sql.clear; sql.add('select * from '); sql.add(table); open; end;
To: yanzifeifei(燕子)其实查询表名称的话,不用加引号就可以了! Query.sql.text:='select Fieldname1,FieldName2... From '+ TableName;但是如果使用动态的查询条件拼接查询的时候,需要加相应的引号,Query.sql.text:='select * from tablename where fieldname1='''+str_cause1+''' and .具体的原因同你所说!!
相应的查询语句是: select * from Tablename (tablename在程序动态制定,但是这不用加引号)select * from tablename where fieldname='111' ('111'在程序中是动态制定的,但是拼接的时候要注意引号的拼接)
也可以这样写吧: query1.close; query1.sql.clear; query1.sql.add('select * from :table'); query1.parambyname('table').asstring:=edittable.text; query1.open; 也可写成: 'select * from '''+edittable.text+''''
to yanzifeifei(燕子) : 其实俺也碰到过类似的问题,俺的解决方法是在变量里加引号,需要的时候就加,不需要就不加。
var
sqlstr,tablename:String;
begin
tablename:='成绩表';
sqlstr='select * from '+tablename;
queyr1.close;
query1.sql.clear;
query1.sql.add(sqlstr);
end;
'select * from '+tablename;这样是正确的
sql.add('select * from '+ tablename');
begin
close;
sql.clear;
sql.add('select * from ');
sql.add(table);
open;
end;
Query.sql.text:='select Fieldname1,FieldName2... From '+ TableName;但是如果使用动态的查询条件拼接查询的时候,需要加相应的引号,Query.sql.text:='select * from tablename where fieldname1='''+str_cause1+''' and .具体的原因同你所说!!
select * from Tablename
(tablename在程序动态制定,但是这不用加引号)select * from tablename where fieldname='111'
('111'在程序中是动态制定的,但是拼接的时候要注意引号的拼接)
query1.close;
query1.sql.clear;
query1.sql.add('select * from :table');
query1.parambyname('table').asstring:=edittable.text;
query1.open;
也可写成:
'select * from '''+edittable.text+''''
其实俺也碰到过类似的问题,俺的解决方法是在变量里加引号,需要的时候就加,不需要就不加。