Query.RecordCount=-1是怎么回事,里面有很多记录的呀? 改用ado试一下,如是一样,升级一下ado 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没错!问题出在数据库接口上,delphi的数据库驱动出错!识别纪录出错!ADO是最好的!ADO本身就是MS的,Sql Server也是MS的,ADO本身没错,delphi只需要读取ado接口即可. 看你用的数据库,如果是access ,query.recordcount 属性就不可用 谁说的?ado使用access数据库,query.recordcount用过呀!没事!我们整个用户应用系统都是用access数据库,没有recoundcount很难办!怎么判断完了?for tmpint:=1 to query.recordcount dobegin...qyeru.next;end;一直没出错呀! 对某些数据库,如sqlserver、access,query.recordcount 属性是会不可用的 我以前曾经使用odbc连接access就发现这个错误recordcount=-1,因为系统一直没有找到纪录尾部,所以纪录个数很大,出界了=-1就是数据库驱动接口出错!一定要使用ado,这个可靠性很高! 如果你的记录集的active是false的,那你的recordcount就有可能是-1了! 我们数据库服务器发送端sql server2000,用户端access,都用ado,很好啊!还没出错!稳定呀! 用ado是好的选择,如果一定要用query,那么在之前使用query1.fetchall,我以前碰见过类似问题,这样可以解决! draft对了!有可能是active是false,否则ado下recordcount=-1不对呀!只能这个原因了! query.recordcount 有時確實會 =-1我想你可以這樣試試(我曾經就這樣解決)select Field1,Field2,Field3,Field4.... from ........where.......你看一下Field1,Field2,Field3,Field4....他們的類型有沒有memo類型的,如果有你試著把這個memo類型的Field從此sql中去掉,再來試試會不會有此問題 query.recordcount 有時確實會 =-1我想你可以這樣試試(我曾經就這樣解決)select Field1,Field2,Field3,Field4.... from ........where.......你看一下Field1,Field2,Field3,Field4....他們的類型有沒有memo類型的,如果有你試著把這個memo類型的Field從此sql中去掉,再來試試會不會有此問題 memo值有的数据库确实会因为foreveryday老兄所说出的问题,我也遇到过.因为memo属于任意长字节的字段,所以系统判断纪录结尾时有可能出错(因为很多数据库驱动接口是按照固定长度作为一个纪录). 用RecordCount前,先使用First;Open;First;ShowMessage(INtToStr(RecordCount)); 问题就出在ado上面,有些oledb provider不提供recordcount这样的功能,所以返回值就是-1,可以去看msdn,上面就是这样说的。其实很好解决,先select count(*) from 。这样就可以得出记录数了 使用adoquery然后:inttostr(adoquery1.RecordCount)试一下 加上这句话试试:query.active:=false;query.active:=true; Query1.first;Query1.Last;ShowMessage(IntToStr(Query1.RecordCount));有意外惊喜 Query1.First;Query1.Last;这个可行;Query1.FetchAll;这个也可行; 因为我没有用ADO,所以各位关于ADO的建议,我只能谢谢大家了。我的Select语句中确实是有MEMO类型的字段,我想也是因为这个而引起的。我结案了。 不是的,这是你使用ADO的游标类型所影响的,你打开方式不同的时候,会有不同的读值的! 如何扫描一个文件夹获取文件目录列表 f1book打开excel文件 请哪位英语好的朋友帮着翻译一小句英文 求在fastreport3里实现类似access报表可设置行间距和列间距的具体实现方法。 问题简单!帮帮忙! 选择文件的问题 新手提问,关于设置断点合运行的问题 关于一个有源码的控件无法支持中文(或是说双字节)的问题。 SOS SOSOSOSOSOOOSOSOSOSOSOSOSOSO?????(关于WINDOWS ME !) 如何做一个关于凭证的报表 可以用datetimepicker只取得年和月的值嗎﹖ 这样的函数如何实现?
for tmpint:=1 to query.recordcount do
begin
...
qyeru.next;
end;
一直没出错呀!
就是数据库驱动接口出错!
一定要使用ado,这个可靠性很高!
我以前碰见过类似问题,这样可以解决!
我想你可以這樣試試(我曾經就這樣解決)
select Field1,Field2,Field3,Field4.... from ........where.......
你看一下Field1,Field2,Field3,Field4....他們的類型有沒有memo類型的,
如果有你試著把這個memo類型的Field從此sql中去掉,再來試試會不會有此問題
我想你可以這樣試試(我曾經就這樣解決)
select Field1,Field2,Field3,Field4.... from ........where.......
你看一下Field1,Field2,Field3,Field4....他們的類型有沒有memo類型的,
如果有你試著把這個memo類型的Field從此sql中去掉,再來試試會不會有此問題
First;
ShowMessage(INtToStr(RecordCount));
其实很好解决,先select count(*) from 。这样就可以得出记录数了
inttostr(adoquery1.RecordCount)试一下
query.active:=false;
query.active:=true;
Query1.Last;
ShowMessage(IntToStr(Query1.RecordCount));
有意外惊喜
Query1.Last;
这个可行;Query1.FetchAll;
这个也可行;
语句中确实是有MEMO类型的字段,我想也是因为这个而引起的。我结案了。