嵌套查询的问题--很有挑战性(5分)

  • 主题发起人 主题发起人 xuzhic2001
  • 开始时间 开始时间
X

xuzhic2001

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中有下面几句
with queryjg do
begin
close;
sql.Clear;
sql.Add('select * from a_jiagebiao where kehuming in(select mingcheng from a_kehuxinxi where suozaizu like '''+strzu+''')');
open;
end;
strzu为一个公用变量,可是在执行open 的时候出现Capability not supported。请问高手怎么解决
 
如果是变量的话,一般用4个单引号括起来,应该是这样:
with queryjg do
begin
close;
sql.Clear;
sql.Add('select * from a_jiagebiao where kehuming in(select mingcheng from a_kehuxinxi where suozaizu like '+''''+strzu+''''+')');
open;
end;
 
问题还是存在啊
 
where suozaizu like '+'''%' + strzu + '%''' + ')');
 
好象不是代码的问题,如果我把queryjg的requestlive的属性设置为false就没有这个问题了,可是那样的话我的queryjg也就不能编辑了,不知道到底是什么原因?
 
strzu要是String类型,如果是编译一定是可以通过的。
还有我建议是这样写:
with queryjg do
begin
close;
sql.Clear;
sql.Add('select * from a_jiagebiao where kehuming in(select mingcheng from a_kehuxinxi where suozaizu like '+QuotedStr(strzu)+')');
open;
end;
 
不是语句的问题,好象听说是delphi不支持 where in的写法,requestlive设置为false 就没有问题了,可是若为false,就不能编辑queryjg 了啊
 
在线等,请各个高手帮助
 
好象确实是in的问题,兄台你可以换一种写法,如下:
select * from a_jiagebiao where exists (select 1 from a_kehuxinxi
where mingcheng=a_jiagebiao.kehuming and suozaizu like '+quotedstr(strzu))
这个语句我没有测试过,可能需要修改,不过意思就是用exists代替in,兄台自行修改一下看看。
 
你应该先把 strzu 这个设置一个值,不然访问就会出问题哈
 
问题依旧存在,我用ADOQUERY实验了下就没有 任何问题,可能是BDE的问题,我已经换成别的解决方式了
 
后退
顶部