2017-02-27 4 views
0

Je rencontre un problème avec le lot de mise à jour. J'ai une boucle qui passe par un jeu d'enregistrements de mise à jour des valeurs. J'ai un minimum de 333 choses dans le lot. Quand il arrive au 254ème article, il se brise. Y at-il une limite à un lot.Ado Mettre à jour le lot

On Error GoTo Err_cmdProcessAll 

Dim cn    As ADODB.Connection 
Dim rs    As ADODB.Recordset 
Dim strTableName As String 
Dim strSql As String 

' 
Set cn = New ADODB.Connection 

cn.Open "Provider=sqloledb; " & _ 
    "Data Source=" & "BLD-FS-SQLVS04\PRDINST4" & ";" & _ 
    "Initial Catalog=" & "HNFS_NetProv" & ";" & _ 
    "Integrated Security=SSPI;" 
cn.CursorLocation = adUseServer 

Dim strSortField As String 
Dim additionalwhere As String 




If cboValue = "pc3Claims" Then 
    strTableName = "Seq3_PendedClaims_Ranked" 
    strSortField = "DaysSinceReceivedClaim" 
    ' additionalwhere = " AND (member_eligibility_ud Not Like '%Program%') 
    strSql = "Select * " & _ 
     "FROM " & strTableName & _ 
     " WHERE (Complete Is Null) And (AssignedTo Is Null)" & additionalwhere & _ 
      " ORDER BY cast(" & strSortField & " as int)" & strSort 

ElseIf cboValue = "pc3ContractAssignments" Then 
    strSortField = "date" 
    additionalwhere = "" 
    strSql = "Select * " & _ 
     "FROM " & strTableName & _ 
     " WHERE (Complete Is Null) And (AssignedTo Is Null)" & additionalwhere & _ 
     " ORDER BY CONVERT(varchar(10), CONVERT(datetime, [" & strSortField & "], 111), 121) " & strSort 
End If 

Set rs = New ADODB.Recordset 
    With rs 
     Set .ActiveConnection = cn 
     .Source = strSql 

     .LockType = adLockOptimistic 
     .CursorType = adOpenKeyset 
     .CursorLocation = adUseClient 
     .Open 
    End With 
'make change to above to include 
Dim i As Long 
Dim j As Long 
Dim strAssignAssociate As String 
Dim lngAllocAmt As Long 
For i = 1 To ListView6.ListItems.Count 
    If ListView6.ListItems(i).Checked Then 
     strAssignAssociate = ListView6.ListItems(i).SubItems(1) 
     Debug.Print strAssignAssociate 
     lngAllocAmt = ListView6.ListItems(i).Text 
     For j = 1 To lngAllocAmt 
     Debug.Print rs.Fields("AssignedTo") 
     rs.Fields("AssignedTo") = strAssignAssociate 
       Debug.Print rs.Fields("AssignedTo") 
     rs.MoveNext 
     Next j 
    End If 
Next i 
rs.UpdateBatch 
MsgBox "All Finished", vbOKOnly, "Inventory Control" 
Set rs = Nothing 
Set cn = Nothing 
+0

Je trouve ce qui est redouté: «trop de lignes ont été affectées par la mise à jour, comment puis-je y remédier, BTW, c'est un fichier non-clé. – schalld

Répondre

0

J'ai trouvé le problème. J'utilise un fichier non-clé. J'ai trouvé que j'avais des doublons dans le fichier. ceci a été rectifié et le code ci-dessus fonctionne bien.