IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.NET] Filtre combobox - Datasource


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut [VB.NET] Filtre combobox - Datasource
    Bonjour ,

    J'ai une application avec des combobox qui se remplissent via une datasource .
    Cette datasource est une des 3 tables de ma BDD ( SQL Server .mdf ) .
    J'ai "configurer" la source via la fenetre propriétes de visual Studio 2008 .
    Le probléme c'est que dans mes combobox , j'ai des valeurs null , ce qui donne des trous dans ma liste .
    J'ai tenter de faire une boucle pourparcourir chaque élements de mes combobox, mais etant donnée que les combobox sont liés a une datasource "Impossible de supprimer les valeurs "
    J'aimerais savoir si , je pouvez faire un filtre pour qu'il évite d'ajouter les valeur "null" .


    Merci a vous d'avance !


  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Salut,
    comment as-tu configuré ta datasource ?
    Parce qu'il est possible d'alimenter ta combobox avec une datasource issue d'une requête sql (et non juste d'une table). A ce moment là tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT champ1
    FROM MaTable
    WHERE Champ1 IsNot Null
    Et puis si des valeurs nulles apparaissent ça veut dire qu'elles sont présentes dans la base de données, est ce que c'est normal ??

    @+
    ~ Lola ~

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Bonjour lola06,

    Tout d'abord merci pour ta réponse

    Pour la datasource , dans le champs datasource (propiétes de mon combobox)

    J'ai datasource : ListeDonnéesBindingSource
    ListeDonnées étant le nom de ma table .

    DisplayMember : listClassementType ( Une des colonnes )

    ValueMember : listClassementType

    Intéressant , pour la requetes sql , mais pourrez tu m'expliquer la marche a suivre ? car malheureusement je fait trop de chose en graphique donc je peine a faire du code qui fonctionne .


    Oui , c'est "normal" que j'ai des valeurs null , parce que ma table a 17 colonnes , il y a des colonnes vides , d'autre ou il y a seulement 2 valeurs , et d'autre ou il y en a 26 . C'est pour donner a l'utilisateur des possibilités "contrôlés" . Par exemple j'ai une colonnes "ChampApp" ou il peut que y avoir Interne ou externe , ou j'ai une colonne "etablissement" ou il y a 26 choix possible .

    Merci

  4. #4
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors il existe deux méthodes pour faire ceci :
    - via l'éditeur :
    Il est possible de configurer ta datasource directement via l'editeur. A un moment donné il est possible soit de choisir les données via une table soit d'écrire une requête sql (cf pièce jointe).
    - via le code :
    http://faqvbnet.developpez.com/?page...ill_dataReader

    Quel type de base de données utilises-tu ?
    ~ Lola ~

  5. #5
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Arf , je ne trouve pas la configuration en mode graphique ! J'ai trouver pour ajouter une source soit donnée , service ou objet . Mais a priori ce n'est pas par la


    Avec le code le souci , ce que je ne sait pas ou le mettre !


    J'utilise une base SQL Server .mdf .

  6. #6
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Comment ajoute-tu ta datasource exactement ? A un moment donné tu as bien spécifié sur quelle table elle devait aller ?

    Sinon regarde le code source de ta combobox, à un moment donné il y aura la requete sql qui alimente la datasource.
    ~ Lola ~

  7. #7
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Voici un screenshot qui seras surement plus parlant :

    Cf piéce jointe

    J'ai essayer de voir ou il définit , voila ce que j'ai trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    '
            'ComboBoxChampsDapp
            '
            Me.ComboBoxChampsDapp.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource
            Me.ComboBoxChampsDapp.Cursor = System.Windows.Forms.Cursors.Arrow
            Me.ComboBoxChampsDapp.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.ListeDonnéesBindingSource, "listChampApp", True))
            Me.ComboBoxChampsDapp.DataSource = Me.ListeDonnéesBindingSource2
            Me.ComboBoxChampsDapp.DisplayMember = "listChampApp"
            Me.ComboBoxChampsDapp.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.ComboBoxChampsDapp.FormattingEnabled = True
            Me.ComboBoxChampsDapp.Location = New System.Drawing.Point(133, 139)
            Me.ComboBoxChampsDapp.Name = "ComboBoxChampsDapp"
            Me.ComboBoxChampsDapp.Size = New System.Drawing.Size(121, 21)
            Me.ComboBoxChampsDapp.TabIndex = 5
            Me.ComboBoxChampsDapp.ValueMember = "listEtablissement"
            '
            'ListeDonnéesBindingSource
            '
            Me.ListeDonnéesBindingSource.DataMember = "ListeDonnées"
            Me.ListeDonnéesBindingSource.DataSource = Me.GdocDBDataSet1
    Merci
    Images attachées Images attachées  

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    En dessous de ton designer, il y a toutes les sources de données que tu utilises, retrouver celle que tu utilises pour ton combobox et vois si tu peux la configurer.
    Je suis sur VS 2005 donc je peux pas te dire via l'editeur exactement par où passer...
    ~ Lola ~

  9. #9
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    J'ai trouver ou mettre une requetes dans l'IDE . Au faite on le Design de notre form . Il y a les composant DataBinding , si on clic dessus il y a une fleche on peut y ajouter une requete . ou alors sur le composant en lui meme , toujours la meme fleche , ajout d'une requetes .
    mais lorsque je crée une nouvelle requetes , il me dit : " Que ma requetes est différentes de celle de bases " , impossible de passer par la !
    Donc ce que je fait , c'est que je crée une requetes dans mon dataset ( le concepteur en graphique ) , j'ai aussi le méssage , mais contrairement à tout à l'heure là il génere bien la requetes .
    ensuite je retourne sur le composant , sur la fleche , et je vais chercher une requetes déja crée . ensuite dans mon form_load , j'apelle cette methode la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub FillByNotNullChampAppToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Try
                Me.ListeDonnéesTableAdapter.FillByNotNullChampApp(Me.GdocDBDataSet1.ListeDonnées)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
     
        End Sub
    ....



    PS : Pourrait tu m'expliquer un petit truc ^^ , j'aimerais faire un espace loggin . Je voudrais chercher dans une autre table selon le login taper si il y a un retour . Si il n'y en a pas c'est que l'utilisateur est inconnu si il y en a un je peux tester le mot de passe . mais je comprend toujour pas comment me servir de ce qui est retourné ( le dataset je crois ou bien le dataTable )
    Voici le code de ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     'login taper 
                Dim login As String = TextBoxLogin.Text
                'recherche du login dans la table tbParametres
                Dim oDt As New GDoc.DataSet1.tbParametresDataTable
     
                Try
     
     
     
                    oDataTable.GetDataByEtablissement(login)
     
                    'Si il n'y a aucun retour par rapport au login
     
                    If oDt.Count = 0 Then
                        MessageBox.Show("login inconnu", "Login introuvable")
                    Else
     
                    End If
                Catch ex As ConstraintException
     
                    MessageBox.Show("well", "well")
                End Try

  10. #10
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Je vien de remarquer qu'avec ce que je fait , il ne fait que le dernier et eneleve tout le reste !

    Dans ma form_load je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Me.FillByNotNullToolStripButton_Click("", System.EventArgs.Empty) ' C'est pour le combo Classement Type
            Me.FillByNotNullChampAppToolStripButton_Click("", System.EventArgs.Empty)
            Me.FillByNotNullDestinataireToolStripButton_Click("", System.EventArgs.Empty)
            Me.FillByNotNullDocTypeToolStripButton_Click("", System.EventArgs.Empty)
            Me.FillByNotNullClassSteToolStripButton_Click("", System.EventArgs.Empty)
            Me.FillByNotNullThemeProToolStripButton_Click("", System.EventArgs.Empty)
    Qui represente sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Private Sub FillByNotNullToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Try
                Me.ListeDonnéesTableAdapter.FillByNotNull(Me.GdocDBDataSet1.ListeDonnées)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
     
        End Sub
    A chaque fois , il y a une requetes pour enlever les valeur null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select mon_Champ FROM ma_Table WHERE mon_champ <> '""'
    Mais se n'effectue que le dernier , il s'effectue chacun a la suite sans rester dans en l'etat

  11. #11
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Dans un premier temps evite de mettre des accents dans tes noms de variables.

    Si tu veux assigner tes données à l'évènement load de ta page, tu peux alors le faire totalement, dans ce cas tu enlèves le datasource lié à ta combobox et tu écrit un code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Dim myConnection As Data.SqlClient.SqlConnection
    Dim myCommand As Data.SqlClient.SqlCommand
    Dim myDataReader As Data.SqlClient.SqlDataReader
    myConnection = New Data.SqlClient.SqlConnection
    myConnection.ConnectionString = 'ta connection
    myCommand = New Data.SqlClient.SqlCommand("SELECT ... FROM ... WHERE ...", myConnection)
    Try
    myConnection.Open()
    myDataReader = myCommand.ExecuteReader()
    Do Until (Not myDataReader.Read())
    me.Combobox.item.add("Champ1")
    Loop
    myDataReader.Close()
    myConnection.Close()
    Catch
    'ton message d'erreur
    End Try
    ~ Lola ~

  12. #12
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Pour ta partie login, inspire toi aussi du code précédent que j'ai posté, il faut que tu utilises le datareader. A noter toutefois que cette méthode n'est pas du tout sécurisée.

    Pour cela il faudrait que tu créée une classe dans un fichier à part avec une fonction qui fait toutes ces instructions, puis tu appelles la fonction en question depuis la page VB.NET attachée à ton formulaire.
    ~ Lola ~

  13. #13
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci lola pour cette solution , mais sa ne feras pas le meme probléme ?
    car ce que tu me propose la , sa le fait déja sans que sa soit moi qui est codé en dur ? Parce que la je n'est que la derniére opération effectué !

    je vais essayer voir ce que sa donne , sachant que j'ai 8 combo a remplir sa risque d'etre long ^^

    Merci encore à toi

  14. #14
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Ca ne sera pas forcement la même chose, car mon code fais la selection (avec value <> null) avant de rajouter les valeurs à la combobox. Or toi si j'ai bien compris ca faisait l'inverse.
    Surtout n'hésite pas à revenir s'il y a encore des problèmes et si tu as une solution poste la...
    ~ Lola ~

  15. #15
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Sa ne donne rien de bon ....

    Que mettrais tu as la place de champ1 ?
    me.Combobox.item.add("Champ1")

    Est ce possible de se parler en PV sur le chat ? Je suis dans le salon Applicatif

  16. #16
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Resolu


    je me suis servit de se code la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Imports System.Data.Sql
    Imports System.Data
    Imports System.Data.SqlClient
    Module iniCombo
        Public Sub inic()
     
            'Initialisation du combo : CHAMP APP
            Dim con As SqlConnection = Nothing
            Dim command As SqlCommand = Nothing
            Dim cs As String = "Data Source=SPB001\SQLPBE;Initial Catalog=gdoc;Integrated Security=True"
            Dim dr As SqlDataReader = Nothing
     
            Try
                con = New SqlConnection(cs)
                command = New SqlCommand("SELECT listChampApp FROM listeDonnées Where listChampApp <> '""' ", con)
     
                ' ouvrir la connexion
                con.Open()
                dr = command.ExecuteReader()
     
                ' vider le ComboBox 
                ModeSaisie.ComboBoxChampsDapp.Items.Clear()
     
     
                If dr.HasRows Then
                    ' tant que le DataReader a une ligne d'enregistrements
                    While dr.Read
                        ' ajouter la donnée au ComboBox 
                        ModeSaisie.ComboBoxChampsDapp.Items.Add(dr.GetValue(0))
                    End While
                Else
                    MessageBox.Show("No result for your Data", "Infos")
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                If Not (dr Is Nothing) Then dr.Close()
                If Not (con Is Nothing) Then con.Close()
            End Try
            ModeSaisie.ComboBoxChampsDapp.SelectedIndex = 0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/11/2006, 21h10
  2. [VB.net 2005]ComboBox.DataSource ignore l'ArrayList source
    Par Macintoc dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/08/2006, 19h31
  3. [VB.NET] Combobox, Datasource et durée d'execution
    Par lacsap49 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/05/2006, 16h06
  4. [VB.NET] ajouter combobox dans un datagrid
    Par HULK dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/10/2005, 14h30
  5. [VB.NET] filtre dans base de donnée
    Par speedtug dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/09/2005, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo