哪个问题,我也遇到过,你如果使用ADO的话,那么你可以使用ADO的移动,那么就不会出现这个问题。如果,你用ADODB的话,那么移动的话,只要用EOF 和BOF同时判断就不应该出现这个问题了。哈哈哈,我就知道这么多了。能帮上你吗???

解决方案 »

  1.   

    移动到最后一条记录后,如果再movenext的话就会变成addnew。要不你可以将EOFAction设为movelast.
      

  2.   

    改用以下代码:
    dim rst as adodb.recordset
    set rst = new adodb.recordset
    rst.open "select * from table",conn,,,adcmdtext
    set Label1.DataSource = rst
    label1.datafield = "field"
    ...
    ...
    ...
    Private Sub Command1_Click()
    if not rst.eof then
        rst.movenext
    else
        rst.MoveLast
        msgbox "到记录末尾了"
    end if
    End SubPrivate Sub Command2_Click()
    if not rst.eof then
        rst.MovePrevious
    else
        rst.MoveFirst
        msgbox "到记录末尾了"
    end if
    End Sub
      

  3.   

    后面一段搞错了!(:
    Private Sub Command2_Click()
    if not rst.Bof then
        rst.MovePrevious
    else
        rst.MoveFirst
        msgbox "到记录开头了"
    end if
    End Sub
      

  4.   

    EOFAction改为movelast. 
    BOFAction改为movefirst
      

  5.   

    EOFAction和BOFAction在什么地方改?用代码?还是属性?
      

  6.   

    我做了试验,没有EOFAction和BOFAction这两个属性啊,你说的ado数据控件的属性吧,可我用的全部是对象啊。
      

  7.   

    有没有更好的解决办法啊?这个问题困绕我很长时间了,难道叫我回去用控件重写代码?我现在在做一个sql server的,也碰到了这个问题
      

  8.   

    用用下面的试试:
    if rst.absolutecount = rst.recordcount then
      msgbox "end of rst"
    endif
      

  9.   

    注意移到尾的时间rst.absolutecount 好象是 <0 你可以试一试
      

  10.   

    改用Private Sub Command1_Click()
    if not rst.eof then
        rst.movenext
    else
        rst.MoveLast
        msgbox "到记录末尾了"
    end if
    End Sub
      

  11.   

    找开ADO临时表的方法不对用默认的方法,可能就会出现空白行.
    你试下
    rs.open "select...",con,3

    rs.open "select...",con,adopenstatic
      

  12.   

    label1.datafield = "field" & ""
      

  13.   

    如果你不用ADO控件,而只用代码则不会出现你所说的问题。至少用VB开发这么多年程序了我也没有出现过你所说的问题啊!!!