... ...
Recordset.Delete'删除本条记录
Recordset.Update'更新纪录
If Recordset.BOF = False Or Recordset.EOF = False Then'判断是不是到头了。问题出在这里。其实已经是True了,可是断点显示却是False
Recordset.MoveLast
... ...
上面的这段代码为何不及时更新并判断是True,而我只好用笨办法关闭表再打开重新进行循环判断才避免了那个讨厌的“Bof 或 Eof 中有一个是“真”,或者当前的记录已被删除,所需的操作要求”
下面的代码就是我的笨方法,那位给分析分析,并有好的解决方法。学习!如果没有其他方法,大家也可借鉴我的笨方法试试。
... ...
Recordset.Delete
Recordset.Update
Recordset.Close
If Recordset.BOF = False Or Recordset.EOF = False Then
Recordset.MoveLast
... ...
Recordset.Delete'删除本条记录
Recordset.Update'更新纪录
If Recordset.BOF = False Or Recordset.EOF = False Then'判断是不是到头了。问题出在这里。其实已经是True了,可是断点显示却是False
Recordset.MoveLast
... ...
上面的这段代码为何不及时更新并判断是True,而我只好用笨办法关闭表再打开重新进行循环判断才避免了那个讨厌的“Bof 或 Eof 中有一个是“真”,或者当前的记录已被删除,所需的操作要求”
下面的代码就是我的笨方法,那位给分析分析,并有好的解决方法。学习!如果没有其他方法,大家也可借鉴我的笨方法试试。
... ...
Recordset.Delete
Recordset.Update
Recordset.Close
If Recordset.BOF = False Or Recordset.EOF = False Then
Recordset.MoveLast
... ...
但为什么呢?
If Recordset.BOF = False Or Recordset.EOF = False Then '这里还在判断?
Recordset.MoveLast
MsgBox "已经是最后一条记录!", , "系统提示"
rs_data.MovePrevious
Exit Sub
end if
---------
If rs_data.BOF Then
MsgBox "已经是最后一条记录!", , "系统提示"
rs_data.MoveNext
Exit Sub
end if
就是在删除了那条记录并更新后,紧接着进行BOF或EOF判断时按理应该准确的判断出True或False,但到结果与判断语句的结果不一样(True不是True,False不是False)。从而引发了那个经典的讨厌错误提示。
运行指针与消息提示不重要,关键是为何不能同步获得结果。close后用goto方式再循环判断才获得了正确的一致的结果。
再细点给大家代码分析:
A:
打开数据库...If .BOF = True Or .EOF = True Then
... ...
GoTo C
Else
.MoveLast
GoTo B
End IfB:
If 判断正确 Then
.Delete
.Update
.Close----问题在这里,如果不关闭直接跳到下面进行判断就不同步。
GoTo A
ElseIf 判断正确 Then
... ...
.MoveLast
GoTo C
End IfC:
.AddNew
... ...
.Update
.close
Recordset.UpdateBatch
Recordset.Refresh
If Recordset.BOF = False Or Recordset.EOF = False Then
Recordset.MoveLast