sql的高手都到哪去了,这个子查询在赋值时怎么老是出错呀!急。急呀,我调试了一个多星期都搞不出 ,怪怪怪事呀,大家都进来看一下 ( 积分: 50 )

  • 主题发起人 主题发起人 方英龙
  • 开始时间 开始时间
你可以找个 kids 的值在 SQLplus 里查询看看是不是真的没有结果。
 
都是高手啊,我是初学者~~~~
来看看大哥们的解释,小弟有很多库函数都不知道,哎,难啊
 
似乎是delphi的bug,
我也遇到过,没办法直接拼字符串,
同样的语句在dbx里就通过。
 
其实这是个很简单的问题,你分2步做先看子查询有没有结果:
With adoquery1 do begin
close; //-强烈建议用quotedStr函数,句子清晰
sql.Text:='select d_id from hw_d where k_id='+quotedStr(kids);
open;
end;
如果确实有记录返回,再改SQL语句:
With adoquery1 do begin
close; //-强烈建议用quotedStr函数,句子清晰
sql.Text:='select gbxm from hw_gb where d_id in '
+'(select d_id from hw_d where k_id='+quotedStr(kids)+')';
open;
end;
如果还是没数据,说明你的数据库中本身就没有记录
 
你的kidh是怎么定义的,是不是定义的strings,建议改成shortstrings;
 
adoquery1.SQL.Add('select gbxm from hw_gb where d_id=(select d_id from hw_d where k_id=:kidh)');

adoquery1.SQL.Add('select gbxm from hw_gb where d_id in (select d_id from hw_d where k_id=:kidh)');

或者,不要寫這麼長,再寫一個
adoquery1.sql.add('--------');
 
后退
顶部