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 :

Tableau en vb net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut Tableau en vb net
    Bonjour,
    J’ai un problème de tableau. Je vous explique
    J’ai 4 tables dans une base de données Access qui sont : faculte, departement,classe et etudiant

    Faculte est en relation avec département
    [ Faculte ]--1,n---( Constituer )---1,1--[ Departement]

    Departement est en relation avec Classe
    [ Departement ]--1,n---( Constituer )---1,1--[ Classe]

    Classe et en relation avec etudiant
    [ Classe ]--0,n---( Constituer )---0,n--[ Etudiant]

    Je veux créer un tableau sur un formulaire vb comprenant les colonnes : numero de l’etudiant,nom de l’étudiant,prenom de l’étudiant, date de naissance de l’étudiant,lieu de naissance de l’étudiant,nom de la faculte de l'étudiant,son departement,sa classe

    Je sais pas comment faire cela ,merci d’avance !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    faut regarder du coté sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * 
    from Etudiant
    Inner join Classe  on Etudiant.RefClasse=Classe.Id
    Inner join Departement  on Classe.RefDepartement=Departement.Id
    quelque chose du genre
    essaye de faire la requete sous access jusqu'a avoir le résultat désiré


    ps : peut etre utiliser des left join si tu as des etudiants sans classes

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Merci!
    Mais comment je peux faire pour créer le tableau sur le formulaire,je sais pas comment m'y prendre!

  4. #4
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    Un DataGridView ?

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    j'ai utilisé le datagridview comme tu me l'as proposé,j'arrive à afficher les données d'une seule table ,mais pas des 3 tables ,alors comment je peux faire pour que le datagridview m'affiche les données des 3 tables qui sont en relation ?

    je vous remercie!

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut 4 tables parentes-filles en cascade
    bonjour Multiprospere
    Helas ,mpn ami le datagridview ne permet pas par un binding simple d'afficher des tables parent-fille en cascading comme dans ton cas.
    Mais myennant la classe datarow et sa fonctions GetParentRow on peut reconstituer u datagridview par code qui affiche ce que tu veux savoir:
    -table etudiant ->champ nomClasse->champ nomDepartement ->champ nomFaculte pour des fins de navigation seulement(le binding et maj des 4 datables doit etre gere par toi en code)....

    1er exemple illustre datarow et sa fonction GetChildRows(note le pluriel) ou comment recuperer les enreg. multiples d'une table fille lie par foreign cle à une table parente.La relation parent-fille et les cles primaires sont definis par code pour plus de clarte
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    'exemple illustrant relation entre 2 DataTable Classe(parent) et Etudiant(fille)  
    'Utilise DataRow et GetChildRows pour renvoyer les enreg. de DataTable Fille
    'Combobox sur DataTable (parent)
    'DataGridView sur DataTable (fille)
    'Supprimer pour cet exemple les cles primaires rajoutes par Designer XSD
    'Elles sont definies par code.
    'Idem pour les relations
    Public Class FormSimple
        Public Sub New()
     
            'Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'set ComboBox cboClasse
            Me.cboClasse.DataSource = Me.BdEtudiantDS1.Classe
            Me.cboClasse.DisplayMember = Me.BdEtudiantDS1.Classe.Columns("Nom_Classe").ColumnName
            Me.cboClasse.ValueMember = Me.BdEtudiantDS1.Classe.Columns("ID_Classe").ColumnName
        End Sub
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'Cles primaires sur les 2 tables  Etudiant et Classe 
            ' Attention Desactiver constraintes .
            Me.BdEtudiantDS1.EnforceConstraints = False
     
            Dim PrimaryKeyColumns(1) As DataColumn
            PrimaryKeyColumns(0) = Me.BdEtudiantDS1.Etudiant.Columns.Item("Numero")
            PrimaryKeyColumns(0).Unique = True
            Me.BdEtudiantDS1.Etudiant.PrimaryKey = PrimaryKeyColumns
            PrimaryKeyColumns(0) = Me.BdEtudiantDS1.Classe.Columns.Item("ID_Classe")
            PrimaryKeyColumns(0).Unique = True
            Me.BdEtudiantDS1.Classe.PrimaryKey = PrimaryKeyColumns
     
            'Relations
            Dim maRelation As DataRelation
            'Add Relations Classe parent ->Etudiant fille
            maRelation = New DataRelation("relClasseEtudiant", _
                         Me.BdEtudiantDS1.Tables("Classe").Columns("ID_Classe"), _
                        Me.BdEtudiantDS1.Tables("Etudiant").Columns("ID_Classe"), True)
            Me.BdEtudiantDS1.Relations.Add(maRelation)
     
            ' Fill the tables with data.
            Me.EtudiantTableAdapter1.Fill(BdEtudiantDS1.Etudiant)
            Me.ClasseTableAdapter1.Fill(BdEtudiantDS1.Classe)
     
            '  Active constraintes.
            Me.BdEtudiantDS1.EnforceConstraints = True
     
            Me.DataGridViewEtudiant.DataSource = Me.BdEtudiantDS1
            Me.DataGridViewEtudiant.DataMember = Me.BdEtudiantDS1.Etudiant.TableName
     
     
        End Sub
     
        Private Sub cbEtudiant_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboClasse.SelectedIndexChanged
            If Me.cboClasse.SelectedValue Is Nothing Then Return
            ' un string pour  ID_Classe  Classe selectionne   .
            Dim SelectedIDClasse As String
            SelectedIDClasse = Me.cboClasse.SelectedValue.ToString()
            'Declare a data row to hold the selected Classe's record.
            Dim drSelectedClasse As DataRow
            drSelectedClasse = _
            Me.BdEtudiantDS1.Classe.Rows.Find(SelectedIDClasse)
     
            ' Declare an array of data rows to hold the related records.
            Dim draEtudiants() As DataRow
            draEtudiants = drSelectedClasse.GetChildRows("relClasseEtudiant", DataRowVersion.Current)
     
            ' Display the length of the array (number of etudiants)
            ' and the IDClasse in the form caption.
            Me.Label1.Text = draEtudiants.Length.ToString() & " etudiants for " & _
              SelectedIDClasse
     
            ' When the selected classe changes, clear the DataGridViewEtudiant.
     
            Me.DataGridViewEtudiant.DataSource = draEtudiants
     
     
        End Sub
    End Class
    fichier .mdb :bdEtudiant.mdb ci-joint......

    Le 2eme exemple plus complexe (ton souci) comporte nos 4 tables Etudiant,Classe,Departement et Faculte et utilise la fonction GetParentRow(note le singulier) pour recuperer la colonne parente de Etudiant,de Classe,de Departement (faculte est l'ancetre commun)......
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
    'FormRelationComplexe utilise tes 4 tables 
    'Ci-joint BD MDB qui donne le detail des tables BD avec cles externes etrangeres
    'ou foreing key.
    'Le DGV DataGridViewSelEtudiant de l'etudiant selectionne est construit 
    'par code dans le selectedindex du ComboBox cboEtudiant
    'car il n' y a aucun moyen de l'avoir par binding 
    '
     
    Public Class FormRelationComplexe
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'set ComboBox cboClasse
            Me.cboEtudiant.DataSource = Me.BdEtudiantDS1.Etudiant
            Me.cboEtudiant.DisplayMember = Me.BdEtudiantDS1.Etudiant.Columns("Nom").ColumnName
            Me.cboEtudiant.ValueMember = Me.BdEtudiantDS1.Etudiant.Columns("Numero").ColumnName
        End Sub
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
            ' Attention Desactiver constraintes .
            Me.BdEtudiantDS1.EnforceConstraints = False
     
            'Cles primaires sur les 4 tables
            Dim PrimaryKeyColumns(1) As DataColumn
     
            PrimaryKeyColumns(0) = Me.BdEtudiantDS1.Etudiant.Columns.Item("Numero")
            PrimaryKeyColumns(0).Unique = True
            Me.BdEtudiantDS1.Etudiant.PrimaryKey = PrimaryKeyColumns
     
            PrimaryKeyColumns(0) = Me.BdEtudiantDS1.Classe.Columns.Item("ID_Classe")
            PrimaryKeyColumns(0).Unique = True
            BdEtudiantDS1.Classe.PrimaryKey = PrimaryKeyColumns
     
            PrimaryKeyColumns(0) = Me.BdEtudiantDS1.Departement.Columns.Item("ID_Departement")
            PrimaryKeyColumns(0).Unique = True
            BdEtudiantDS1.Departement.PrimaryKey = PrimaryKeyColumns
     
            PrimaryKeyColumns(0) = Me.BdEtudiantDS1.Faculte.Columns.Item("ID_Faculte")
            PrimaryKeyColumns(0).Unique = True
            BdEtudiantDS1.Faculte.PrimaryKey = PrimaryKeyColumns
     
            'Relations
            Dim maRelation As DataRelation
            'Add Relations Classe parent ->Etudiant fille
            maRelation = New DataRelation("relClasseEtudiant", _
                         Me.BdEtudiantDS1.Tables("Classe").Columns("ID_Classe"), _
                         Me.BdEtudiantDS1.Tables("Etudiant").Columns("ID_Classe"), True)
            Me.BdEtudiantDS1.Relations.Add(maRelation)
            'Add Relations Departement parent ->Classe fille
            maRelation = New DataRelation("relDepartementClasse", _
                         Me.BdEtudiantDS1.Tables("Departement").Columns("ID_Departement"), _
                         Me.BdEtudiantDS1.Tables("Classe").Columns("ID_Departement"), True)
            Me.BdEtudiantDS1.Relations.Add(maRelation)
            'Add Relations Faculte parent ->Departement fille
            maRelation = New DataRelation("relFaculteDepartement", _
                         Me.BdEtudiantDS1.Tables("Faculte").Columns("ID_Faculte"), _
                         Me.BdEtudiantDS1.Tables("Departement").Columns("ID_Faculte"), True)
            Me.BdEtudiantDS1.Relations.Add(maRelation)
     
            'Load the DataSet 
            Call FillDataSet()
            '  Active constraintes.
            Me.BdEtudiantDS1.EnforceConstraints = True
     
            'Lie   DataGridViewClasse, DataGridViewDepartement & 
            'DataGridViewClasse aux tables concernees pour ce test seulement
            Me.DataGridViewClasse.DataSource = Me.BdEtudiantDS1
            Me.DataGridViewClasse.DataMember = Me.BdEtudiantDS1.Classe.TableName
            'DataGridViewDepartement 
            Me.DataGridViewdDepartement.DataSource = Me.BdEtudiantDS1
            Me.DataGridViewdDepartement.DataMember = Me.BdEtudiantDS1.Departement.TableName
            'DataGridViewFaculte
            Me.DataGridViewFaculte.DataSource = Me.BdEtudiantDS1
            Me.DataGridViewFaculte.DataMember = Me.BdEtudiantDS1.Faculte.TableName
     
            'Ajout colonnes de DataGridViewsSelEtudiant pour affichage(celui demande par toi)
            For Each col As DataColumn In Me.BdEtudiantDS1.Etudiant.Columns
                Me.DataGridViewSelEtudiant.Columns.Add(col.ColumnName, col.ColumnName)
            Next
            'ajout 3 colonnes parentes
            Me.DataGridViewSelEtudiant.Columns.Add("Nom_Classe", "Nom_Classe")
            Me.DataGridViewSelEtudiant.Columns.Add("Nom_Departement", "Nom_Departement")
            Me.DataGridViewSelEtudiant.Columns.Add("Nom_Faculte", "Nom_Faculte")
     
        End Sub
        Public Sub FillDataSet()
     
     
            ' Fill les 4 tables Etudiant,Classe,Departement,Faculte with data.
            Me.EtudiantTableAdapter1.Fill(BdEtudiantDS1.Etudiant)
            Me.ClasseTableAdapter1.Fill(BdEtudiantDS1.Classe)
            Me.DepartementTableAdapter1.Fill(BdEtudiantDS1.Departement)
            Me.FaculteTableAdapter1.Fill(BdEtudiantDS1.Faculte)
     
     
        End Sub
     
        Private Sub cboEtudiant_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboEtudiant.SelectedIndexChanged
            If Me.cboEtudiant.SelectedValue Is Nothing Then Return
     
            ' un string pour  Numero  Etudiant selectionne .
            Dim SelectedNumeroEtudiant As String
            SelectedNumeroEtudiant = Me.cboEtudiant.SelectedValue.ToString()
            ' Display item NumeroEtudiant from Etudiant in the label .
            Me.lblNumeroEtudiant.Text = " => " & SelectedNumeroEtudiant
     
            'un datarow pour l'enreg.  de Etudiant selectionne.
            Dim drSelectedEtudiant As DataRow
            drSelectedEtudiant = _
            Me.BdEtudiantDS1.Etudiant.Rows.Find( _
             (SelectedNumeroEtudiant))
     
            'un datarow pour recuperer l'enreg. relie dans Classe parente.
            Dim draClasse As DataRow
            draClasse = drSelectedEtudiant.GetParentRow("relClasseEtudiant")
     
            'Retrieve  Departement parent de Classe
            ' un string pour ID_Departement de  Classe .
            Dim strIDDepartement As String
            strIDDepartement = draClasse.Item("ID_Departement").ToString()
            ' un datarow pour l'enreg.  du  Departement selectionne.
            Dim drSelectedDepartement As DataRow
            drSelectedDepartement = _
            Me.BdEtudiantDS1.Departement.Rows.Find( _
             (strIDDepartement))
     
            'Retrieve Faculte parent de Departement
            ' un datarow pour recuperer l'enreg. relie dans Faculte.
            Dim drFaculte As DataRow
            drFaculte = drSelectedDepartement.GetParentRow("relFaculteDepartement")
     
            'Populate DataGridViewEtudiant(notre dgv oiseau rare)
            For Each drvRow As DataGridViewRow In Me.DataGridViewSelEtudiant.Rows
                For I As Integer = 0 To drSelectedEtudiant.ItemArray.Count - 1
                    drvRow.Cells.Item(I).Value = drSelectedEtudiant.Item(I).ToString
                Next
                drvRow.Cells.Item("Nom_Classe").Value = draClasse.Item("Nom_Classe").ToString()
                drvRow.Cells.Item("Nom_Departement").Value = drSelectedDepartement("Nom_Departement").ToString
                drvRow.Cells.Item("Nom_Faculte").Value = drFaculte.Item("Nom_Faculte").ToString()
            Next
     
     
        End Sub
    End Class
    le fichier .mdb est le meme pour les 2 exemples....
    bon code................

Discussions similaires

  1. [Débutant] éclater une chaine dans un tableau en VB.NET
    Par jayrem98 dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/07/2012, 08h36
  2. Tableau en Asp.net et c#
    Par Elasnaoui dans le forum Développement Web avec .NET
    Réponses: 3
    Dernier message: 15/03/2010, 01h50
  3. Tableau en ASP.NET
    Par nicocovic dans le forum ASP.NET
    Réponses: 0
    Dernier message: 22/01/2010, 11h00

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