Bonjour.
J'ai un petit soucis avec une requête d'insertion. Voici déjà le morceau de code concerné :
Lorsque je lance ma macro, j'ai un plantage à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 If strNomActif <> "" Then ' Vérification de l'existence de l'actif strRequete = "SELECT Count(id_actif) FROM T_Actif WHERE nomActif='" & strNomActif & "';" Set rstEnr = dbBase.OpenRecordset(strRequete, dbOpenForwardOnly, dbReadOnly) ' Si l'actif n'existe pas dans la base alors insertion If rstEnr.Fields(0) = 0 Then strRequete = "INSERT INTO T_Actif (nomActif) VALUES ('" & strNomActif & "');" 'MsgBox strRequete dbBase.Execute strRequete End If ' Récupération de l'identifiant de l'actif strRequete = "SELECT id_actif FROM T_Actif WHERE nomActif='" & strNomActif & "';" Set rstEnr = dbBase.OpenRecordset(strRequete, dbOpenForwardOnly, dbReadOnly) strIdActif = rstEnr.Fields(0) ' Libération du recordset Set rstEnr = Nothing Else MsgBox "Actif non défini à la ligne " & intIdxLgn, vbExclamation + vbOKOnly, "Pas d'actif" End Ifm'indiquant que le recordset est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part strIdActif = rstEnr.Fields(0)
J'ai fait une exécution pas à pas pour vérifier l'enchaînement et les valeurs des variables. La requête de vérification réussie en retournant que la table ne contient pas l'actif, la requête d'insertion est exécutée sans erreur... mais rien n'est ajouté dans la table.
Une explication ?
Partager