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

C# Discussion :

Problème de récupération de données


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut Problème de récupération de données
    Bonjour ä tous je reviens vers vous car je dois faire face à un nouveau problème.

    En gros, je souhaiterai récupérer les données de mes compteurs qui varient en fonction du temps pour les afficher sur des graphiques.

    Pour cela, j'ai créé une liste de dictionnaire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Dictionary<Double, Double>> listData = new List<Dictionary<Double, Double>>(); // Déclaration d'une liste de données
     
    Dictionary<double,double> data = new Dictionary<double,double>(); // Déclaration d'un dictionnaire pour stocker les données des compteurs
    Du coup, j'ajoute des données dans mon dictionnaire de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    data.Add(date, val); //date et val sont au format double
    Et ensuite, j'ajoute mon dictionnaire à ma liste de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listData.Add(data); // Ajout du dictionnaire Data à la liste listData
    Du coup, mes questions sont : Ai-je fais le bon choix pour stocker mes données de compteurs et si oui, comment puis-je lire mes données issues de ma liste car je n'y arrive pas.

    Voici un exemple d'un de mes nombreux tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                    foreach (Dictionary<Double, Double> dico in listData )
                    {
     
     
                        foreach (Double key in dico.Keys)
                        {
                            string valAsString = obj[key].ToString();
     
                            MessageBox.Show(key.ToString() + " " + valAsString);
                        }
                    }
    D'avance merci pour votre aide éventuelle.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut
    En fait je voudrais faire un tableau de tableau[clé, valeur]. Mais je ne sais pas quoi choisir pour répondre au mieux à mon cas

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    C'est peut être ça que tu veux faire:
    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
                List<List<KeyValuePair<double, double>>> listePrincipal = new List<List<KeyValuePair<double, double>>>();
     
                List<KeyValuePair<double, double>> sousListe = new List<KeyValuePair<double, double>>();
                KeyValuePair<double, double> kvp = new KeyValuePair<double, double>(5, 12);
                KeyValuePair<double, double> kvp2 = new KeyValuePair<double, double>(8, 15);
                sousListe.Add(kvp);
                sousListe.Add(kvp2);
     
                List<KeyValuePair<double, double>> sousListe2 = new List<KeyValuePair<double, double>>();
                KeyValuePair<double, double> kvp3 = new KeyValuePair<double, double>(42, 28);
                KeyValuePair<double, double> kvp4 = new KeyValuePair<double, double>(88, 26);
                sousListe2.Add(kvp3);
                sousListe2.Add(kvp4);
     
                listePrincipal.Add(sousListe);
                listePrincipal.Add(sousListe2);

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Ca brule un peu la rétine tout ça ...

    Ca serait pas plus simple de faire une structure de données pour stocker ça ?

    Je connais pas trop le besoin (donc la sémantique risque d'être à côté de la plaque) mais un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class Records : Dictionary<long, long>
    {
    }
    Dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    List<Records> allRecords = new List<Records>();
    FillRecords();
     
    foreach(var records in allRecords)
    {
        Foo(records);
    }
    C'est tout con et c'est déjà un peu plus clair que la List<Dictionary<long,long>>

    Sinon, je comprends pas vraiment l'utilité d'avoir plusieurs dicos dans une liste ... Pourquoi ne pas en avoir un seul ?
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut
    Voici mon projet:
    En fait, j'ai plusieurs compteurs d'énergie, 13 exactement.
    Toutes les heures je créé un export texte de mes compteurs de la forme :

    Nom Cpt ¦ DateExport ¦ Valeur

    Cpt1 ¦ jj/MM/aaaa HH:mm:ss ¦ 15¦
    Ctp2 ¦ jj/MM/aaaa HH:mm:ss ¦ 18¦
    ---- ¦ -------------------- ¦ --¦
    ---- ¦ -------------------- ¦ --¦
    Cptn ¦ jj/MM/aaaa HH:mm:ss ¦ 23¦
    ---------------------------------¦
    Ensuite, je remplies une base de données access avec ces valeurs.

    Le but de cette liste est de récupérer le résultat d'une requête qui récupère toutes les valeurs de chaque compteurs comprises entre 2 dates
    ET donc j'ai besoin d'une liste pour chaque compteur pour stocker mes valeurs et mes dates ainsi qu'une autre liste pour savoir à quel compteur ses valeurs correspondent.

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    La requête pour savoir les valeurs entre telle et telle heure, c'est mieux de le faire en procstoc directement je pense.

    Pour le reste :

    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
     
    public class Counter
    	{
    		private class Record
    		{
    			public DateTime Time { get; set; }
    			public long Value { get; set; }
    		}
     
    		public string Name { get; private set; }
    		private List<Record> _records = new List<Record>();
     
    		public Counter(string name)
    		{
    			this.Name = name;
    		}
     
    		public void AddRecord(DateTime time, long value)
    		{
    			this._records.Add(new Record() { Time = time, Value = value });
    		}
     
    		public IEnumerable<Record> GetAllRecords()
    		{
    			return this._records;
    		}
     
    		public IEnumerable<Record> GetRecordsBetween(DateTime startTime, DateTime endTime)
    		{
    			return this._records.Where(r => r.Time >= startTime && r.Time <= endTime);
    		}
    	}
    Et ça s'utilise comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var counters = new List<Counter>();
    var myCounter = new Counter("My awesome counter");
    counters.Add(counter);
     
    counter.AddRecord(DateTime.Now, 1337);
    var allValues = counter.GetAllRecords().Select(x => x.Value);
    Evidemment, ce n'est qu'un exemple d'implémentation, libre à toi de modifier tout ça pour que ça convienne à ton besoin.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut
    En gros il faut que je construise une classe compteur pour définir ses paramètres.

    Ensuite, je peux l'utiliser dans mon programme.

    Par contre, comment je fais ensuite pour lire mes valeurs car j'en ai besoin pour réaliser des courbes.

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Citation Envoyé par Novac Voir le message
    En gros il faut que je construise une classe compteur pour définir ses paramètres.

    Ensuite, je peux l'utiliser dans mon programme.

    Par contre, comment je fais ensuite pour lire mes valeurs car j'en ai besoin pour réaliser des courbes.
    Il faut que l'axe des X soit bindé sur ta propriété date par exemple et l'axe des Y sur la propriété Valeur, quel composant utilises-tu pour dessiner tes graphs.

    Déclare aussi la classe records en public si tu veux accéder à ses membres.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut
    J'utilise ZegGraph

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 41
    Par défaut
    Désolé pour ce temps de réponse, j'ai été très occupé ces derniers temps. En tout cas merci pour vos conseils car j'ai bien réussi à réaliser mes courbes.

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

Discussions similaires

  1. Réponses: 31
    Dernier message: 27/07/2006, 13h51
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [MySQL] problème de récupération de données incompréhensible
    Par yanice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/07/2006, 22h45
  4. [MySQL] Problème de récupération de données
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 05/04/2006, 15h13
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

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