Supprimer ligne datagridview selon selection combobox [Résolu]

Messages postés
11
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
22 mai 2019
-
Bonjour,
J'ai creer un datagridview depuis une table access avec des combobox permettant de filtrer les donnees seulement qund je selectionne par exemple un client avec la combobox il me surligne la ligne mais laisse les autres alors que j'aimerais voir uniquement les lignes concernees.
Malgre mes recherches sur differents forums, impossible de trouver

Voici le code qui permet de remplir le dgv et les combobox et de selectionner
        
connexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ITDEV\Project\Tool_Processing\Tool_Processing\ToolDatabaseVB_be.accdb"
        cn = New OleDbConnection(connexion)

        Dim DtSet As New DataSet()

        Dim UneTable1 As New DataTable
        Dim UneTable2 As New DataTable
        Dim UneTable3 As New DataTable
        Dim UneTable4 As New DataTable
        Dim UneTable5 As New DataTable

        Dim cn1 As New OleDbDataAdapter("select distinct PN from tblToolRequisition Order by PN asc", cn)  ' tblPN
        Dim cn2 As New OleDbDataAdapter("select distinct UCASE(CustomerName) as CustomerName from tblToolRequisition", cn) ' tblCustomer
        Dim cn3 As New OleDbDataAdapter("select distinct ToolDRG from tblToolRequisition Order by ToolDRG asc", cn) ' tblTool
        Dim cn4 As New OleDbDataAdapter("select distinct RequistionNum from tblToolRequisition Order by RequistionNum asc", cn) ' tblRequisition
        Dim cn5 As New OleDbDataAdapter("Select ReqDate, RequistionNum, Priority, UCASE(CustomerName) as CustomerName, PN, PartRev, ToolDRG, ToolRev, Description, Quantity, DueDate, RequiredBy, StatusID, DeptName,Operation, ToolNotes, ASSYID from tblToolRequisition", cn)

        cn1.Fill(UneTable1)
        cn2.Fill(UneTable2)
        cn3.Fill(UneTable3)
        cn4.Fill(UneTable4)
        cn5.Fill(UneTable5)

        DtSet.Tables.Add(UneTable1)
        DtSet.Tables.Add(UneTable2)
        DtSet.Tables.Add(UneTable3)
        DtSet.Tables.Add(UneTable4)
        DtSet.Tables.Add(UneTable5)

        DtSet.Tables(0).TableName = "tblPN"
        DtSet.Tables(1).TableName = "tblCustomer"
        DtSet.Tables(2).TableName = "tblTool"
        DtSet.Tables(3).TableName = "tblRequisition"
        DtSet.Tables(4).TableName = "tblToolRequisition"

        DataGridView1.DataSource = DtSet.Tables("tblToolRequisition")

        ComboBox1.DataSource = DtSet.Tables("tblPN")
        ComboBox1.DisplayMember = "PN"

        ComboBox2.DataSource = DtSet.Tables("tblCustomer")
        ComboBox2.DisplayMember = "CustomerName"

        ComboBox3.DataSource = DtSet.Tables("tblTool")
        ComboBox3.DisplayMember = "ToolDRG"

        ComboBox4.DataSource = DtSet.Tables("tblRequisition")
        ComboBox4.DisplayMember = "RequistionNum"
    
Private Sub LesComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged
        Dim IndexColonne As Integer
        Dim IndexLigne As Integer
        DataGridView1.ClearSelection()

        Select Case sender.name
            Case "ComboBox1"
                IndexColonne = 4
            Case "ComboBox2"
                IndexColonne = 3
            Case "ComboBox3"
                IndexColonne = 6
            Case "ComboBox4"
                IndexColonne = 1
        End Select
        For IndexLigne = 0 To DataGridView1.Rows.Count - 1
            Try
                If DataGridView1.Item(IndexColonne, IndexLigne).Value = sender.Text Then
                    DataGridView1.Rows(IndexLigne).Selected = True
                End If
            Catch
            End Try
        Next
    End Sub


Merci d'avance pour vos reponses
Afficher la suite 

6 réponses

Messages postés
14045
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2019
324
0
Merci
Bonjour
Je ne voies pas le rapport entre ton titre et le corps de la question, alors je vais répondre au corps.

Entre le dataset et le datagridview mets un bindingsource.
Lui peut être filtré comme tu le souhaites
paradize99
Messages postés
11
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
22 mai 2019
-
desole je me suis emmelee les pinceaux entre 2 questions
Commenter la réponse de Whismeril
Messages postés
11
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
22 mai 2019
0
Merci
J'ai essayé de mettre un binding source mais quand j'avais essayé je ne pouvais plus filtrer les combobox
Commenter la réponse de paradize99
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
salut
avec quoi programmes tu (visual studio, vb express …)?
Commenter la réponse de ManuAntibes
Messages postés
11
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
22 mai 2019
0
Merci
avec visual studio 2017
Commenter la réponse de paradize99
Messages postés
11
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
22 mai 2019
0
Merci
Bonjour, entre temps j'ai trouvé, voici le code si ca interesse qq

    Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged

        Dim MyTable As New System.Data.DataTable
        Dim DtSet As New DataSet
        Dim cmd As New OleDbDataAdapter("select * from tblToolRequisition where PN='" & ComboBox1.Text & "'", cn)

        cmd.Fill(MyTable)

        DtSet.Tables.Add(MyTable)

        DtSet.Tables(0).TableName = "tblToolRequisition"
        DataGridView3.DataSource = DtSet.Tables("tblToolRequisition")

    End Sub
Commenter la réponse de paradize99
Messages postés
14045
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2019
324
0
Merci
Et t'as essayé le binding source?
Moins de lignes de code, et plus rapide puisque tu n'appelles pas la bdd....
Commenter la réponse de Whismeril