Chart et BottomAxis avec une date

Signaler
Messages postés
55
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
15 novembre 2011
-
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
-
Bonjour,
cela fait maintenant 2 heures que je tourne sans trouver la solution à mon problème...

J'ai un chart et j'aimerais que son bottomAxis contienne pour chaque barre de mon graphique une date au format suivant :
'MM/YYYY'

La valeur de cette date est récupéré dans une base de données sous Access et je ne passe pas par un DBChart.

Si quelqu'un sait comment faire pour mettre une chaine de caractère (représentant une date) en label du bottomAxis je lui en serais extrèmement reconnaissant !

Pour le moment ne sachant pa trop comment faire les seules lignes de code s'y rapportant chez moi sont :

Chart1.BottomAxis.DateTimeFormat := 'mm/yyyy';
Chart1.BottomAxis.LabelValue(ADOQuery1.Fields.Fields[0].AsString);


Je sais que ce n'est pas ça que je dois faire mais c'est pour que vous puissiez m'aider.

Merci à ceux qui pourront me dépanner...

4 réponses

Messages postés
55
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
15 novembre 2011

Je me permets de faire évoluer mon message en y répondant car j'ai réussi en fait à mettre une date en label de mon bottomAxis grace à cette partie de mon code :

  while not ADOQuery1.Eof do
  begin
    for I := 0 to ADOQuery1.RowsAffected do
    begin
       if(ADOQuery1.Fields.Fields[1].AsVariant < 0)then
       begin
        Serie.Add(ADOQuery1.Fields.Fields[1].AsVariant);
        Serie.GetHorizAxis.AxisValuesFormat := ADOQuery1.Fields.Fields[0].AsString;
       end
       else
       begin
        Serie.Add(ADOQuery1.Fields.Fields[1].AsVariant, '', colr);
        Serie.GetHorizAxis.AxisValuesFormat := ADOQuery1.Fields.Fields[0].AsString;
       end;
    end;
  ADOQuery1.Next;
  end;


Seul problème qu'il me reste maintenant c'est que la date s'affiche pour la première valeur de la série mais pas pour les 3 suivantes, quelqu'un aurait une idée du pourquoi ?
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
Je n'y connais rien au ADOQuery, mais y'a pas un truc bizarre dans ton code !? Dans la boucle for-next, le param I n'est jamais utilisé dans le if..then..else
Du coup seul la première valeur de la série est utilisée, non ?
Messages postés
55
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
15 novembre 2011

Non pas du tout, c'est juste pour faire boucler mon for.
La serie elle prend bien toutes les valeurs voulues car à chaque tour de boucle la ligne :
Serie.Add(ADOQuery1.Fields.Fields[1].AsVariant);

Ajoute une nouvelle valeur à ma série à chaque tour et donc à la fin du for ma serie est remplie.

Sinon je vois pas ce que tu n'as pas compris. Si besoin je peux expliquer même si je m'y prend p'tre mal.
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
Ok vu, l'ajout avec serie.add.
Par contre dans cette ligne
Serie.Add(ADOQuery1.Fields.Fields[1].AsVariant) comment tu fais avancé ceci ADOQuery1.Fields.Fields[1].AsVariant pour qu'il passe d'une ligne à l'autre de ADOQuery? ADOQuery1.Next ? Dans ce cas il faut qu'il soit dans la boucle.
J'espères pour toi qu'une personne ayant l'habitude de travailler avec ADOQuery va te répondre.