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 6 et antérieur Discussion :

[VB6] [MSChart] Courbe incorrecte


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut [VB6] [MSChart] Courbe incorrecte
    bonjour,
    voilà je veux tracer un graphique à partir d'un recordset (j'ai suivi le conseil de Bidou), voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    MaBase = OpenDatabase ("chemine") 
    Req = "Select *....." 
    Set Rstable = MaBase.OpenRecordset(Req, dbOpenSnapshot) 
     
    With Rstable 
    .MoveFirst 
    Do While not  .EOF 
      Graph.Data = .Fields(0) 
      .MoveNext 
    Loop
    mais apparement ca marche pas, car l'allure de graphe en correspond pas en aucun cas au données.
    aussi j'ai un autre problème avec l'échelle est ce que le MSChart corrige automatiquement l'échelle du graphique en fonction de la plage des valeurs affecter à la propriété Data??
    toutes autres suggestions me sera bien utile concernant les propriétés du MSChart (c la première fois que j'utilise ce contrôle)
    merci à tous

  2. #2
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    en vérifiant le contenu de Graph.Data à chaque fois dans un MsgBOx, j'ai trouvé que les valeurs contenues dans le Data ne sont pas les memes que ceux dans le Recordset.
    j'ai utilisé une variable Double pour l'affectation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Temp = Rstable.Fields(0)
    Graph.Data = Temp
    mais le problème persiste..
    j'ai essayé d'exploiter mon Grid en utilisant les coordonnées de Col et Row, mais apparement les indices de Col et Row sont aussi aléatoires à chaque fois il me sort des indices qui ne correspond en aucun cas à la position de la case.

    quelqu'un a une idée la dessus!!!

  3. #3
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Mets les données de ton recordset dans un tableau.
    Affectes ce tableau à la propriété ChartData.

  4. #4
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    Ok bidou, je vais essayer avec un tableau ,et espérant que ca marche...

  5. #5
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    bonjour,
    concernant toujours le meme problème et essayant de mettre un tableau pour l'affectation des données à la propriété Graph.ChartData j'ai une erreur '9': Indice en dehors de la plage
    voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim K as integer
    Dim Temp() as Double
     
    K=1
    RsTable.MoveFirst
    While Not RsTable.EOF
      Temp(K) = RsTable.Fields(3)
      K=K+1
      RsTable.MoveNext
    Loop
    d'où peut venir cette erreur, est ce qu'il faut que j'initialise aussi mon tableau???

  6. #6
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    il manque un redim pour le tableau

  7. #7
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    merci bidou, je me sens tellement ridicule à cette fatale erreur.
    j'ai un pb concernant mon recordset, voilà mon recordset contient 4 enregistrements et quand je le parcours je ne trouve que 3 enregis.
    voilà le code complet :
    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
     
     
    RsTable.MoveFirst
    K = 1
    Do While Not RsTable.EOF
        K = K + 1
      RsTable.MoveNext
    Loop
     
     
    Graph.RowCount = K  'pour déterminer le nombre de point dans mon 
                                     'graphique
    ReDim Temp(Graph.RowCount)  'la dimension du tableau
     
    K = 1
    RsTable.MoveFirst
    Do While Not RsTable.EOF
        Temp(K) = RsTable.Fields(3)
        K = K + 1
      RsTable.MoveNext
    Loop
     
    For i=1 to Graph.RowCount
       Graph.ChartData = Temp(i)  'l'affectation des valeurs
    Next
    si je les vérifies un par un je trouve que c'est le dernier enregistrement qui n'est pas pris en compte, d'où peut venir cette erreur, j'ai tout refait mais ca persiste , meme en utilisant un movelast et vérifier le dernier enregistrement je trouve que c l'avant dernier, pourquoi???

    j'utlise en meme temps un Grid, et là il me sort les 4 enregistrement, le Grid est alimenté par le meme recordset.


    le deuxième problème c auniveau de l'affectation de la propriété ChartData j'ai une erreur erreur '1101':Argument de fonction incorrect, je n'ai pas compris grand chose, vu que c ma première rencontre avec un MSChart (c pas facile comme controle )

    merci encore pour toutes tes msg

  8. #8
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    je ne comprends pas bien le premier problème, car sur mon poste je n'ai pas de problème.
    Quelques corrections toutefois
    Graph.RowCount = K-1
    ReDim Temp(1 To Graph.RowCount)

    pour affecter à chartdata
    Graph.ChartData = Temp

  9. #9
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    oui je sais pas non plus comment expliquer le premier problème, mais je vais voir plus, pour l'instant ce qui me préoccupe le plus c le graphique.

    pour les deux premières remarques, ils sont bien placées bidou, mais en ce qui concerne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Graph.ChartData = Temp
    il n'y a aucune erreur concernant cette instruction , mais le pb c que le RowCount devient nul après (pas de point sur le graphique) en plus l'utlisation d'un MsgBox pour vérifier la valeur Temp renvoit une erreur d'exécution "Type Incompatible".
    ca commence à rendre dingue ce controle, vraiment il n'est pas sympa du tout

  10. #10
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    J'en ai fait un petit qui marche bien. Je te file le code :

    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
    Option Explicit
     
    Private Sub Form_Load()
        Dim rs      As ADODB.Recordset
        Dim nRow    As Long
     
        'Définition du Recordset
        Set rs = New ADODB.Recordset
        rs.Open "qryTests", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Maxence\Mes documents\BDDXP_Tests.mdb", adOpenKeyset
     
        'Définition du Graphique
        With MSChart1
     
            'Définition des dimensions
            .Top = 0
            .Left = 0
            .Width = ScaleWidth
            .Height = ScaleHeight
     
            'Définition de l'aspect
            .AllowSeriesSelection = True
            .AllowDynamicRotation = True
            .AllowSelections = True
            .Enabled = True
     
            .TitleText = "Ceci est un test"
            .ToolTipText = "Eh ben j'espère que ca ira !"
     
            'Définition des dimensions
            rs.MoveLast: rs.MoveFirst
            .ColumnCount = rs.Fields.Count - 1
            .RowCount = rs.RecordCount
     
            'Remplissage
            For nRow = 1 To .RowCount
                .RowLabel = rs(0)
                .Column = 1
                .Row = nRow
                .Data = rs(1)
                rs.MoveNext
            Next
     
            'Recalcul et traçage
            .Layout
        End With
     
        'Terminaison
        rs.Close
        Set rs = Nothing
    End Sub
    En espérant que ça marchera

  11. #11
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Sinon, j'ai fait encore plus cool : avec un controle ADO DATA
    en Data Source du MS Chart !
    Et ca marche

  12. #12
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Comment fais tu pour vérifier avec ton msgbox.
    Parce que sur mon poste, ta fonction marche en DAO.

  13. #13
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    Merci Zemenass pour ton code, il est vraiment génial, mais comme je l'ai déjà dit j'utilise un controle DATA DAO et non ADO, et ce qui me rend la tache plus difficile.

    oui Bidou à l'intérieur de la boucle je met un MsgBox Temp pour vérifier la valeur du tableau, mais là il me renvoit une erreur.

    aussi la propriété RowCount lors de l'affichage de Graph devient 1 et il n'y a aucun point sur le graph.

  14. #14
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    j'ai enfin réussi à faire tracer un graphique qui n'est pas très convaiquant (l'expression est mal choisie). dans le code suivant j'ai changé la propriété ChartData par la propriété Data et ca a marché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i=1 to Graph.RowCount 
       Graph.ChartData = Temp(i)  'l'affectation des valeurs 
    Next
    né au moins maintenant je vais exploiter le Grid que j'ai sur la page alors j'ai changé l'instruction de données par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i=1 to Graph.RowCount 
    Grid.Col = 3  'c la première colonne qui contient des données numériques
    Grid.Row = i
    Graph.Data = Grid.Text
    Next
    le problème que j'ai avec ce code, c que lors de l'instructionGrid.Col=3 j'ai une erreur Indice en dehors de la plage mais moi mon Gride se compose de 7 colonnes, les 4 dernières sont numériques.
    merci les amis encore pour toutes vos réponses

  15. #15
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    Bonjour,
    toujours concernant ce MSChart, est ce qu'on peut modifier l'échelle de façon à modifier le Zéro par la valeur minimale car j'ai des valeurs énormes, aussi comment change-t-on les text des abcisses.

    pour ce qui est de l'exploitation du Grid je n'ai pas encore arrivé à le résoudre, est ce que qlq'un a une idée la dessus?????

  16. #16
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    toujours concernant l'exploitation de grid (je baisse pas les bras), j'ai essayé avec le code suivant mais j'ai une erreur que je comprends pas Erreur d'Exécution '30010' : Valeur de colonne non valide et la valeur de Grid.Col à ce moment est =1, alors que moi je veux qu'elle soit à 4.
    la Comande Grid.Col permet de positionner le curseur où on veut c ca les amis, ai-je tort ????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 1 To 4
      Grid.Col = 4
     Grid.Row = i
      Graph.Data = Grid.Text
      Next
    sinon qu'est ce qu'il cloche la dedans
    est ce que c possible d'enlever le quadrillage du MSChart, et changez la couleur de l'arrière plan

  17. #17
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Dans les propriété personnalisées tu as un onglet "grille des axes" et un onglet "backdrop".

  18. #18
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    merci Bidou je l'ai trouvé et c fait.
    j'ai un autre problème avec l'échelle de l'axe Y, je veux spécifier la valeur minimale et modifier le zéro du genre (valeur minimale égale à la plus petite valeur -100)

    aussi j'aimerais changez les etiquettes des point sur l'axe des X et les remplacer par la valeur d'un champ date.

    concernant les étiquettes de l'axe X, voilà j'ai essayé en Déclarant un tableau string puis en affectant les text en meme temps que les données voilà le code :
    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
    ReDim Temp(Graph.RowCount)
    ReDim TempTxt(Graph.RowCount)
     
    K = 1
    RsTable1.MoveFirst
    Do While Not RsTable1.EOF
        Temp(K) = RsTable1.Fields(3)
        TempTxt(K) = RsTable1.Fields(0)
        K = K + 1
      RsTable1.MoveNext
    Loop
    For I = 1 To Graph.RowCount
     Graph.Data = Temp(I)
     Graph.RowLabel = TempTxt(I)
    Next
    jusqu'ici c bien mais le problème c que il me met la date du premier élement à la donnée du 3ème élément et il a tout mélangé.
    de quoi peut venir ce problème (je crois que ce MSChart ne va pas me lacher avant 2003, il va me refroidir c sur)

  19. #19
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    une
    Rmq : Mon Recordset est déjà trié par Date, et dans le traçage de donnée, il les trace suivant le trie de Date, tandis que les string affecté au etiquettes du Graph sont mélangées
    merci encore pour tout les amis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. application vb6+ MSChart
    Par nones dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/12/2007, 21h59
  2. [VB6] Fonction inStr incorrecte
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 03/07/2007, 20h29
  3. [VB6] MSChart Ecarts différents en X et Y (non-orthonormé)
    Par bandy dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/03/2006, 10h46
  4. [Vb6] MsChart : Mise en forme échelle axe X
    Par Theocourant dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/09/2005, 14h16
  5. [VB6] [MSChart] Utilisation de TwipsToChartPart
    Par fea dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/10/2002, 17h57

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