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对象.记得以前遇到过,好像改了什么东西就可以了,这次怎么改都不行,晕啊
第二次到rsnew.addnew 的时候,就出现了 在获得新的之前,必须释放所有的rows对象.记得以前遇到过,好像改了什么东西就可以了,这次怎么改都不行,晕啊
该范例连同 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
大哥,msdn我看过的说~
我是问为什么会出现我说的"必须先释放所有rows句柄"这种错误