Suppression d'un enregistrement [Résolu]

Signaler
Messages postés
9
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
17 août 2007
-
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
-
Bonjour tout le monde,

Je souhaite supprimer un enregistrement de ma base Access et lorsque j'execute ce code, j'ai un message d'erreur : "Run-time error '91': Object variable or With block variable not set"

Private Sub cmdSupprimerProduit_Click()
   
    Dim RequeteChoixProduit As String
    Dim RequeteRefProduit As String
   
    Dim rstProduit_ref As ADODB.Recordset
    Dim rstProduit_choix As ADODB.Recordset
    
    'Ouverture de la connexion avec la BDD
    mCnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                        & "User ID = Admin;" _
                        & "Password = ;" _
                        & "Data Source =C:\bd_restaurant.mdb;" _
                        & "Persist Security Info = false"
    mCnx.Open
   
    If mCnx.State = adStateOpen Then
        'On récupère la référence du produit sélectionné
        RequeteRefProduit = "SELECT num_produit FROM produit WHERE nom_produit LIKE '" & lstProduit.Text & "'"
        
         ************************************
        *C'EST ICI QUE SURGIT L'ERREUR
         rstProduit_ref.Open RequeteRefProduit, mCnx, adOpenForwardOnly
         *************************************
        On Error Resume Next
       
        'On récupère toutes les données concernant le produit dans contenu_commande
        MsgBox rstProduit_ref("num_produit")
        RequeteChoixProduit = "SELECT * FROM contenu_commande WHERE ref_commande LIKE '" & lblNumCommande.Caption & "' AND 'ref_produit LIKE '" & rstProduit_ref("num_produit") & "'"
       
        rstProduit_choix.Open RequeteChoixProduit, mCnx, adOpenForwardOnly
       
        'Suppression du produit
        rstProduit_choix.Delete
       
        'Fermeture des Recordset
        rstProduit_ref.Close
        Set rstProduit_ref = Nothing
        rstProduit_choix.Close
        Set rstProduit_choix = Nothing
        'Fermeture de la connexion
        mCnx.Close
    Else
        MsgBox "Erreur de connexion à la base de données"
    End If
   
End Sub

3 réponses

Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
Salut,

l'erreur à un premier regard est :
Vous devez déclarer les variables rstProduit_ref et rstProduit_choix commme suit :




Dim rstProduit_ref As New ADODB.Recordset
Dim rstProduit_choix As New ADODB.Recordset



Repostez si ça ne corrige pas totalement..
Messages postés
9
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
17 août 2007

Salut,


Je te remercie, apparement c'était ça! Mais dis moi pourquoi fallait-il que je mette As New. Jusqu'à maintenant j'ai toujours de la manière actuelle.


En tous les cas je te remercie beaucoup ;)
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
De rien,

pourquoi utiliser New :
(MSDN)


New :

Facultatif. Mot clé permettant la création implicite d'un objet. Si vous
utilisez le mot clé New lors de la déclaration de la variable objet, une
nouvelle instance de l'objet est générée lors de la première référence, ce qui
évite de définir la référence d'objet par le biais de l'instruction Set.
Le mot clé New ne peut être utilisé pour déclarer des variables de type de données[javascript:alink_10.Click() ] intrinsèques et des
instances d'objets dépendants. Il ne peut en outre être utilisé avec le mot
clé WithEvents.

(...)
Vous pouvez aussi utiliser une instruction Dim pour déclarer le type
objet d'une variable. L'instruction suivante déclare une variable pour une
nouvelle instance d'une feuille de calcul.

Dim X As New Worksheet


Si le mot clé New n'est pas utilisé pour déclarer une variable objet,
la variable qui fait référence à l'objet ne peut être utilisée avant d'avoir été
associée à un objet existant par le biais de l'instruction Set. Jusqu'à
ce qu'elle soit attribuée à un objet, la variable objet déclarée a la valeur
spéciale Nothing, qui indique qu'elle ne fait référence à aucune instance
spécifique d'un objet.

Cordialement..