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 - Unbound Columns qui s'ajoutent


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Par défaut Problème - Unbound Columns qui s'ajoutent
    Salut tout le monde

    J'ai une Form sur laquelle j'ai une DataGridView et un ComBoBox.

    Le DataGridView est bindé à une DataTable via la propriété DataSource.
    Certaines colonnes sont de type BOUND et d'autres de type UNBOUND.

    L'affichage des résulats sur le DataGridView est basé sur le choix dans le Combobox dont les éléments (items) proviennent d'une autre DataTable.

    Mon problème c'est que à chaque fois que je change la valeur du Combobox
    les colonnes UNBOUND s'ajoutent automatiquement à coté des autres colonnes et se multiplient , j'ai essayé de changer l'événement lié au Combobox mais ça ne donne rien.

    Voici ma base de donnée :

    Niveaux(idniveau,libniveau)
    Classes(idclasse,libclasse,#idniveau)
    Eleves(ideleve,nom,prenom,age,....,#idclasse)
    Matieres(idmat,libmat)
    Trimestres(idtrim,libtrim,datedebut,datefin)
    Evaluations(ideleve,idmat,idtrim,note,dev1,dev2,examen)

    J'ai fait une requete multi-tables pour afficher la liste des élèves à coté des colonnes des notes pour les saisir en fait pour résumer le tout :

    Le Combobox contient les noms des classes et pour chaque classe sélectionnée le DataGridView m'affiche la liste des élèves qui appartiennent à cette classe donc les colonnes BOUND sont : ideleve , nom , prenom et les colonnes UNBOUND sont : note , dev1 , dev2 , examen.

    Je présume que vous allez dire mais pourquoi n'inclut-il pas les colonnes des notes car elles appartiennent à la table Evaluations ? La raison c'est à cause de la requete multi-tables SQL qui ne peut m'afficher les élèves que lorsqu'ils ont des notes , alors que moi je veux afficher la liste des élèves sans leurs notes car je vais les saisir ,voici ma requete :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select e.idelv,e.nom,e.pren,d.libcla,m.libmat,t.libtrim,v.moyev,v.dev1,v.dev2,v.exam,v.moymat from eleves e,divisions d,matieres m,trimestres t,evals v where e.idelv=v.idelv and e.idcla=d.idcla and m.idmat=v.idmat and t.idtrim=v.idtrim and e.idcla='" & cbDiv.SelectedValue.ToString & "' and m.idmat='" & cbMat.SelectedValue.ToString & "' and t.idtrim='" & cbTrim.SelectedValue.ToString & "'




    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
    Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
            FillCombo()
     
        End Sub
     
     
       Private Sub FillCombo()
     
            cn.ConnectionString = strcon
     
            Dim daDiv As New SqlDataAdapter("select idcla,libcla from divisions", cn)
            Dim dsNotes As New DataSet
            Dim dtDiv As New DataTable("divisions")
     
     
            If cn.State Then cn.Close()
     
            cn.Open()
     
            daDiv.Fill(dtDiv)
            cbDiv.DisplayMember = "libcla"
            cbDiv.ValueMember = "idcla"
            cbDiv.DataSource = dtDiv
            'cbDiv.SelectedIndex = 0
     
            cn.Close()
     
        Dim daMat As New SqlDataAdapter("select idmat,libmat from matieres", cn)
            Dim dtMat As New DataTable("matieres")
     
            If cn.State Then cn.Close()
     
            cn.Open()
     
            daMat.Fill(dtMat)
            cbMat.DisplayMember = "libmat"
            cbMat.ValueMember = "idmat"
            cbMat.DataSource = dtMat
            'cbMat.SelectedIndex = 0
     
            cn.Close()
     
      Dim daTrim As New SqlDataAdapter("select idtrim,libtrim from trimestres", cn)
            Dim dtTrim As New DataTable("trimestres")
     
            If cn.State Then cn.Close()
     
            cn.Open()
     
            daTrim.Fill(dtTrim)
            cbTrim.DisplayMember = "libtrim"
            cbTrim.ValueMember = "idtrim"
            cbTrim.DataSource = dtTrim
            'cbTrim.SelectedIndex = 0
     
            cn.Close()
     
            comflag = True
     
        End Sub
     
    Private Sub cbDiv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbDiv.SelectedIndexChanged
     
            If comflag = True Then
     
      Dim str As String = "select e.idelv,e.nom,e.pren,d.libcla,m.libmat,t.libtrim,v.moyev,v.dev1,v.dev2,v.exam,v.moymat from eleves e,divisions d,matieres m,trimestres t,evals v where e.idelv=v.idelv and e.idcla=d.idcla and m.idmat=v.idmat and t.idtrim=v.idtrim and e.idcla='" & cbDiv.SelectedValue.ToString & "' and m.idmat='" & cbMat.SelectedValue.ToString & "' and t.idtrim='" & cbTrim.SelectedValue.ToString & "'"
     
                Dim daRes As New SqlDataAdapter(str, cn)
                Dim dsRes As New DataSet
                Dim dtres As New DataTable("evals")
     
                If cn.State Then cn.Close()
     
                cn.Open()
                daRes.Fill(dtres)
                cn.Close()
     
                dgvMoy.DataSource = dtres
                dgvMoy.ReadOnly = True
                dgvMoy.Columns(0).ReadOnly = True
                dgvMoy.Columns(0).HeaderText = "N° Eleve"
                dgvMoy.Columns(1).HeaderText = "Nom"
                dgvMoy.Columns(2).HeaderText = "Prénom"
     
     
                Dim txtboxmoyevalcolumn As New DataGridViewTextBoxColumn
     
                    With txtboxmoyevalcolumn
                    .HeaderText = "Note Evaluation"
                    .Name = "note"
                    End With
     
                    ' Add the textbox column to the datagridview.
     
                dgvNotes.Columns.Insert(3, txtboxmoyevalcolumn)
     
                    Dim txtboxdev1column As New DataGridViewTextBoxColumn
     
                    With txtboxdev1column
                    .HeaderText = "Devoir 1"
                    .Name = "dev1"
                    End With
     
                dgvNotes.Columns.Insert(4, txtboxdev1column)
     
                    Dim txtboxdev2column As New DataGridViewTextBoxColumn
     
                    With txtboxdev2column
                    .HeaderText = "Devoir 2"
                        .Name = "dev2"
                    End With
     
                dgvNotes.Columns.Insert(5, txtboxdev2column)
     
                    Dim txtboxexamcolumn As New DataGridViewTextBoxColumn
     
                    With txtboxexamcolumn
                    .HeaderText = "Examen Final"
                        .Name = "exam"
                    End With
     
                dgvNotes.Columns.Insert(6, txtboxexamcolumn)
     
     
            End If
     
        End Sub
    Mon problème c'est qu' à chaque fois que je fais un choix depuis un des trois Combobox les colonnes UNBOUND s'ajoutent plusieurs fois ou se dupliquent et j'ai beau chercher sur le NET mais sans résultat , Merci d'avance

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bonjour,

    Si je comprends bien le code, a chaque fois que tu sélectionnes un élément dans ton combobox, tu fais trois fois la ligne de commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dgvNotes.Columns.Insert(4, txtboxdev1column)
    En début de code, tu devrais faire un truc du genre effacer toutes tes colonnes:
    avec des fonctions comme remove() ou removesat()

Discussions similaires

  1. problème avec Unbound Column
    Par devman2011 dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/01/2012, 13h44
  2. [MySQL] problème avec les ' qui font \'
    Par Rocco-biblio dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 02/04/2006, 22h06
  3. HTML : problème de tableaux qui se superposent
    Par paprika dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/10/2005, 15h55
  4. (jsp) problème avec sql qui contient la date
    Par future dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 31/08/2005, 16h18
  5. [JComboBox] Problème dans le PopMenu après ajout
    Par bidon dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 29/03/2005, 15h52

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