简单问题,送分,如何返回用Query查询得到的记录条数?(20分)

  • 主题发起人 主题发起人 xoenice
  • 开始时间 开始时间
X

xoenice

Unregistered / Unconfirmed
GUEST, unregistred user!
这是我的源代码:
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Tb_JKinfo where JK_ID=12');
Query1.Prepare;
Query1.Open;

i:= Query1.RecordCount;
showmessage(inttostr(i));
返回值始终是-1;

在对应的DBGrid中显示有记录。
 
SELECT之后,先query.last,再query.first,就可以得到正确的recordcount.
 
跟踪一下
 
加上如下语句测试一下,看看毛病出在哪里?
....
.....
Query1.Open;

if Not Query1.IsEmpty then
begin
i:= Query1.RecordCount;
showmessage(inttostr(i));
end
else
showmessage('没有找到任何记录');
 
你的Select語句中可能包括一些特殊的字段類型,如圖形字段等
 
看一下RecordCount的说明吧
As implemented in TDataSet, RecordCount is always -1.
Ordinarily an application does not access RecordCount at the TDataSet level.
Instead a redeclared and implemented RecordCount property in a descendant
class is accessed. RecordCount provides a fallback property for derived
dataset classes that do not reimplement the property access method.
 
上面的英文解释说得很清楚了,不能在tdataset组件中获得recordcount的值,只能在他的继承
类中获得。
 
'select count(*) from Tb_JKinfo where JK_ID=12'
 
在我机器上试没毛病啊。我是这样写的:

Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('select * from ta_authority where authid=2 ');
Query1.Prepare;
Query1.Open;
showmessage(inttostr(Query1.RecordCount));
 
上面的老兄,你们的英文翻译的没错,可是人家楼主可是用的query啊,还不是
Tdataset的继承类吗,所以你们的解释不成立!
我想楼主用的是BDE吧,看看delphi的帮助,用bde时,recorcount只适用于
padox和DBASE "Generally, an application should only use RecordCount with
Paradox and dBASE tables."
如果你用的是sql server等其他大型数据库,就会出现-1的情况,而且有时也会得到
正确的条数,用ado好象还没发现这样的问题
 
后退
顶部