我有这样一段程序:就是要浏一个表中的全部记录:
Private Sub Command操作员_后一个_Click()
    If Not Adodc客房管理.Recordset.AbsolutePage = adPosEOF Then
        Adodc客房管理.Recordset.MoveNext
    End IfEnd SubPrivate Sub Command操作员_前一个_Click()
    If Not Adodc客房管理.Recordset.AbsolutePosition = adPosBOF Then
        Adodc客房管理.Recordset.MovePrevious
    
    End IfEnd Sub
问题是,前移到第一个记录后还能前移一次,出现一个空记录;后移也有同样的问题,问题出在哪里啊,怎么解决?多谢了!

解决方案 »

  1.   


    If Not adoLogin.Recordset.BOF Then
       adoLogin.Recordset.MovePrevious
    End If
    If Not adoLogin.Recordset.EOF Then
       adoLogin.Recordset.MoveNext
    End If
      

  2.   

    Private Sub Command操作员_后一个_Click()
        If Not Adodc客房管理.Recordset.EOF Then
            Adodc客房管理.Recordset.MoveNext
        End IfEnd SubPrivate Sub Command操作员_前一个_Click()
        If Not Adodc客房管理.Recordset.BOF Then
            Adodc客房管理.Recordset.MovePrevious
        
        End IfEnd Sub
      

  3.   

    我的问题这样做就解决了:
    Private Sub Command操作员_后一个_Click()
        If Not Adodc客房管理.Recordset.AbsolutePage = adPosEOF Then
            Adodc客房管理.Recordset.MoveNext
            If Adodc客房管理.Recordset.AbsolutePage = adPosEOF Then
                Adodc客房管理.Recordset.MovePrevious
            End If
        End IfEnd SubPrivate Sub Command操作员_前一个_Click()
        If Not Adodc客房管理.Recordset.AbsolutePosition = adPosBOF Then
            Adodc客房管理.Recordset.MovePrevious
            If Adodc客房管理.Recordset.AbsolutePosition = adPosBOF Then
                Adodc客房管理.Recordset.MoveNext
            End If    End IfEnd Sub
      

  4.   

    我那样做虽然解决了,但是用一种非正常的办法,BOF和EOF的本意不应该是这样的吧?请高手指点!
      

  5.   

    很久没用过Adodc控件了,不能确定,你试试:
        If Not Adodc客房管理.Recordset.AbsolutePosition = adPosBOF Then
            Adodc客房管理.Recordset.MovePrevious
        Else
            Adodc客房管理.Recordset.MoveNext
        End If或者:
        If Adodc客房管理.Recordset.Eof = False Then
            Adodc客房管理.Recordset.MovePrevious
        Else
            Adodc客房管理.Recordset.MoveNext
        End If
      

  6.   

    Private Sub Command操作员_后一个_Click()
        If Not Adodc客房管理.Recordset.EOF Then
            Adodc客房管理.Recordset.MoveNext
        Else
            Adodc客房管理.Recordset.MoveLast
        End If
    End SubPrivate Sub Command操作员_前一个_Click()
        If Not Adodc客房管理.Recordset.BOF Then
            Adodc客房管理.Recordset.MovePrevious
        Else
            Adodc客房管理.Recordset.MoveFirst
        End If
    End Sub
      

  7.   

    前移到第一个记录后还能前移一次,出现一个空记录;后移也有同样的问题
    =========
    楼主我想你误会了Eof和Bof了,EOF指示当前记录位置位于Recordset对象的最后一个记录之后;BOF指示当前记录位置位于Recordset对象的第一个记录之前。即使到最后一条记录Eof仍为False,只有记录指针继续移到最后一条记录之前才为True
      

  8.   

    if Adodc客房管理.Recordset.eof=true then
     exit sub
    end if
      

  9.   

    Private Sub Command操作员_后一个_Click()
    Adodc1.Recordset.MoveNext
    Form1.Command操作员_后一个.Enabled = True
    Form1.Command操作员_最后一个.Enabled = True
    pd
    If Adodc1.Recordset.EOF Then
       Form1.Command操作员_第一个.Enabled = False
       Form1.Command操作员_前一个.Enabled = False
      Form1.Command操作员_后一个.Enabled = True
       Form1.Command操作员_最后一个.Enabled = True
       Form1.Adodc1.Recordset.MovePrevious
    End If
    End Sub"前移到第一个记录后还能前移一次,出现一个空记录;后移也有同样的问题
    =========
    楼主我想你误会了Eof和Bof了,EOF指示当前记录位置位于Recordset对象的最后一个记录之后;BOF指示当前记录位置位于Recordset对象的第一个记录之前。即使到最后一条记录Eof仍为False,只有记录指针继续移到最后一条记录之前才为True"说得非常好,同意
      

  10.   

    rivate Sub Command操作员_后一个_Click()
    Adodc1.Recordset.MoveNext
    Form1.Command操作员_第一个.Enabled = True
    Form1.Command操作员_前一个.Enabled = True
    pd
    If Adodc1.Recordset.EOF Then
       Form1.Command操作员_第一个.Enabled = true
       Form1.Command操作员_前一个.Enabled = true
      Form1.Command操作员_后一个.Enabled = false
       Form1.Command操作员_最后一个.Enabled = false
       Form1.Adodc1.Recordset.MovePrevious
    End If
    End Sub"前移到第一个记录后还能前移一次,出现一个空记录;后移也有同样的问题
    =========
    楼主我想你误会了Eof和Bof了,EOF指示当前记录位置位于Recordset对象的最后一个记录之后;BOF指示当前记录位置位于Recordset对象的第一个记录之前。即使到最后一条记录Eof仍为False,只有记录指针继续移到最后一条记录之前才为True"说得非常好,同意,代码错了,重新发一次!!