下面的代码会出现:“BOF或EOF中有一个是“真”, 或者当前的记录已被删除,所需的操作要求一个当前记录!”吗??????????????????        '*** 取安装单位的名称表 ***
        sqlstr = "select * from valueazdwT"
        Set rs1 = New ADODB.recordset
        rs1.Open sqlstr, conn, adOpenStatic
        For i = 0 To rs1.RecordCount - 1
          valueForm.azdwCombo1.AddItem rs1.Fields("azdwmc").value
          If Not rs1.EOF Then
            rs1.MoveNext
          End If
        Next i
        rs1.Close
VB会将上面的问题在编译中放过去,而编译好的程序一开始执行,则出现上面的提示,然后Over。哪能这样不负责?????
  如果代码没错,有什么办法,能找到出错的地方??????

解决方案 »

  1.   

    For i = 0 To rs1.RecordCount - 1
              valueForm.azdwCombo1.AddItem rs1.Fields("azdwmc").value
              If Not rs1.EOF Then
                rs1.MoveNext
              End If
            Next i这样修改:Do While Not rs1.Eof
        valueForm.azdwCombo1.AddItem rs1.Fields("azdwmc")
        rs1.MoveNext
    Loop
      

  2.   

    程序在IDE环境下运行很好啊!!!!!
      

  3.   

    在实际的运用中,RecordCount属性值是不太准确的,特别是对于记录数相当大的时候,所以你还是用 czjw(寒雪) 的代码先试试吧,若还不行就找找别的原因!
      

  4.   


    sqlstr = "select * from valueazdwT"
    Set rs1 = New ADODB.recordset
    rs1.CursorLocation=adUseClient
    rs1.Open sqlstr, conn, adOpenStatic,adLockBatchOptimistic
    if rs1.bof and rs1.eof then
       msgbox "数据库中没有查询到记录!!!"
       exit sub
    else
       rs1.movelast
       rs1.movefirst
       For i = 0 To rs1.RecordCount - 1
           valueForm.azdwCombo1.AddItem rs1!azdwmc
           rs1.MoveNext 
       Next i
    end if
    rs1.Close
      

  5.   

    sqlstr = "select * from valueazdwT"
            Set rs1 = New ADODB.recordset
            rs1.Open sqlstr, conn, adOpenStatic
            if rs1.recordcount>0 then
                For i = 0 To rs1.RecordCount - 1
                    valueForm.azdwCombo1.AddItem rs1.Fields("azdwmc").value
                    If Not rs1.EOF Then
                        rs1.MoveNext
                    End If
                Next i
            end if
            rs1.Close