Partage
  • Partager sur Facebook
  • Partager sur Twitter

combobox vb.net

    18 août 2017 à 12:49:29

    Bonjour, svp  svp je veux savoir un code qui permet d'ajouter ,supprimer,modifer et afficher les données d'un combobox (je travaille avec une base de données access),merci pour votre collaboration
    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2017 à 13:39:39

      • Partager sur Facebook
      • Partager sur Twitter

      Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

        19 août 2017 à 1:10:57

        mon probleme c'est que le resultat affiché dans le combo est en double  , voici le code ainsi le formulaire:

        Imports System.Data.OleDb

        Public Class Form1
            'global declaration

            Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\houssem\Desktop\notice\soccerDB.mdb;"
            Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection(conString)
            Dim adapter As OleDb.OleDbDataAdapter
            Dim cmd As OleDb.OleDbCommand
            Dim dt As DataTable = New DataTable()
            Private Sub populate(ByVal name As String)
                'sql stmt
                Dim sql As String = "INSERT INTO soccerTB(P_NAME) VALUES (@NAMES)"
                cmd = New OleDb.OleDbCommand(sql, con)
                'add parameters
                cmd.Parameters.AddWithValue("@NAMES", name)
                'open connection and insert
                Try
                    con.Open()
                    'execute statement
                    If cmd.ExecuteNonQuery() > 0 Then
                        MsgBox("successfully entred data")
                    End If
                    'clear text
                    nameTxt.Text = ""
                    con.Close()
                    'Retreive()
                Catch ex As Exception
                    MsgBox(ex.Message)
                    con.Close()
                End Try
            End Sub
            Private Sub addBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addBtn.Click
                'populate()
                populate(nameTxt.Text)
            End Sub
            'retreive from db.
          
            Private Sub Update(ByVal value As String, ByVal name As String)
                Dim sql As String = "UPDATE soccerTB SET P_NAME='" + value + "'WHERE P_NAME='" + name + "'"
                cmd = New OleDb.OleDbCommand
                'execute
                Try
                    con.Open()
                    adapter.UpdateCommand = con.CreateCommand()
                    adapter.UpdateCommand.CommandText = sql
                    If adapter.UpdateCommand.ExecuteNonQuery() > 0 Then
                        MsgBox("successfuly updated")
                    End If
                    con.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                    con.Close()
                    ' Retreive()
                End Try
            End Sub

            Private Sub updateBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles updateBtn.Click
                Update(nameTxt.Text, ComboBox1.SelectedItem)
            End Sub

          
            Public Sub delete(ByVal name As String)
                Dim sql As String = "DELETE FROM soccerTB WHERE P_NAME='" + name + "'"
                cmd = New OleDb.OleDbCommand(sql, con)
                'execute
                Try
                    con.Open()
                    adapter.DeleteCommand = con.CreateCommand()
                    adapter.DeleteCommand.CommandText = sql
                    If MessageBox.Show("etes vous sur ?", "DELETE", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) = DialogResult.OK Then
                        If (adapter.DeleteCommand.ExecuteNonQuery > 0) Then
                            nameTxt.Text = ""
                            MsgBox("successfully Deleted")
                        End If
                    End If
                    'close connection
                    con.Close()
                    ' Retreive()
                Catch ex As Exception
                    MsgBox(ex.Message)
                    con.Close()
                End Try
            End Sub
            Private Sub deleteBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles deleteBtn.Click
                delete(ComboBox1.SelectedItem)
            End Sub

            Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                con.Open()
                Dim cm As New OleDbCommand("SELECT * FROM soccerTB", con)
                Dim dr As OleDbDataReader = cm.ExecuteReader
                While dr.Read
                    ComboBox1.Items.Add(dr(1).ToString)
                End While
                dr.Close()
                con.Close()
            End Sub

            Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
                nameTxt.Text = ComboBox1.SelectedItem
            End Sub

            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sortirBtn.Click
                Me.Close()
            End Sub

          
         
        End Class

        • Partager sur Facebook
        • Partager sur Twitter
          19 août 2017 à 1:45:36

          Quand tu mets du code, pourrais tu utiliser les balises fait pour ? Ce serais plus simple à lire ;)

          N'ayant pas le contenu de la base de donnée, et je comprend cela peut être "confidentielle", je ne sais pas avancer plus loins, il me manque des informations dans le projet que j'ai créer et la base de donnée.

          S'il y a un/des doublons dans la combobox, tu peux toujours utiliser cette p'tite fonction qui fait le taff :

           Private Sub SupprDoublon(ByVal ctrl As ComboBox)
                  For i = ctrl.Items.Count - 1 To 0 Step -1
                      For a = ctrl.Items.Count - 1 To i + 1 Step -1
                          If ctrl.Items(i) = ctrl.Items(a) Then
                              ctrl.Items.RemoveAt(a)
                              Exit For
                          End If
                      Next a
                  Next i
              End Sub



          • Partager sur Facebook
          • Partager sur Twitter

          Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

            19 août 2017 à 3:58:04

            Merci beaucoup Monsieur vanaur, le formulaire  fonctionne bien, il reste maintenant une seule chose c'est de faire un controle qui ne  laisse pas l'utilisateur d'ajouter un nouveau nom s'il existe dans le combobox en affichant un msgbox

            a props de base de donnée je travaille avec access voici une capture ecran de la table sur laquel en travail:

            • Partager sur Facebook
            • Partager sur Twitter
              19 août 2017 à 13:31:50

              hosmano a écrit:

               c'est de faire un controle qui ne  laisse pas l'utilisateur d'ajouter un nouveau nom s'il existe dans le combobox en affichant un msgbox

              Et bien pur ce faire, une simple condition suffit, lors de l'ajout en appuyant sur le bouton add j'imagine, tu peux t'inspirer de la fonction que je t'ais donné au dessus pour détecter si plusieurs fois un même texte apparaît, et si c'est le cas : MsgBox et ExitSub ;)

              -
              Edité par vanaur 19 août 2017 à 13:32:26

              • Partager sur Facebook
              • Partager sur Twitter

              Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                21 août 2017 à 1:10:24

                bonjour, quand je clique sur les bouton update ou delete un message affiche " object reference not set to an instance of an object"
                • Partager sur Facebook
                • Partager sur Twitter
                  21 août 2017 à 13:10:43

                  Ha... C'est ce que je craignais. En supprimant les doublons, l'applications à dût "couper" une liaison avec l'item de la BDD, ou c'est que ce que tu tentes de supprimer, à déjà été supprimer, et donc n'existe plus et l'application ne peut donc pas le...supprimer. Mais bon, comme je l'ai déjà dis, je ne peut pas affirmer ça, car je ne m'y connais pas assez en gestion de base de donné en VB.net :honte:.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                    21 août 2017 à 18:21:02

                    Erreur Majeure d'Architecture !!!

                    Vous devez implémenter les vérifications là où elles ont un sens.

                    Saut erreur de ma part, le fait de vérifier si "P_NAME" existe est la mauvaise formulation de la vraie contrainte : "Que chaque enregistrement de la table "soccerTB" doit avoir un "P_NAME" unique.

                    Il s'agit donc d'une problématique de cohérence des données, donc dans la couche données, et cela n'a rien à faire directement dans la couche d'IHM.

                    Il est trivial d'ajouter la contrainte d'unicité sur une colonne d'une table.

                    https://msdn.microsoft.com/en-us/library/bb177891%28v=office.12%29.aspx

                    Une fois la cohérence des données assurées, en utilisant les outils de scaleffolding (génération automatique de code, comme Entity Framework par exemple) ces contraintes seront propagées pour facilité la mise au point des couches métiers et graphiques associées.

                    Si vous avez pas trop foiré l'utilisation des outils, les DataTable associés auront des contraintes correctement configurées.

                    https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/datatable-constraints

                    Après, si vous galérez à utiliser les outils de scaleffoldin, vous pouvez toujours mettre en place les contraintes vous même.

                    Vous avez déjà le bon reflexe d'utiliser des DataAdapters, mais vous vous en servez très très mal.

                    Utilisez les systématiquement avec des DataSet/DataTable au lieu de vous en servir comme des DataReader complètement obsolètes.

                    La DataTable fera la vérification automatiquement dés la tentative d'insertion et vous n'aurez plus qu'à ajouter le feedback visuel correspondant lors que le DataTable vous enverra bouler.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      22 août 2017 à 0:58:25

                      le problème est résolu, il s'agit de contrainte d'unicité, un grand merci pour vanaur et bacelar qui m'ont aidé a résoudre les prolèmes  lors de la realisation de mon application

                      il me reste que la dernière partie c'est d'ecrire un code vb.net qui me permet d'envoyer un e-mail vers plusieurs destinataires (les conatctes sont enregistrés dans ma base access), merci de m'aider a finir cette partie

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 août 2017 à 2:12:01

                        /*Pour ce faire, une simple boucle suffit, a laquelle pour chaque itération, tu envois à un contacte.*/ Regarde la documentation, tout y est.

                        -
                        Edité par vanaur 22 août 2017 à 2:13:22

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                        combobox vb.net

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown