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 :

Pyramide des ages


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut Pyramide des ages
    Salut tout le monde
    Gentelman ..
    Mes chers amis .. svp .. si vous pouvez m'aider a finir ce cauchemar .
    J'ai deux Tables Access : TBL_SECTOR qui possede 2 champs ( SECTOR_Id de type AutoNumber - SECTOR_Name de type Texte ) .. remplit de cette maniere
    Nom : p_1212rn9iv1.jpg
Affichages : 210
Taille : 45,6 Ko
    Deuxieme Table nommee ( TBL_ADHERENT possede 3 champs ADHERENT_Id de type AutoNumber - ADHERENT_Sector de type texte - ADHERENT_Sexe de type texte ) .. de cette maniere ..
    Nom : p_12126bphs1.jpg
Affichages : 258
Taille : 88,8 Ko
    Dans ma ZedGraph je veux afficher le nombre de Feminin et Masculin de chaque Secteur ..
    Lorsque j'enregistre un nouveau adherent dans ma Table2 ( TBL_ADHERENT ) je choisis son activité ( ADHERENT_Sector ) par ComboBox1 deja remplit par Table1 ( TBL_SECTOR ) ..
    Ce que je veux avoir par exemple : COMPUTER s'affichera son nombre de masculin et son nombre de Feminin .. j'ai beaucoup essaye mais j'obtient toujours que le Bleu 'Masculin ' comme l'indique cette image :
    Nom : p_1212oli7r1.jpg
Affichages : 209
Taille : 113,7 Ko
    Voici tout mon code utilise :
    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
    Imports ZedGraph
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Call Create_Zed_Graph()
        End Sub
        Private Sub Create_Zed_Graph()
            Panel1.Controls.Clear()
            Dim zg1 = New ZedGraphControl()
            zg1.Location = New Point(0, 0)
            zg1.Size = New Size(Panel1.Size.Width, Panel1.Size.Height)
            zg1.Enabled = False
            Panel1.Controls.Add(zg1)
            Dim mypane As GraphPane = zg1.GraphPane
     
            mypane.Title.Text = "PYRAMIDE DES AGES"
            mypane.XAxis.Title.Text = "SECTEUR"
            mypane.YAxis.Title.Text = "NOMBRE ADHERENT"
     
            Dim N As Integer
            Try
                OpenConnect()
                my_command.CommandText = "SELECT COUNT(*) FROM TBL_SECTOR"
                N = my_command.ExecuteScalar() - 1
            Catch ex As Exception
                Message(ex.Message)
            Finally
                my_connection.Close()
            End Try
            Dim myClassesNames(N) As String, myClassesRented(N) As Integer, myClassesAvailabe(N) As Integer
            Dim i = -1
            Try
                OpenConnect()
                Dim currentClassID As Long
                Dim dr As OleDb.OleDbDataReader
                my_command.CommandText = "SELECT * FROM TBL_SECTOR"
                dr = my_command.ExecuteReader()
                Dim cmd As New OleDb.OleDbCommand("SELECT * FROM x", my_connection)
                While dr.Read()
                    i = i + 1
                    currentClassID = dr.GetInt32(0)
                    myClassesNames(i) = dr.GetString(1)
                    cmd.CommandText = "SELECT COUNT(ADHERENT_Id) FROM TBL_ADHERENT WHERE ADHERENT_Sexe= 'Masculin' And ADHERENT_Sector = 'COMPUTER'"
                    myClassesAvailabe(i) = cmd.ExecuteScalar()
                    cmd.CommandText = "SELECT COUNT(*) FROM TBL_ADHERENT WHERE ADHERENT_Sexe='Feminin' And ADHERENT_Sector = 'COMPUTER'"
                    myClassesRented(i) = cmd.ExecuteScalar()
                End While
                dr.Close()
                cmd.Dispose()
                cmd = Nothing
            Catch ex As Exception
                Message(ex.Message)
            Finally
                my_connection.Close()
            End Try
            Dim yRented As PointPairList = New PointPairList()
            Dim yAvailable As PointPairList = New PointPairList()
            For i = 0 To myClassesNames.Length - 1
                If myClassesNames(i) <> Nothing Then
                    yAvailable.Add(New PointPair(0, myClassesAvailabe(i)))
                    yRented.Add(New PointPair(0, myClassesRented(i)))
                End If
            Next
            Dim mybar As BarItem
            Dim mybar2 As BarItem
     
            mybar = mypane.AddBar("NOMBRE MASCULIN", yRented, Color.Blue)
            mybar2 = mypane.AddBar("NOMBRE FEMININ", yAvailable, Color.Red)
     
            mybar.Bar.Fill = New Fill(Color.Blue, Color.Blue, Color.Blue)
            mybar2.Bar.Fill = New Fill(Color.Red, Color.Red, Color.Red)
            mypane.XAxis.Scale.TextLabels = myClassesNames
            mypane.XAxis.Type = AxisType.Text
            mypane.Chart.Fill = New Fill(Panel1.BackColor)
            mypane.Fill = New Fill(Panel1.BackColor)
            mypane.BarSettings.Type = BarType.Stack
            zg1.AxisChange()
        End Sub
    End Class
    Merci beaucoup d'avance pour l'aide
    Amicalement
    MADA

  2. #2
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Pour essayer de comprendre d'où cela vient tu peux essayer plusieurs trucs :

    1. N'affiche que le féminin (donc supprime mybar et garde mybar2)
    2. Au lieu de mettre le type de graph en BarType.Stack met le en BarType.cluster


    sinon après 4 relecture du code, j'ai trouvé
    ici tu inverses le féminin et le masculin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      mybar = mypane.AddBar("NOMBRE MASCULIN", yRented, Color.Blue)
            mybar2 = mypane.AddBar("NOMBRE FEMININ", yAvailable, Color.Red)
    donc tu stocke dans la barre masculin le nombre de féminin....

    commence par afficher en cluster tu visualiseras mieux les problèmes

  3. #3
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Merci beaucoup elthorn
    J'ai essaye avec votre code mais toujours .. pas d'erreur dans le code mais pas de resultat souhaitable
    Oui effectivement je cherche que dans le secteur Computer .. c'est une grande faute de ma part par mal comprendre de manipuler ce truc.
    Car normalement au dessus de chaque secteur s'affichera deux barre (Masculin en bleu avec niveau de pourcentage - Feminin en rouge avec niveau de poucentage) .. mais malheureusement j'ai beaucoup essaye .. en vin ..j'ai essaye aussi comme ca mais j'ai pas arrive ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    cmd.CommandText = "SELECT Sum(IIf([ADHERENT_Sexe]= 'Masculin',1,0)) AS Malecount, Sum(IIf([ADHERENT_Sexe] = 'Feminin',1,0)) AS Femalecount FROM TBL_ADHERENT group by ADHERENT_Sector"
    Merci pour l'intentio d'aide
    Cordialement
    MADA

  4. #4
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    regarde la modif de mon dernier post j'ai trouvé l'erreur
    ici tu inverses le féminin et le masculin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      mybar = mypane.AddBar("NOMBRE MASCULIN", yRented, Color.Blue)
            mybar2 = mypane.AddBar("NOMBRE FEMININ", yAvailable, Color.Red)

    donc tu stockes dans la barre masculin le nombre de féminin.... ce qui explique que tu n'affiche que du masculin
    et comme tu ne stockes des infos que pour x=0 dans la barre, il doit réutiliser la même barre pour les autres secteurs. D'où le fait d'avoir la même valeur pour tous les secteurs

  5. #5
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Pour afficher en pourcentage, le type de graphe c'est PercentStack

    Sinon pour avoir tous tes secteurs, remplace tes variables myClassesAvailabe(i) et myClassesRented(i) par myClassesAvailabe(i,j) et myClassesRented(i,j) et crée une boucle pour récupérer toutes les infos (en i le secteur et en j le nombre) dans ta base de données.

    ce que j'ai écrit est une grosse bêtise donc on oublie


    ensuite à ce niveau là de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For i = 0 To myClassesNames.Length - 1
                If myClassesNames(i) <> Nothing Then
                    yAvailable.Add(New PointPair(0, myClassesAvailabe(i)))
                    yRented.Add(New PointPair(0, myClassesRented(i)))
                End If
    tu remplaces PointPair(0, myClassesAvailabe(i)) par PointPair(i, myClassesAvailabe(i)) . idem pour la variable "rented"

  6. #6
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Merci Elthorn .. tres tres gentil de votre part .. j'ai essaye de modifier n'importe quoi .. mais toujours ca plante .. svp .. si ca vous derange pas .. de jeter un coup d'oeil sur le fichier ..
    Amicalement
    MADA

Discussions similaires

  1. Cognos 8 - Pyramide des ages
    Par july7713 dans le forum Cognos
    Réponses: 3
    Dernier message: 27/01/2010, 15h07
  2. graphique et pyramide des ages
    Par trago dans le forum IHM
    Réponses: 1
    Dernier message: 27/08/2009, 17h01
  3. [Pentaho] report pyramide des ages
    Par titifefe dans le forum Pentaho
    Réponses: 1
    Dernier message: 21/12/2007, 15h48
  4. creation d'une pyramide des ages
    Par s.hanane dans le forum Oracle
    Réponses: 1
    Dernier message: 03/05/2007, 21h57
  5. [BO XI r2]Pyramide des ages
    Par Eddy dans le forum Deski
    Réponses: 3
    Dernier message: 15/11/2006, 18h04

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