... ...
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
... ...

解决方案 »

  1.   

    我用的就是 ADODB.Connection 。
    但为什么呢?
      

  2.   

    Recordset.Close           '这里CLOSE 了???
    If Recordset.BOF = False Or Recordset.EOF = False Then   '这里还在判断?
    Recordset.MoveLast
      

  3.   

    我之前也发现有这个问题,它是先执行后判断,可以这样处理If rs_data.EOF Then
    MsgBox "已经是最后一条记录!", , "系统提示"
    rs_data.MovePrevious
    Exit Sub
    end if
    ---------
    If rs_data.BOF Then
    MsgBox "已经是最后一条记录!", , "系统提示"
    rs_data.MoveNext
    Exit Sub
    end if
      

  4.   

    楼上各位,是这样:数据库中有一条记录,且进行删除时那条记录也只是数据库中当时的唯一一条记录。当然这不是我们需要预先知道的。
    就是在删除了那条记录并更新后,紧接着进行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
      

  5.   

    Recordset.Delete
    Recordset.UpdateBatch 
    Recordset.Refresh
    If Recordset.BOF = False Or Recordset.EOF = False Then
    Recordset.MoveLast