Bonjour,
Voila mon problème :
Pour une application de visualisation de résultat issue d'une base de donnée je dois réaliser un graphique d'évolution de certaines donnée.
Celle qui me pose problème est l'évolution du temps d’exécution d'un test.
Je veux donc tracer dans un graphique la durée de chaque test(compris entre plusieurs jours et quelque seconde) en ordonner et la date du test en abscisse.
Mes données vienne de la requête sql suivante :
select debut_test,DATEDIFF( 's', debut_test,fin_test ) from test where......condition pour filtrer les données......... order by debut_test asc"
je récupère de cette requête une table avec une colonne date (de type datetime => aucun problème de mise en forme par la suite ) et une colonne contenant la durée en seconde d'un test (un entier)
je paramètre mon graphe comme ci-dessous:
1 2
| graph.Series["essai1"].YValueType = ChartValueType.Time;
graph.ChartAreas[0].Axes[1].LabelStyle.Format= "d - HH:mm:ss"; |
et j'ajoute ensuite mes points manuellement a mon graphe :
1 2 3 4 5 6
| for (int i = 0; i < tgraph.Rows.Count; i++)
{
TimeSpan toto = TimeSpan.FromSeconds((int)tgraph.Rows[i][1]);
DateTime test=new DateTime(toto.Ticks) ;
graph.Series[0].Points.AddXY((DateTime)tgraph.Rows[i][0], test);
} |
Mon problème ce produit lors de la conversion deux cas possible:
- pour des temps inférieure a une journée la conversion ce passe bien mais a l'affichage au lieu d'avoir le jour à 0 il ce retrouve à 30
-Pour des temps supérieure a une journée une erreur apparait:
L'exception System.OverflowException n'a pas été gérée
HResult=-2146233066
Message=Date OleAut illégale.
Source=mscorlib
StackTrace:
à System.DateTime.TicksToOADate(Int64 value)
à System.DateTime.ToOADate() ....
Un dépassement de capacité ce passe...
Est ce qu'elle qu'un aurait une idée pour résoudre ce problème ou une autres manières de faire?
Merci d'avance pour vos réponse.
un exemple du graphique que j'obtiens pour des durées courte
http://www.developpez.net/forums/att...1&d=1371739964
Partager