Suppression d'un enregistrement

Résolu
cs_Webjojo Messages postés 9 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 17 août 2007 - 15 août 2007 à 01:06
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 15 août 2007 à 02:19
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

cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 18
15 août 2007 à 01:46
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..
3
cs_Webjojo Messages postés 9 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 17 août 2007
15 août 2007 à 01:57
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 ;)
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 18
15 août 2007 à 02:19
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..
0