delphi程序使用adoquery嵌套查询,SQL在SQL SERVER 2000查询分析器执行正确,但在delphi程序中查询无结果

具体如下:我在sqlserver2000的查询分析器执行以下语句:selecttop1*from选择题库where科目名称='数学'and练习='是'and难度='高'a... 具体如下:我在sql server 2000的查询分析器执行以下语句:
select top 1 * from 选择题库 where 科目名称='数学' and 练习='是' and 难度='高' and 序号 not in (select 题库位置 from 专项练习选择题 where 文件序号='1') order by newid()
这样能得到一条查询结果。但在delphi中,我的程序如下:
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select top 1 * from 选择题库 where 科目名称=:a and 练习=:b and 难度=:c and 序号 not in (select 题库位置 from 专项练习选择题 where 文件序号=:d) order by newid()');
parameters.ParamByName('a').value:='数学';
parameters.ParamByName('b').value:='是';
parameters.ParamByName('c').value:='高';
parameters.ParamByName('d').value:=1;
open;
end;
为什么在程序中,adoquery1.recordcount=0?
展开
 我来答
考奕琛勤念
2019-02-26 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:839万
展开全部
现你写的不就是吗?
select
*
from
tab
where
cname=:b
这样就会产生一个参数。然后给参数赋值。
(关query,参与赋值,开query)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bebbcfab5
2011-08-16
知道答主
回答量:18
采纳率:0%
帮助的人:5.3万
展开全部
parameters.ParamByName('a').asstring:='数学';
parameters.ParamByName('b').asstring:='是';
parameters.ParamByName('c').asstring:='高';

这样写就OK 了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友36a58b2
2011-08-14 · TA获得超过247个赞
知道小有建树答主
回答量:308
采纳率:100%
帮助的人:166万
展开全部
你的sql语句在查询分析器里 直接查询有结果吗,如果么有结果 那么recordcount=0就没什么问题了

还有我经常犯的错误 就是连错数据库了。
追问
直接查询有结果,但是呢,程序中的recordcount就是为0,然后,我确定数据库连接没错。因为如果不是嵌套语句就正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangoucai
2011-08-15
知道答主
回答量:10
采纳率:0%
帮助的人:1.7万
展开全部
将执行语句保存到临时文件去检查下,或者用SQL MONITOR追踪下看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linximf
2011-08-14
知道答主
回答量:8
采纳率:0%
帮助的人:4.1万
展开全部
注意查询条件中变量的数据类型:是varchar类型还是int类型,不分清楚是会有错误的!
追问
文件序号的数据类型是int,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式