SUPPRESSION EN BOUCLE DANS UNE LISTEBOX

Résolu
winvsmac Messages postés 84 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 14 décembre 2016 - 11 nov. 2009 à 14:02
Ahmed402 Messages postés 21 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 16 avril 2010 - 12 nov. 2009 à 16:53
Bonjour à tout le monde,

Je reviens ici pour m'aider à résoudre un petit bug ... (environnement VB6).

Sur un formulaire, j'ai une listebox qui présente une liste d'éléments. Sur cette liste, la case à cocher est affichée, et tous les éléments sont sélectionnés.

J'ai un bouton sur ce form qui execute le code suivant :

choix = MsgBox("Confirmez-vous la suppression ?", vbYesNo + vbCritical, "Confirmation de suppression")
If choix = vbYes Then
    For i = 0 To Liste.ListCount - 1
        If Liste.Selected(i) = True Then
            sql = "DELETE * from T_SOLUCES where id like '*" & Mid(Liste.Text, 1, 6) & "*'"
            db.Execute sql
        End If
    Next i
    MsgBox "Suppression effectuée !", vbOKOnly + vbInformation, "Message"


Le problème que j'ai est que seulement un élément est supprimé (le dernier en l'occurence) alors que je voudrais qu'ils le soient tous ....

Merci pour vos pistes.

Bien cordialement
Jerome

4 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
11 nov. 2009 à 14:11
Bonjour,
Affiche ta sql (par msgbox, par exemple) et tu vas très vite comprendre pourquoi !
3
winvsmac Messages postés 84 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 14 décembre 2016
11 nov. 2009 à 14:16
En effet, ma listebox comportant 3 éléments, en affichant ma commande SQL en msgbox, je vois que mon code boucle sur la même référence, c'est-à-dire la dernière.

C'est mon 'For i = 0 to liste.listecount -1' qui cloche je pense.
0
winvsmac Messages postés 84 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 14 décembre 2016
11 nov. 2009 à 14:20
C'est bon, je viens de trouver. Avec ceci ça va beauicoup mieux :

sql = "DELETE * from T_SOLUCES where id like '*" & Mid(Liste.List(i), 1, 6) & "*'"


Merci :-)
0
Ahmed402 Messages postés 21 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 16 avril 2010
12 nov. 2009 à 16:53
For i = 0 To Liste.Count - 1
        If Liste.item(i).eval(Liste.selectedItem) Then
            sql = "DELETE * from T_SOLUCES where id like '*" & Mid(Liste.item(i).Text, 1, 6) & "*'"
            db.Execute sql
        End If
    Next i
0
Rejoignez-nous