rsNew.Open "SELECT * FROM #MYTable", cn, adOpenStatic, adLockBatchOptimistic, adCmdTextWhile Not rs.EOF    rsNew.AddNew    For i = 0 To rs.Fields.Count - 1        rsNew.Fields(i).value = rs.Fields(i).value    Next    rsNew.Update    rs.MoveNextWendrsNew.UpdateBatch第一个rsnew.addnew 是正常的,过了一圈
第二次到rsnew.addnew 的时候,就出现了 在获得新的之前,必须释放所有的rows对象.记得以前遇到过,好像改了什么东西就可以了,这次怎么改都不行,晕啊

解决方案 »

  1.   

    UpdateBatch 和 CancelBatch 方法范例
    该范例连同 CancelBatch 方法说明 UpdateBatch 方法。Public Sub UpdateBatchX()   Dim rstTitles As ADODB.Recordset
       Dim strCnn As String
       Dim strTitle As String
       Dim strMessage As String   ' 将连接字符串赋值给变量。
          strCnn = "Provider=sqloledb;" & _
          "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "   Set rstTitles = New ADODB.Recordset
       rstTitles.CursorType = adOpenKeyset
       rstTitles.LockType = adLockBatchOptimistic
       rstTitles.Open "titles", strCnn, , , adCmdTable
       
       rstTitles.MoveFirst   ' 对记录集执行循环并询问用户是否要更改指定标题的类型。
       Do Until rstTitles.EOF
          If Trim(rstTitles!Type) = "psychology" Then
             strTitle = rstTitles!Title
             strMessage = "Title: " & strTitle & vbCr & _
                "Change type to self help?"         If MsgBox(strMessage, vbYesNo) = vbYes Then
                rstTitles!Type = "self_help"
             End If
          End If      rstTitles.MoveNext
       Loop   ' 询问用户是否要提交以上所作的全部更改。
       If MsgBox("Save all changes?", vbYesNo) = vbYes Then
          rstTitles.UpdateBatch
       Else
          rstTitles.CancelBatch
       End If   ' 打印记录集中的当前数据。
       rstTitles.Requery
       rstTitles.MoveFirst
       Do While Not rstTitles.EOF
          Debug.Print rstTitles!Title & " - " & rstTitles!Type
          rstTitles.MoveNext
       Loop   ' 恢复原始值,因为这只是演示。
       rstTitles.MoveFirst
       Do Until rstTitles.EOF
          If Trim(rstTitles!Type) = "self_help" Then
             rstTitles!Type = "psychology"
          End If
          rstTitles.MoveNext
       Loop
       rstTitles.UpdateBatch   rstTitles.CloseEnd Sub
      

  2.   

    我汗~~
    大哥,msdn我看过的说~
    我是问为什么会出现我说的"必须先释放所有rows句柄"这种错误