Supprimer élément de listbox dans BDD en VB ?

Résolu
Bonjour à tous ,

je travaille sur visual basic 2008 et une base de données access 2000
je voudrais savoir comment fait-on pour supprimer un élement qui est dans une listebox et qui se supprime en meme temps dans ma base de donnée

Merci

4 réponses

Résumé de la discussion

Le fil examine comment supprimer un élément d'une ListBox et supprimer simultanément l'enregistrement correspondant dans une base Access 2000 avec VB 2008 sous Windows XP. Des propositions préconisent d'ouvrir la connexion OleDb avant la boucle et d'exécuter la suppression dans la base, tout en gérant correctement l'itération de la ListBox. D'autres signalent une erreur de référence d'objet lors de l'itération (For i = LB_Liste.Items.Count - 1 To 0 Step -1), indiquant un souci d'initialisation ou de synchronisation entre ListBox et la base. D'autres interventions évoquent des approches non directement liées, comme l'usage d'un FolderBrowserDialog plutôt que de sélectionner des fichiers, sans apporter d'élément concret à la suppression en base.

Bobot (l’IA à votre service)
  1. moi je lai fait mais avec une checbox via un formulaire html je te fille mon code peut etre sa tinspirera

    $supr=(isset($_POST['supr']));

    if($supr==1)
    {
    $idsupr=$_POST['supr'];
    $req="delete from client where id='$idsupr' ";
    $del=mysql_query($req);
    }
    0
    1. bha merci quand meme mais j'ai obligé de préciser sur quoi je travailler , je le fais sur visual basic avec une base access

      merci quand meme ;)
      0
    2. lol bin tant pissa aidera peut etre certain bonne chance a toi la je peut pas taider
      0
    3. oué peut etre Lol
      Merci quand meme ;)
      bonne journé a toi
      0
  2. Tu veux que ce soit fait en 1 fois ou il peut y avoir deux étapes (1 suppression de la liste + 1 suppression de la bdd) ?

    Pour juste le supprimer de la liste, va voir par ici, on y a passé pas mal de temps : https://forums.commentcamarche.net/forum/affich-18146667-retirer-des-element-d-une-listbox-en-vb
    0
    1. nan je veux juste choisir un élément dans ma liste et cliquer sur supprimer (un bouton) et qu'il soit supprimer de ma base de données
      0
    2. Si tu rajoutes une ligne de code pour supprimer dans la base de donnée (DELETE FROM table WHERE ....) à la solution que je t'ai proposé ça devrait le faire.
      0
    3. quelle solution ? :S
      0
    4. je viens de trouver ce code sur un forum
      ques tu en pence ?

      Dim C As Integer = ListBox1.SelectedItems.Count
      While C <> 0
      Dim cmd As SqlCommand
      cmd = Maconnexion.CreateCommand
      cmd.CommandText = "DELETE FROM dbo.client WHERE nom = " & ListBox1.SelectedItem.ToString & " ; "
      MsgBox(cmd.CommandText)
      cmd.ExecuteNonQuery()
      C = C - 1
      Dim I As Integer = ListBox1.SelectedIndex
      'ListBox1.SelectedIndices.Remove(I)
      ListBox1.Items.RemoveAt(I)
      End While
      End Sub
      0
  3. Peux tu tenter ce code là et me dire ce que ça fait ?
    Dim LB_Liste As ListBox
            Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\Mes documents\bdd.mdb")
            Dim oleCmd As New OleDb.OleDbCommand()
            oleCmd.Connection = oleDbConnex
            For i = LB_Liste.Items.Count - 1 To 0 Step -1
                If LB_Liste.GetSelected(i) Then
                    oleCmd.CommandText = "Delete * from Joueurs where NomJoueur = '" & LB_Liste.Items(i).ToString & "' "
                    oleCmd.ExecuteReader()
                    LB_Liste.Items.RemoveAt(i)
                    i = i - 1
                End If
            Next i
    
    
    0
    1. j'ai mi le code que tu ma passé , et quand je clique sur mon bouton

      dans mon code , il met la ligne en jaune :
      For i = LB_Liste.Items.Count - 1 To 0 Step -1

      et dit " la référence d'objet n'est pas definie à une instance d'un objet"
      0
    2. Excuse moi, je t'ai donné une ligne de trop.
      Enlève la ligne Dim LB_Liste As ListBox (utilisée pour faire mes tests)

      Et pense à corriger les LB_liste en fonction du nom de ta listebox.
      0
    3. maintenant il me met cette ligne la en jaune :
      oleCmd.ExecuteReader()

      et me dit " executereader neccesite une connexion ouverte et disponible.la connexion est actuellement fermé"
      0
    4. rajoute cela juste avant la boucle For :
      oleDbConnex.Open()
      0
    5. ah ca marche =)
      je te remercie =)
      0
  4. VOIla la solution pour supprimer un element dans une listebox dans une base de données access :

    Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\Mes documents\bdd.mdb")
    Dim oleCmd As New OleDb.OleDbCommand()
    oleCmd.Connection = oleDbConnex
    oleDbConnex.Open()
    For i = LB_Liste.Items.Count - 1 To 0 Step -1
    If LB_Liste.GetSelected(i) Then
    oleCmd.CommandText = "Delete * from Joueurs where NomJoueur = '" & LB_Liste.Items(i).ToString & "' "
    oleCmd.ExecuteReader()
    LB_Liste.Items.RemoveAt(i)
    i = i - 1
    End If
    Next i
    0