coming from MSDN
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

解决方案 »

  1.   

    改一下就可以了SET RS = NEW ADODB.RECORDSET
    RS.CURSORTYPE=ADOPENKEYSET
    RS.LOCKTYPE=ADLOCKOPTIMISTIC
    RS.OPEN "TEST", CN, , , ADCMDTABLEFOR I=0 TO 10
      RS.ADDNEW
      RS!ID=I
      RS!COMMENTS="TEST ID " & CHR(I)
      RS.UPDATENEXT IRS.CLOSE
      

  2.   

    楼上的说得对,new一条就update一条,不然你用updatebatch
      

  3.   

    同意楼上说的,每增加一条记录就要updata一条,不然你用updatebatch .不过最好的方法还是用每增加一条记录就要updata一条.
      

  4.   

    多谢大家的回复我按照大家的意见,每增加一条记录就UPDATE一条,可是还是得到了同样的出错信息。[Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint 'PK_Test'. Cannot insert duplicate key in object 'Res_Test'.我用的是WIN98+MDAC 2。6+VB6 WITH SP5 + SQL SERVER 7