sql语句中的变量代入转义问题,在线等候高手回答!(100分)

B

blhappy

Unregistered / Unconfirmed
GUEST, unregistred user!
因为我的程序中用到多个表,我想用一个循环实现代入表名,下面是程序的一部分:
a[0]:='nn'//nn是数据库中的表名;
a[1]:='mm'
.....
a[4]:='kk'
for k:=0 to 4 do
begin
bb:=a[k];

with adoquery1 do
....
select 劳务费 from '+''''+bb+''''+' where 人员='+'''张三'''+'';
...
但是在执行时出现了“incorrect syntax near 'nn'”的错误提示,请高手指点解决方法,
万分感谢!

 
select 劳务费 from '+bb+' where 人员='+''''+'张三'+'''';
 

select 劳务费 from '+''''+bb+''''+' where 人员='+'''张三'''+'';

改成
select 劳务费 from '+bb+' where 人员=''张三''';

就OK了.
 
a[0]:='nn'//nn是数据库中的表名;
a[1]:='mm'
.....
a[4]:='kk'
for k:=0 to 4 do
begin -> //对应的end;在什么位置
bb:=a[k];

with adoquery1 do
....
select 劳务费 from '+''''+bb+''''+' where 人员='+'''张三'''+'';
...
另外表名之间应用,号分隔吧?
a[0]:='nn, '//nn是数据库中的表名;
a[1]:='mm, '
.....
a[4]:='kk'

 
DZHZH2000和xksyhjb的做法是对的。你的写法SQL会把括号内('nn')的内容作为表名来用,而表名
中是不允许含有“'”的,所有有了你上面的错误提示:语法错误!
 
表名不用加带双引号所以
select 劳务费 from '+bb+' where 人员='+'''张三'''+'';
 
表名不用加带双引号所以
'select 劳务费 from '+bb+' where 人员='+ #39 + '张三' + #39;
即可
 
注意引号的写法:
'select 劳务费 from '+bb+' where 人员=''张三''';
 
delphi的字符串里面用两个单引号表示一个单引号
彻底弄清楚这句话,呵呵,记住要彻底
不要在写程序的时候4个单引号不行改成3个,3个不行改成2个......
靠暴力去编程
 
说说是什么数据库 ?
http://www.delphibbs.com/delphibbs/dispq.asp?LID=1510723
 
...在DELPHI里面
一般不用'''这种东西去当引号。。既难看又容易出错
DLEPHI有一函数QUOTEDSTR就是专门用来给字符加引号的,为什么你们都不用。。
'select 劳务费 from '+bb+' where 人员='+quotedstr('张山');
 
你可以这样试试
select 劳务费 from '''+bb+''' where 人员='''+张三+''';
 
顶部