到底recordcount在什么时候能够用它来判断一个表中是否有记录(50分)

  • 主题发起人 主题发起人 freesweet
  • 开始时间 开始时间
F

freesweet

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在编程时发现
有时recordcount是代表此表中记录的个数
而有时表中有数据为何返回0
 
只要query.open前加last就不会错了

还有当query和类似dbgrid相连后就不用last也可以用recordcount了

你可以试试,没问题。
 
用query.isempty判断表中是否有记录更好一些.
 
要清楚数据集和表(物理)的区别
比如query1:
select * from table1
open后,如果table1里有数据,query1.recordcount就大于0
也就是说,recordcount是数据集中的记录数
 
RecordCount的值是在查询后得到的
如果表里有符合条件的数据而RecordCount为0的话,很可能就是没有使TQuery集合
 
对于桌面数据库可以用,而对大型数据库(如MS SQL Server)就不行啦.
 
用table时,recordcount是该数据集中的所有记录个数,而不是过滤后的.
 
当你的查询条件是:select count(id) from table where .....时,不能用recordcount来
判断记录数。用EMPTY来判断。
 
为了省事只要判断recordcount<>0 肯定有记录
如果想知道多少纪录只要刷新一下就可以了比如last;first........
 
用adoquery时发现数据集明明有纪录,但是 adoquery.recordcount 返回-1
是何原因?
 
recordcount 和 表中的记录没有必然关系
例如 select * from table where 1=2
这样的查询 recordcount 当然是 0 ,可是 表中的记录也许很多啊
 
最好不要用直接用RecordCount,可以先用select count(*) from ...先计算出,再提取数据
这样比较保险。
 
有這種情況﹐你的table中有紀錄﹐但是sql并沒有查出東西...
兩者間沒有必然的關系
純屬灌水﹐不用給分﹐xixi
 
可以这样:
Select 语句执行完以后,加入LAST 然后再记数就不会返回0或负数了.
with Query1 do
begin
close;
sql.Clear;
Sql.Add('Select * from table1');
Open;
Last;
if RecordCount< 1 then Showmessage('Error');//有数据时
end;
Have a Try .
 
Recordcount是查到的记录数,它不一定是真正的记录数,例如:你库表有符合条件的为
10000条,你的程序本应返回10000条,但计算机必定有一个读库表的过程,若当它读到第
8000条时,你的程序调用了Recordcount,则他的值为8000,不为10000。
 
用query的recordcount属性时会在程序中出现意想不到的错误,推荐你使用
select count(*) from table where field="xxx"
来得到结果集的数目
另外,有本书你也许没看,推荐给你
版主答疑--delphi高级编程技巧(岳庆生编著)
 
1)recordcount只被推荐用在dbase和paradoc上
2)判断数据集空可以用isempty
 
recordcount 指符合当前条件的数量
 
当表中有long,long row等字段时
recordcount就可能不正确,
try
select count(*) from table...

 
强烈推荐使用select count(*) from table...速度快,没有副作用,呵呵。。
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部