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

Résolu
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 27 janv. 2009 à 16:36
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 27 janv. 2009 à 18:12
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

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
27 janv. 2009 à 17:39
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)
3
Supra3000 Messages postés 159 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 8 janvier 2010 2
27 janv. 2009 à 17:46
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
               
0
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 1
27 janv. 2009 à 18:04
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
0
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 1
27 janv. 2009 à 18:08
Supra,

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

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

Beegeezzzz
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
27 janv. 2009 à 18:12
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)
0