Delphi 7 ADO 报错。BOF 或 EOF 中有一个是真。(100分)

  • 主题发起人 主题发起人 garyye
  • 开始时间 开始时间
G

garyye

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是D7,需要从本地的ACCESS数据库读取数据。
当数据库中剩下最后一条记录时。
程序报错。
bof 或eof中有一个是”真“或者当前的纪录已被删除,,,,,,
在网上查过这方面的问题。都说是ADO的BUG。但说的只是D5。我用的是D7,还有这个BUG吗?
在网上找来ADO UPDATE 2 。根本装不了。只有D5才能装上。
以下是部分代码。
ADOQuery.SQL.Text := 'select * from members where reged = False Order by id';
ADOQuery.Open;
if not(ADOQuery.Bof = True and ADOQuery.Eof = True) then
begin
RandNum := 5;//Random(1200)+76;
Timer_reg.Interval := RandNum * 1000;
Timer_reg.Enabled := True;
Minute := Trunc(RandNum/60);
second := RandNum mod 60;
RegUserStr := ADOQuery.Recordset.Fields.Item[1].Value; //出错位置!!
希望得到帮助。谢谢。
 
补充一下。。
我已经打了D7 的UPDATE 1。1
系统是XP
在注册表中查到的ADO版本是2。8
 
顶一下。。。。
 
我也试过这个问题,但好像不是BUG,是什么我就忘记了,后来解决了,但没记下处理方法,
我先找找看吧,如果找到再告诉你,嘻嘻。
 
去许愿树祈求tobey快点恢复记忆。!!!![:)]
 
晕倒,你看看是不是括号加错了,呵呵
not(ADOQuery.Bof = True and ADOQuery.Eof = True)
应该是
not((ADOQuery.Bof = True) and (ADOQuery.Eof = True))吧
或者就不用写True的部分
 
不是的。照你的写法。错误依然存在!!
 
那就不知道了。不过可以提个建议,if语句那一行最好不要出现True或者False的字样。
 
UP!!!!!!!!!!!!!!!!!!!!!!!
 
if not(ADOQuery.Bof = True and ADOQuery.Eof = True) then

改为

if not (ADOQuery.Bof and ADOQuery.Eof) then

或者

if (not ADOQuery.Bof) or (not ADOQuery.Eof) then
 
也可以

if (ADOQuery.recordcount=1) then
 
对空表进行指针移动,肯定会出错。希望在运行时先判断表是否是空,在RecordCount>0的前提下进行操作。
空表的Eof和Bof的意义是相同的。
 
还是不行。
我想应该不是判断语句的问题。

表中是有记录的。
好郁闷。。。。。。。。。[:(]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
860
import
I
S
回复
0
查看
952
SUNSTONE的Delphi笔记
S
后退
顶部