我用delphi7.0+paradox+BDE编制了一个小程序,请问一下为何判断query1.recordcount>0的情况总是不对? ( 积分: 50

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi7.0+paradox+BDE编制了一个小程序,请问一下为何判断query1.recordcount&gt;0的情况总是不对? ( 积分: 50 )<br />我用delphi7.0+paradox+BDE编制了一个小程序,请问一下为何判断query1.recordcount&gt;0的情况总是不对?
源代码如下:
query1.close;
query1.sql.clear;
query1.sql.add('select jhd as 计划单号,cpmc as 产品名称,hs as 花色,sum(sl) as 件数 from hcl where (rq&lt;=:rq1) group by jhd,cpmc,hs');
query1.parambyname('rq1').asdate:=datetimepicker1.date;
query1.Open;
if query1.RecordCount&gt;0 then
begin
...一些操作;
showmessage('有数据');
end
else
begin
...一些操作;
showmessage('无数据');
end;
为何不论结果是否有记录,
总是提示有数据,也就是没有数据的情况检测不到,
请各位看一下。
 
我用delphi7.0+paradox+BDE编制了一个小程序,请问一下为何判断query1.recordcount&gt;0的情况总是不对?
源代码如下:
query1.close;
query1.sql.clear;
query1.sql.add('select jhd as 计划单号,cpmc as 产品名称,hs as 花色,sum(sl) as 件数 from hcl where (rq&lt;=:rq1) group by jhd,cpmc,hs');
query1.parambyname('rq1').asdate:=datetimepicker1.date;
query1.Open;
if query1.RecordCount&gt;0 then
begin
...一些操作;
showmessage('有数据');
end
else
begin
...一些操作;
showmessage('无数据');
end;
为何不论结果是否有记录,
总是提示有数据,也就是没有数据的情况检测不到,
请各位看一下。
 
不要用 recordcount
推荐使用EOF来判断
 
也不行啊!
你能给个代码吗?对了马上给分!
 
对这类数据库不要用RecordCount,因为始终是-1。使用别得方法,譬如楼上说的EOF,BOF之类得。
 
query1.close;
query1.sql.clear;
query1.sql.add(...);
query1.Open;
if not query1.EOF then
begin
...
showmessage('有数据');
end
else begin
...
showmessage('无数据');
end;
 
也就是判断结果是否有记录的语句,
应该是最简单的呀,拜托给一个可执行的代码好吗?
 
Reesinx:
我实验了,还是不对,
 
我上面的代码有问题吗? 还不够具体?
判断有没有记录 不一定要看记录个数是否为零

因为query.open的时候会把游标first 如果这时候游标状态已经指示为eof 不就表示没有记录吗?

目的只有一个 但方法有很多
写程序时多试试各种方法是没错
 
Reesinx:
在思路上你的代码没有一点问题,
在语法上也没有任何问题,但现在我想实现的是判断
出来是否有记录数,如果有就进行相应的操作,而如果没有记录则执行另一些操作,
问题是现在的程序判断不出来结果,即使是无记录,也执行了有记录的那段代码,
而不执行无记录应执行的那段代码.
 
为什么不对?
QUERY的操作有时就会出这个问题,不能在QUERY里判断用它的DATASET或者DATASOURCE进行判断就不会出错了。
至于为什么,我也不知道
 
究竟如何才能正确判断query1的结果是否为空,大家请献技献策!
 
if Query1.IsEmpty then
 
if query1.RecordCount&gt;0 then
改为
if Not query1.IsEmpty then
 
你们说的都不太对
记录数据等于-1是说明,你的表中用到了备注类型或文件类型
所以返回-1
不过可以用select count(*) as reccount from tablename来统计,
这样就对了
 
本人推荐用
if not (query1.eof and query1.bof ) then
 
以上方法我都试用过了,结果还是不对!
头都大了,究竟如何正确判断一个query数据集的结果是否为空呢?
if query1.RecordCount&gt;0 then
改为
if Not query1.IsEmpty then
===以上不对
if Query1.IsEmpty then
===以上不对
if not (query1.eof and query1.bof ) then
===以上不对
 
tkggai:
你们说的都不太对
记录数据等于-1是说明,你的表中用到了备注类型或文件类型
所以返回-1
不过可以用select count(*) as reccount from tablename来统计,
这样就对了
====怎么判断呢?
上面有我的程序的代码,你能具体的写一个可以直接执行的代码吗?
 
有非空字段吗?
你查询出来的结果在第一条记录,你只需要看看那个字段是否为空就ok了
 
上面的回帖应该都是大家使用过的方法 如果还不行 你应该考虑一下是不是从其他方面入手
比如 新开一个project只放上 database 和 query 做实验
如果还是存在问题 再查看一个数据库 或更换数据库的类型试一下
 
后退
顶部