下面的代码是我自己攒的,整个程序还有其它代码,运行时提示“下标越界”。
程序里涉及到数据库的第一部分:
    Dim cn As ADODB.Connection
    Dim strSQL As String
    Set cn = New ADODB.Connection
    Set oRs = New ADODB.Recordset
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db\message.mdb;Persist Security Info=False"
    'cn.Mode = adModeReadWrite
    cn.Open
    strSQL = "select * from userinfo "
    oRs.Open strSQL, cn, adOpenDynamic, adLockOptimistic
    cn.Execute strSQL
第二部分:
oRs.MoveFirst
Do Until .oRs.EOF
    Label4.Caption = .oRs("name").Value
    i = 1 + .oRs("number").Value
    oRs("number").Value = i
    oRs.Update
    oRs.MoveNext
Loop
如果有不妥当的地方还请大家多多指正!

解决方案 »

  1.   

    下标越界(错误 9)
       只能在定义的范围内访问数组元素和集合成员。此错误有以下的原因和解决方法: 引用了不存在的数组元素. 
    下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误: 
    Dim MyArray() As Integer
    MyArray(8) = 234    ' 导致错误 9。Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。引用了不存在的集合成员。 
    试着使用 For Each...Next 结构代替指定元素下标。使用速写形式的下标,结果指定了错误的元素。 
    例如,当在集合上使用 ! 运算子时,! 自动指定了一个键。例如 object!keyname.value 和 object.item(keyname).value 是一样的。在此例中,集合中如果 keyname 表示一个错误键,错误就会产生。若要改进此错误,在集合对象中使用正确的键名称或索引。
      

  2.   

    Label4.Caption = .oRs("name").Value
    -----------------------------------------
    oRs前面怎么还有个 "."  ?
      

  3.   

    lzheng2001(1加1):我也不知道是哪一行,弹出的窗口没有提示。如何才能知道是那行出错了呢?
    frankwong(黄梓钿):不好意思本人有点弱,看不大明白。
    faysky2() :对不起我是忘了把.oRs前的.删掉,本来在with语句里的,这个问题我明白你就当它不存在。
    ALL如果不好确切的指出错误,请大家帮忙猜测一下嘛,可能是哪个地方错了!我就按照大家的意见多试几次!
      

  4.   

    把do until ----loop 循环换成do while--- loop
      

  5.   

    如果没有设置错误陷阱(代码中有On Error ...语句),在弹出错误的同时,错误的语句会反色(黄色)显示如果你设置了错误陷阱,那么先把On Error ....语句注释掉再运行,看错误指向哪一句
      

  6.   

    vb可以设置当遇到任何错误时停止在错误的语句上.在代码中右键就可以设置,我的是英语版VB,选项是 break on all error
      

  7.   

    另外,你的第二部分可以用一个 SQL 语句搞定:cn.Execute "Update userinfo Set number = number + 1"