delphi嵌套sql中字字符條件的處理﹖ ( 积分: 50 )

  • 主题发起人 主题发起人 hhmyz
  • 开始时间 开始时间
H

hhmyz

Unregistered / Unconfirmed
GUEST, unregistred user!
adoquery2.sql.add('select * from table1 a,('''+adoqueyr1.sql.text+''') as b
where a.cardno=b.cardno');
此時如果adoquery1.sql.text里含有depart='物料部'或depart='matadept'都會有錯﹐
如果處理。
 
adoquery2.sql.add('select * from table1 a,('''+adoqueyr1.sql.text+''') as b
where a.cardno=b.cardno');
此時如果adoquery1.sql.text里含有depart='物料部'或depart='matadept'都會有錯﹐
如果處理。
 
问题没有描述清楚。
 
也就是說只要里面的''之類的符號就會錯。
 
不会阿,在sql的text里,用''表示',个数要对了,不会有问题,我用过很多了
 
例如:sql语句为select * from table1 where a='aa'
则sql.text为:'select * from table1 where a=''aa'''
 
我建議你可以采用如下方式試試:
var sql:string;
sql:='select * from table a,quotedstr(adoqueyr1.sql.text) as b where a.cardno=b.cardno';
adoquery2.sql.add(sql);
 
quotedstr()是干什么的
 
quotedstr就是字符串前后加引号,相当于把''变成''''
给楼主的建议是设置个断点把SQL语句取出来看看
 
同意chenybin的做法,showmessage出来看看语法哪里错了
 
哈哈﹐大家都實際的試了么﹖
adoquery1.sql.text本身絕對沒有錯﹐
如﹕adoquery1.sql.text在用showmessage顯示時是select * from table1 where depart='物料部'。
當放于下面中
adoquery2.sql.add('select * from table1 a,('''+adoqueyr1.sql.text+''') as b
where a.cardno=b.cardno');
大家試一下﹐會不會出錯。
 
其实你可以这样做,只是把加号放到合适的位置就可以了!由你的变成
adoquery2.sql.add('select * from table1 a,('''+adoqueyr1.sql.text+''') as b
where a.cardno=b.cardno');
我的adoquery2.sql.add('select * from table1 a,('+''adoqueyr1.sql.text''+') as b
where a.cardno=b.cardno');应就没问题了吧!
 
adoquery2.sql.add('select * from table1 a,('''+adoqueyr1.sql.text+''') as b
where a.cardno=b.cardno');
哦﹐是搞糊涂了。應是
adoquery2.sql.add('select * from table1 a,('+adoqueyr1.sql.text+') as b
where a.cardno=b.cardno');才是對的。
 
后退
顶部