Je n'arrive pas à supprimer des lignes de ma bd avec recordset

Résolu
Signaler
Messages postés
152
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
10 avril 2017
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour tout le monde,

J'ai une base de données qui contient deux tables.

Une table avec des noms de paramètes (météo, humeur...) et des valeurs de paramètres (brouillard...)

J'aimerais supprimer un paramètre et ses valeurs.

Pour cela, j'utilise ce code :

Private Sub mnuParSupprimer_Click()    sql "SELECT parametre.*, valeur_parametre.* FROM parametre LEFT JOIN valeur_parametre ON parametre.id valeur_parametre.ref_parametre WHERE (((parametre.id)=1))"
    Set rsParametre = BDOuvrirTable(sql, False)
    While Not rsParametre.EOF
        rsParametre.Delete
        rsParametre.MoveFirst
    Wend
    Call remplir_liste
End Sub


Malheureusement, rien ne s'efface de ma table.

Sauriez-vous  me dire où j'ai fait l'erreur ?

Merci d'avance.

beegeezzz

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
En effet, ça l'efface de ton RecordSet et pas de la table.

Pour effacer (comme pour insérer), on n'utilise pas de RecordSet, juste du SQL :
   Dim sSQL As String
   Dim r As Long
   sSQL = "Delete * From maTable Where ..."
   maConnexion.Execute sSQL, r
   MsgBox CStr(r) & " fiches supprimées"

Si tu dois ne remettre à blanc un ou deux champs parmi d'autres dans une même table (sans effacer la ligne entière), c'est un Udate SQL qu'il faut faire sur le même principe :   sSQL "Update maTable Set monChamp '' Where ..."

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
159
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
8 janvier 2010
2
Private Sub mnuParSupprimer_Click()
      leparametre = tavaleurasup.text 'Exemple      strRequete "Delete * From parametre join valeur_parametre ON parametre.id valeur_parametre.ref_parametre WHERE parametre.id=" &amp; cInt(leparametre)
      Dim oConnection AsNew SqlConnection("ta string de connexion")
      Dim oCommand AsNew SqlCommand(strRequete, oConnection)
      oConnection.Open()
      oCommand.ExecuteNonQuery()
      oConnection.Close()
Call remplir_liste
End Sub


Bonne continuation
               
Messages postés
152
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
10 avril 2017
1
Bonjour,

Un tout grand merci à vous deux pour vos réponse.

Jack ==> donc impossible de supprimer un enregistrement complet de ma bd avec un recordset ? on est obligé de passer par une chaine sql  ?

SUPRA3000 ==> merci beaucoup pour ton exemple, je vais le tester et je reviens te dire quoi.

Encore merci à vous deux.

beegeezzz
Messages postés
152
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
10 avril 2017
1
Supra,

ça ne serait pas de l'ADO ton code ?

J'ai oublié de stipuler que j'utilisais DAO.

Beegeezzzz
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Un RecordSet (RS) n'est qu'une extraction de ta DB.
Ce que tu modifieras dans ton RS n'affectera pas ta DB, sauf avec un RS.Update, mais si tu supprimes une des lignes du RS, cette ligne ne sera pas concernée par le RS.Update puisqu'elle n'y est plus !
(ne pas confondre le RS.Update avec l'instruction SQL Update)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)