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 FUNCTION

Bonjour 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 If

Et te propose de remplacer la séquence d'insertion par

conn.execute sql   'ici peut-être n'auras-tu plus une erreur 6

Une 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.

Rechercher des sujets similaires à "erreur depassement capacite recordset open"