救救我,一个sql语句查询问题,我查不出原因!

pgz_007 2008-09-09 10:06:59
下面这段程序我无论在edit3文本框里面输入什么,它都会执行 showmessage('退料单所对应的领料单号不存在!');
但是我把sql.Text的内容放入sql查询分析器里面执行,明明是有一条记录的。

我不用参数,直接
sql.Add('select * from outbill where outbhid=''R000001'' and type=''0''');
后面还是执行了showmessage('退料单所对应的领料单号不存在!'); 但我发誓R000001这个领料单号绝对存在!
因为在查询分析器中可以查询到(select * from outbill where outbhid='R000001' and type='0')


with datamodule1.Query2 do
begin
close;
sql.Clear;
sql.Add('select * from outbill where outbhid=:outbhid and type=''0''');
Parambyname('outbhid').AsString:=trim(edit3.Text);
// showmessage(edit3.Text);
//showmessage(sql.Text); //直接运行这条语句
if eof=true then
begin
showmessage('退料单所对应的领料单号不存在!'); //不管存不存在都提示不存在
exit;
end;
end;

我用的是paradox数据库,应用程序中其它查询都没问题,就这个有,请问是为什么???
...全文
79 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pgz_007 2008-09-09
  • 打赏
  • 举报
回复
没有执行ExecSQL,我真笨!结贴散分!
zhaoxiaohao 2008-09-09
  • 打赏
  • 举报
回复
是不是返回的有不止一个record呢?要是用datamodule1.Query2.recordcount=0來判斷是否存在可以好一些?
taxpayer 2008-09-09
  • 打赏
  • 举报
回复
没有执行 SQL
close;
sql.Clear;
sql.Add('select * from outbill where outbhid=:outbhid and type=''0''');
Parambyname('outbhid').AsString:=trim(edit3.Text);
ExecSQL
.............
alphen 2008-09-09
  • 打赏
  • 举报
回复
因为你的记录只有1条,所以Eof为真

你应该用TADOQuery 的 RecordCount来计算有没有记录,你有1条的话RecordCount=1。
pgz_007 2008-09-09
  • 打赏
  • 举报
回复
我改成 if not eof then ,则刚好相反,无论怎样都直接跳过下面的showmessage。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧