关于Query的RecordCount的问题(100分)

  • 主题发起人 主题发起人 silverwolf
  • 开始时间 开始时间
S

silverwolf

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么有时候明明有记录查出,可是RecordCount却为0,有时却能正常显示记录数。
bug???请众高手指点一二。
 
在使用SELECT语句中使用count(fieldname)肯定是可以的.
好象是有的数据库可以显示正常的.
 
你要看一看你的数据库的设计,也就是字段的类似,如果是text 类型的,取回结果
recordcount 就不正确。
 
RecordCount统计的是内存当中的数据数,而并不是数据表的中。所以会出现你遇到的情况。
你可以用select语句,也可以重新连接数据库,再用它统计。
 
只要是返回结果集的,open以后肯定没有你说的情况。
我用RecordCount从来都是正确的。毫无疑问。
 
最可靠的还是手工数.

while not rs1.Eof do
recCount :=RecCount + 1;
 
这种情况我曾经用ODBC连接 FOXPRO的DBF文件出现过,对SYBASE和SQLSVR的连接都是正确的
可能与数据库引擎有关
 
如果用Group by 且分组字段这空则有可能出现这种情况。
 
不要用recordcount,用parambyname()来取,绝对正确!
 
ado就是这样的。因为你用的是服务器仅向前游标。要用客户端游标。
 
我查询一般不用recordcount。慢。
 
是不是你的显示控件接的不是执行查询的数据集啊?
用open 执行SQL,不会出现你那样的问题。我没遇到这种情况
 
你只要把所有的列名都列出来就可以了用Recordcount了,主要是因为你的 Select * 中有Bolb字段
 
首先向诸位表示感谢,但是……,好像答案都不太正确:
因为:
数据库中没有Text类型;
我用的是Open返回数据集;
也没有用ado,
而且选择时一一列出属性;
zuidaeji大大“我查询一般不用recordcount。慢。”
看不懂?能说教快的吗?


 
就是在查询时使用count(fieldname)就可以统计了,不管什么字段类型的。
就能得到记录数,不用什么recordcount了。
 
同意hbezwwl
 
我的问题是为何会出错,而不是如何计算记录数。
 
没有什么为何的,这是一个BUG!
 
你用的是BDE连接MSSQL SERVER数据库吧?BDE在这方面就是这个德行!ADO可以解决这个
问题,但是ADO也有不少毛病。最好还是多自己写程序判断。
 
多人接受答案了。
 
后退
顶部