Ne supprime pas dans la base ACCESS [Résolu]

Signaler
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,
voila avec se code je doit supprimer une enregistrement dans ma base access.
mais le probleme c'est qu'il supprime bien la ligne dans la listview mais pas dans ma base.
Private Sub Supprimer_Click()

If (MsgBox("Confirmez la Suppression du Chantier [" & ListC.ListItems(ListC.SelectedItem.Index).ListSubItems.Item(1).Text & "]?", vbYesNo + vbQuestion, "Suppression") = vbYes) Then
    'Suppression dans la base
    Call Connect
    Sql = "Delete from client where Nom_Client='" & ListC.ListItems(ListC.SelectedItem.Index).Text & "'"
    Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
    Call Deconnect
    ListC.ListItems.Remove (ListC.SelectedItem.Index)
End If
End Sub


auriez vous une idée ?
merci
@ plus

6 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut

Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
Qu'est ce que Db ? la connection ?

ps adLockOptimistic au moins tu n'es pas pessimiste lol
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
bonsoir

oui Db est la connection
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
Bonjour,
déclarée où et comment ?
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
c'est déclaré dans un module et je l'appelle avec
Call Connect
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
"déclarée où et comment ?"
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut

La méthode RecordSet.Open est réservée aux requètes SQL qui doivent renvoyer un résultat sous forme de données extraites des tables.
Dans ton cas, la requète est un ordre sans retour. Elle doit donc être exécutée directement sur le moteur :
Db.Execute "Delete ...", r
en supposant que Db soit l'objet de connexion à ta DB.
"r" est une variable qui te renverra le nombre d'enregistrements touchés par l'instruction - ça peut servir à faire des vérifs.

Vala
Jack [MVP VB]
NB : Je ne répondrai pas aux messages privés
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
bonjour
c'est bon j'ai trouvé ,

Call Connect
    Sql = "Delete from client where Nom_Client=" & ListC.ListItems(ListC.SelectedItem.Index).Text
    Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
    Call Deconnect
    ListC.ListItems.Remove (ListC.SelectedItem.Index)
End If
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
La seule chose que tu aies faite, c'est de considéré le contenu de "Nom_Client" comme une valeur numérique au lieu d'une chaine, puisque tu as supprimé les ' encadrant la valeur.
A mon avis, ce n'est pas correct.