Aujourd'hui a été une journée d'affouillement YouTube et Internet, et je n'ai pas encore compris comment faire fonctionner ce code. Il ouvre et ferme la connexion sans problème, mais lorsque j'essaie d'écrire dans un jeu d'enregistrements, il ignore complètement tout et ferme la connexion sans entrer de données.Saut de code sur saisie d'un jeu d'enregistrements, ADODB Excel VBA
Const AccessConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Vision\Database\BVAS.accdb;Persist Security Info=False;"
Private Sub BtnSave_Click()
Dim DbConn As ADODB.Connection
Dim Inventory As ADODB.Recordset
Dim r As Range
Set DbConn = New ADODB.Connection
Set Inventory = New ADODB.Recordset
DbConn.ConnectionString = AccessConnStr
DbConn.Open
On Error GoTo CloseConnection
With Inventory
.ActiveConnection = DbConn
.Source = "T3Scaffold_Inventory"
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
On Error GoTo CloseRecordset
End With
CountSheet.Activate
'WTF, why does it skip this ? Research if and IF or Do WHILE statement will work here for so that only the Items with quantity >0 are sent to ACCESS
For Each r In .Range("A2", Range("A2").End(xlDown))
With Inventory
.AddNew
.Fields("ScaffoldID") = Range("ScaffoldID")
.Fields("ItemNumber") = Cells(i + 1, 1).Value
.Fields("Quantity") = Cells(i + 1, 3).Value
.Fields("WorktypeID") = Range("WorktypeID")
.Fields("RentStartDate") = Range("Date")
.Fields("OnRent?") = "Yes"
.Update
End With
Next r
CloseRecordset:
Inventory.CancelUpdate
Inventory.Close
CloseConnection:
DbConn.Close
Set Inventory = Nothing
Set DbConn = Nothing
End Sub
Merci à tous. J'espère que c'est une solution super compliquée lol. -MC
Donc ça g ets à la ligne commençant par "For Each r in .range", puis passe directement à "CloseRecordset:"? – jamheadart
Je mets un point de rupture à la pour chaque instruction et il saute juste au-dessus. Cela va de 'End With' à 'CloseRecordset:' sans itération à travers la boucle. –
Le fait qu'il saute directement à l'étiquette 'CloseRecordset' suggère que CountSheet.Activate génère une condition d'erreur. Juste avant le 'End With 'vous avez' On Error GoTo CloseRecordset'. Essayez d'ajouter une ligne juste après l'étiquette 'CloseRecordset' pour voir ce que l'erreur est:' MsgBox "Erreur" & Err.Number & "-" & Err.Description' – Skippy