查询后得到有几条记录 (20分)

  • 主题发起人 主题发起人 cnbobo
  • 开始时间 开始时间
C

cnbobo

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我在查询后inttostr(adoquery1.RecordCount)的值会是-1
用inttostr(adoquery1.RecNo)得到的是0,
有没有记录都一样;
数据库sqlserver2000.
我的源程序
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Append('select count(*) from picture where 名称 like '+''''+'%'+edit2.Text+'%'+'''');
ADOQuery1.Open;
label4.Caption:=inttostr(adoquery1.RecordCount);
其时我要得到的是有没有记录。用来做判断的条件
 
不可能吧﹐你查詢有沒有結果啊﹖
 
The dataset component must be active for RecordCount to provide a valid number.
Should ADO not be able to determine that actual number of rows, RecordCount will return a value of negative one (-1).
 
没结果是-1,有结果也是-1
 
用的是什么数据库
 
我的数据库是sqlserver2000
 
这个问题我也碰到过,当时用的是D5,到D6后没碰到过,不知什么原因!
 
ado 没问题的,bde就不好说了。
 
可以这样
在查询后顺序调用
adoquery1.last
adoquery1.first
然后RecordCount值就正确了。
 
我试了不行
 
select count(*) from tbalename where 条件
 
to:ugvanxk
我要显示全部记录
 
尽量用 select count(*)从数据库中选,
得到-1不是delphi的ado的bug,
而是ado本身的问题
 
to cnbobo:

你执行SQL的方法是用的ExecSQL还是Open?

如果你的表有记录,并且你想返回查询结果,要用后面一个,前面一个是不返回查询结果的!
另外,在你添加SQL语句的时候,最好先用Close()!
 
非常经典的RecordCount错误,无论d5,d6,c5,c6都有过,我一般用select count(*)...
来得到其记录总数。
 
没有,我试了一下,完全没有问题。
你也可以把SQL语句改为:
'select * from picture where 名称 like '+''''+'%'+edit2.Text+'%'+''''
试试了。也可以达到你的要求
 
先用ADOQUERY.LAST
再用ADOQUERY.FIRST;
这样应该没有错了
 
我认为 select count(*) from picture 是直接返回记录条数,所以你的查询应该是
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from picture where 名称 like '+''''+'%'+edit2.Text+'%'+'''');
ADOQuery1.Open;
label4.Caption:=inttostr(adoquery1.RecordCount);
不要count函数
 
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Append('select count(*) from picture where 名称 like '+''''+'%'+edit2.Text+'%'+'''');
ADOQuery1.Open;

label4.Caption:=inttostr(adoquery1.RecordCount);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
改为:label4.Caption := IntToStr(AdoQuery1.Fields[0].Value)
使用聚合函数后应该这样来取字段值,可以得到记录数的。
 
为个问题是ADO本身的事,返回-1很正常,你可以用这个语句来判断是不是返回了
空值:
varisnull(你要返回字段中的一个字段值)//如varisnull(adoquery.fields[0].value)
看它的返回值,如果为真那么说明你的数据查询数就为0
否则就为有数据返回
 
后退
顶部