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 :

Filtre multiples DataGridView [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut Filtre multiples DataGridView
    Ne connaissant pas le langage SQL , je cherche à filtrer un DataGridview sur plusieurs critères ( 3 colonnes distinctes)

    voici ce que j'ai pu faire sur un seul critere


    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
        Private Sub Button3_Click(sender As Object, e As System.EventArgs) Handles Button3.Click
            Dim rech1 As String, rech2 As String, rech3 As String
            Dim filt As New DataView
            Dim filt1 As New DataView
            Dim filt2 As New DataView
     
            rech3 = TextBox1.Text
            rech2 = TextBox2.Text
            rech1 = TextBox3.Text
     
     
     
            If rech1 <> "" Or rech2 <> "" Or rech3 <> "" Then
                rech1 = "[N°]='" & rech1 & "'"
                rech2 = "[Designation]='" & rech2 & "'"
                rech3 = "[Fournisseur]='" & rech3 & "'"
     
     
     
                With filt
                    .Table = DBGMAODataSet.Tables("Materiel")
                    ' Trie de la vue filtrée, type string.
                    .RowFilter = rech1
                End With
     
     
     
                DataGridView1.DataSource = filt
            End If
     
     
     
        End Sub
    rowfilter permet-il un filtres multiples ?
    Merci

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonjour,

    oui, en mettant le mot-clé AND au milieu des deux critères soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .RowFilter = rech1 & " AND " & rech2 & " AND " & rech3

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 699
    Par défaut
    Bonsoir,
    ou "OR" si tu ne renseignes qu'une TextBox.

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par chrismonoye Voir le message
    Bonsoir,
    ou "OR" si tu ne renseignes qu'une TextBox.


    OR veut dire juste OU et AND veut dire ET, ce n'est pas du tout la même logique.

    S'il veut ne remplir qu'une seul TaxtBox il le peut avec des AND mais il doit tester si celle-ci est vide avant.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    filt.RowFilter = ""
    if TextBox1.Text <> "" Then
        filt.RowFilter = "[N°]='" & TextBox1.Text & "'"
    end if
    if TextBox2.Text <> "" Then
        if filt.RowFilter <> "" Then filt.RowFilter &= " AND "
        filt.RowFilter &= "[Designation]='" & TextBox2.Text & "'"
    end if
    if TextBox3.Text <> "" Then
        if filt.RowFilter <> "" Then filt.RowFilter &= " AND "
        filt.RowFilter &= "[Fournisseur]='" & TextBox3.Text & "'"
    end if
    D'ailleurs cette logique doit être utilisée aussi pour les OR si l'on ne veut pas avoir les n°, designation ou fournisseurs vide.

    Si on doit pouvoir rechercher une valeur vide, que se soit avec des OR ou des AND, le mieux est encore d'activer le textBox correspondant avec une case à cocher et de ne faire le filtre que si celle-ci est cochée au lieu de tester .

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Merci de votre aide , je fait quelqueschose de semblable.
    Je recherchais egalement comment faire une recherche de caractere mais j'ai trouver avec l'argument Like. je tripatouille la syntaxe

    j'ai cette erreur quand je me retrouve dans le cas ou je cherche sur deux champs
    La conversion de la chaîne "[Designation] like '%pompe%'" en type 'Long' n'est pas valide.

    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
    41
    42
    43
    44
    45
        Private Sub Button3_Click(sender As Object, e As System.EventArgs) Handles Button3.Click
            Dim rech1 As String, rech2 As String, rech3 As String, recha As String, rechb As String, rechc As String
            Dim filt As New DataView
            Dim filt1 As New DataView
            Dim filt2 As New DataView
     
            rech1 = TextBox1.Text
            rech2 = TextBox2.Text
            rech3 = TextBox3.Text
     
     
     
            If rech1 <> "" Then '   Or rech2 <> "" Or rech3 <> "" Then
                recha = "[N°]='" & rech1 & "'"
     
                With filt
                    .Table = DBGMAODataSet.Tables("Materiel")
                    .RowFilter = recha
                End With
            End If
     
            If rech2 <> "" And rech3 = "" Then
     
                With filt
                    .Table = DBGMAODataSet.Tables("Materiel")
                    .RowFilter = "[Designation] like '%" & rech2 & "%'"
                End With
     
            End If
     
            If rech2 <> "" And rech3 <> "" Then
                rechc = "[Fournisseur]='" & rech3 & "'"
                rechb = "[Designation] like '%" & rech2 & "%'"
                With filt
                    .Table = DBGMAODataSet.Tables("Materiel")
                    .RowFilter = rechb And rechc
                End With
     
     
            End If
     
            DataGridView1.DataSource = filt
     
     
        End Sub
    avez vous une idée ?

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      .RowFilter = rechb & "And" & rechc

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Je pense que ca vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .RowFilter = rechb And rechc
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .RowFilter = rechb & " And " & rechc
    EDIT : Grillé par Graffito, mais mets des espaces dans le AND

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

Discussions similaires

  1. Filtre sur DataGridView
    Par nakk01 dans le forum C#
    Réponses: 5
    Dernier message: 17/02/2009, 22h35
  2. Appliquer un filtre à un datagridview
    Par moha1984 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/08/2008, 15h42
  3. DirectoryInfo.GetFiles() et filtres multiples
    Par PoZZyX dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/10/2007, 22h19
  4. [C# VS 2005] multiple DatagridView - détection d'une édition
    Par SDragon dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/07/2006, 20h40

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