Erreur 6 dépassement de capacité sur un recordset.open
Bonjours,
J'aurais besoin d'aide sur mon programme VBA, en effet j'ai beaucoup de souci dessus que je ne comprend pas.
Tout d'abors , même si lorsque je teste ma requet sql sur access elle me renvois des résultat recset.EOF et toujours égale à True
Ensuite lorsque j’exécute ma requête d'insertion, ou que je force me recset.getrow(). J'ai une erreur 6 et la je comprend franchement pas pourquoi.
Voici mon code :
Public Function addCreme(CA As String, PV As String, DateDecongel As Date, DatePeremption As Date) As Boolean
Dim sucess As Boolean
sucess = False
'--------------------------------'
'Declaration des Variable de BDDD'
'--------------------------------'
Dim conn As ADODB.Connection
Dim RecSet As ADODB.Recordset
Dim sql As String
'=========Instansiation des objets========='
Set RecSet = New ADODB.Recordset
Set conn = New ADODB.Connection
'=========================================='
'===========Connection à la base==========='
conn.ConnectionString = me.strConnectString
conn.Open
'=========================================='
sql = "SELECT PV FROM MatierePremiereLotPM "
sql = sql & "WHERE PV LIKE '" & PV & "*' ORDER BY PV DESC"
Debug.Print sql
RecSet.Open sql, conn, adOpenForwardOnly, adLockReadOnly, adCmdText
If Not RecSet.EOF Then 'EOF toujours sur vrais même si quand j’exécute la même requête dans ma BDD il a plusieurs résultat
lesPVs = RecSet.GetRows() 'quand je force la venue ici j'ai une erreur 6 dépassement de capasité
MsgBox TypeName(lesPVs)
If (lesPVs(0, 0) Like "*~*") Then
Iter = CInt(Right(lesPVs(0, 0), Len(lesPVs(0, 0)) - InStr(1, lesPVs(0, 0), "~")))
Iter = Iter + 1
PV = PV & "~" & Iter
Else
PV = PV & "~1"
End If
End If
If Not RecSet.State = adStateClosed Then
RecSet.Close
End If
sql = "INSERT INTO MatierePremiereLotPM (ProductionOrder, PlanDeMontage, CodeArticle, PV, DateDecongelation, DatePeremption) "
sql = sql & "VALUES ('" & Me.ActiveLotPM.PO & "', '" & Me.ActiveLotPM.PM.PM & "', '" & CA & "', '" & PV & "', '" & DateDecongel & "', '" & DatePeremption & "');"
RecSet.Open sql, conn, adOpenForwardOnly, adLockReadOnly, adCmdText 'ici aussi j'ai une erreur 6
sucess = True
END FUNCTIONBonjour LouisVolat,
Difficile de t'aider efficacement sans avoir ni l'EXCEL ni la BDD.
Cependant, je te propose :
de modifier la séquence d'ouverture de RS par :
RecSet.Open sql, conn, adOpenDynamic, adLockReadOnly, adCmdText
Recset.Movefirst
If Not RecSet.EOF Then 'EOF toujours sur vrais même si quand j’exécute la même requête dans ma BDD il a plusieurs résultat
...Ensuite, je m'interroge sur la nécessité de la séquence :
If Not RecSet.State = adStateClosed Then
RecSet.Close
End IfEt te propose de remplacer la séquence d'insertion par
conn.execute sql 'ici peut-être n'auras-tu plus une erreur 6Une dernière chose : si dans la table access les données "Date" sont au format "Date", ton string SQL d'insertion ne me parait correct.