3 pièce(s) jointe(s)
Problème BindingSource qui filtre deux DataGridView en même Temps
Bonjour .
Voila j'ai un petit problème .
J'ai crée deux datagridview (avec deux Datasources différentes) .
Dans le premier datagridview , Pour filtrer les données et afficher les infos d'un patient donné grâce a son Identifiant "Num Ptnt" , j'ai eu recours au BindingSource avec cette commande :
Code:
DtGridBS.Filter = "NumPtnt = '" & TextNumPat.Text & "'"
Et cela m'affiche ça :
Pièce jointe 179892
Maintenant , je ferme le programme (vous saurai pourquoi plus tard)
Dans le 2em Datagrid , j'affiche les consultations et infos générales (médicaments , contenance) , indépendamment du numéro du patient ou autres.
Et cela m'affiche sa :
Pièce jointe 179891
Cela marche bien et sans aucun soucis . (pour les boutons consultations , médicaments , Contenance)
Mais le problème survient lorsque j'appuie sur les boutons Consultations et Info Patient en même temps :
Pièce jointe 179893
Les deux Datagrid sont filtrés par le BindingSource bien qu'ayant des datasources différentes.
Ils ont un point en commun , ("NumPtnt") qui est un attribut dans la base de donnée acces 2007 qui est utilisé par les deux datasources , je me dit que le Bindingsource s'est permis de filtré tous les DataTables du moment que dans le DataAdapter , il y est mentionner "NumPtnt"
Y aurais t-il une commande , contrainte , des test (if , while ect..) bref n'importe quoi qui pourrais indiquer au BindingSource de se limiter au NumPtnt du Datagrid1 ou du moins de la datasource1 ? au lieu de filtrer les deux ?
La partie du code la plus intéressante , avec déclaration du Bindingsource (c'est un peu long , je me suis permis de couper) :
Code:
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 46 47 48 49 50 51 52 53 54 55 56
| Imports System.Data.OleDb
Public Class Form1
Dim Cnx As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Kane\Desktop\Cabinet Medical\Cabinet Medical.mdb")
Dim daPat As New OleDbDataAdapter("Select * From Patients", Cnx)
Dim daConsult As New OleDbDataAdapter("Select * From Consultations", Cnx)
Dim daCont As New OleDbDataAdapter("Select * From Contient", Cnx)
Dim daMed As New OleDbDataAdapter("Select * From Medicaments", Cnx)
Dim daCons As New OleDbDataAdapter("Select * From Consultations , Medicaments , Contient Where Medicaments.NumMedicament = Contient.NumMedicament AND Consultations.NumConsult = Contient.NumConsult", Cnx)
Dim dst As New DataSet
Dim dtr As DataRow
Dim dtPat As DataTable
Dim dtConsult As DataTable
Dim dtMed As DataTable
Dim dtcont As DataTable
Dim Db As OleDbCommandBuilder
Dim i As Integer
Dim dtCons As DataTable
Dim numligne As Integer
Dim NumPtnt As Long
Dim DtGridBS As New BindingSource
Sub affichePat()
TextNumPat.Text = dtPat.Rows(numligne).Item(0)
TextNom.Text = dtPat.Rows(numligne).Item(1)
TextPre.Text = dtPat.Rows(numligne).Item(2)
TextSex.Text = dtPat.Rows(numligne).Item(3)
TextDne.Text = dtPat.Rows(numligne).Item(4)
TextProf.Text = dtPat.Rows(numligne).Item(5)
TextAds.Text = dtPat.Rows(numligne).Item(6)
End Sub
Sub vider()
TextNumPat.Clear()
TextNom.Clear()
TextPre.Clear()
TextSex.Clear()
TextDne.Clear()
TextProf.Clear()
TextAds.Clear()
End Sub
Sub afficheCons()
Dim R As String
'daCons = New OleDbDataAdapter("Select * From Consultations , Medicaments , Contient Where Medicaments.NumMedicament = Contient.NumMedicament AND Consultations.NumConsult = Contient.NumConsult AND Consultations.NumPtnt=" & Val(TextNumPat.Text), Cnx)
daCons.Fill(dst, "Consultations")
dtCons = dst.Tables("Consultations")
dtCons.Clear()
daCons.Fill(dst, "Consultations")
dtCons = dst.Tables("Consultations")
affichePat()
DataGridView1.DataSource = dtCons
DtGridBS.DataSource = dtCons
Me.DataGridView1.Columns(8).Visible = False
Me.DataGridView1.Columns(9).Visible = False
DtGridBS.Filter = "NumPtnt = '" & TextNumPat.Text & "'"
End Sub
Sub afficheBD()
DtGridBS.Filter = "NumPtnt = '" & TextNumPat.Text & "'"
End Sub |