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

Résolu
Hunzimmer Messages postés 65 Statut Membre -  
Hunzimmer Messages postés 65 Statut Membre -
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. maff
     
    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. Hunzimmer Messages postés 65 Statut Membre 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. maff
       
      lol bin tant pissa aidera peut etre certain bonne chance a toi la je peut pas taider
      0
    3. Hunzimmer Messages postés 65 Statut Membre 1
       
      oué peut etre Lol
      Merci quand meme ;)
      bonne journé a toi
      0
  2. chrij Messages postés 124 Statut Membre 49
     
    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. Hunzimmer Messages postés 65 Statut Membre 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. chrij Messages postés 124 Statut Membre 49
       
      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. Hunzimmer Messages postés 65 Statut Membre 1
       
      quelle solution ? :S
      0
    4. Hunzimmer Messages postés 65 Statut Membre 1
       
      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. chrij Messages postés 124 Statut Membre 49
     
    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. Hunzimmer Messages postés 65 Statut Membre 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. chrij Messages postés 124 Statut Membre 49
       
      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. Hunzimmer Messages postés 65 Statut Membre 1
       
      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. chrij Messages postés 124 Statut Membre 49
       
      rajoute cela juste avant la boucle For :
      oleDbConnex.Open()
      0
    5. Hunzimmer Messages postés 65 Statut Membre 1
       
      ah ca marche =)
      je te remercie =)
      0
  4. Hunzimmer Messages postés 65 Statut Membre 1
     
    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