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 :

Problème BindingSource qui filtre deux DataGridView en même Temps


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 17
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    DtGridBS.Filter = "NumPtnt = '" & TextNumPat.Text & "'"
    Et cela m'affiche ça :
    Nom : capture1.PNG
Affichages : 967
Taille : 92,0 Ko

    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 :
    Nom : Capture2.PNG
Affichages : 752
Taille : 128,4 Ko

    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 :
    Nom : Capture6.PNG
Affichages : 787
Taille : 143,3 Ko


    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 : 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
    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

  2. #2
    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
    Si il n'y a pas un objectif particulier que je n'ai pas identifié, j'utiliserai 2 BindingSource (un pour chaque DataGridView).

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 17
    Par défaut
    En faite , l'objectif c'est :

    * Afficher Les infos du Patient dans le DatagridView1 , en sélectionnant le patient grâce aux boutons de la naviguation et en utilisant Un seul BindingSource permettant de filtrer les données et les comparés au Numéro du patient (NumPtnt). De ce fait , il n'affiche que les consultations , Medicaments prescrits ect.. pour Le Patient seul grâce a son numero ainsi identifié et comparé.


    *Dans le 2em Datagrid , j'affiche les données générales , Consultations , Médicaments pour vérifier les stocks et ajouter des données sans avoir Besoin de filtre ou quoi que ce soit.


    Mon Problème :
    * Le Filtre du BindingSource que j'avais mit pour le Datagrid1 avec le bouton "info patient" impacte aussi le bouton "consultation" ainsi que le datagrid2 car ils ont en commun , l'attribut NumPtnt , hors je ne voudrais qu'il filtre que l'attribut "NumPtnt" du Datagrid1 et qu'il ne touche pas au reste.

    Comment le faire ?

  4. #4
    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
    Je confirme :
    - 2 BindingSource, un pour chaque DataGridView,
    - ou datagrid2 directement relié à sa dataSource sans BindingSource.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 17
    Par défaut
    Ok , j'ai un tout petit soucis a comprendre .
    Ok donc si je récapitule bien .

    Déclaration des variables et commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     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
    Donc voici le Code du Datagrid1 avec ce fameux Binding Source qui me fatigue tant. (DtgridBS étant le nom de mon BindingSource)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            Private Sub InfoPat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InfoPat.Click
                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
    Et le Code du Datagrid2 (pour le bouton consultation , car y a problème qu'avec ce bouton car ils ont en commun l'attribut "NumPtnt" , bien qu'ayant des DataAdapter et Datatables différent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Private Sub BtnConsult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConsult.Click
            daConsult.Fill(dst, "Consultations")
            dtConsult = dst.Tables("Consultations")
            dtConsult.Clear()
            daConsult.Fill(dst, "Consultations")
            dtConsult = dst.Tables("Consultations")
            affichePat()
            DataGridView2.DataSource = dtConsult
        End Sub

    Je dois déclarer un nouveau BindingSource dans le datagrid2 ?
    Avec Filtre = Null ?
    Ou bien ?

Discussions similaires

  1. Réponses: 20
    Dernier message: 04/04/2014, 11h17
  2. Réponses: 2
    Dernier message: 12/06/2012, 08h04
  3. Réponses: 6
    Dernier message: 13/09/2010, 16h02
  4. QRLabel qui écrit deux fois la même chose
    Par 810mcu dans le forum QuickReport
    Réponses: 2
    Dernier message: 03/06/2010, 11h25
  5. Lancer deux sons en même temps...
    Par Julien_riquelme dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 03/05/2003, 17h00

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