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 :

[WPF] Requête SQL dans un dataset


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut [WPF] Requête SQL dans un dataset
    Bonjour,

    Je développe actuellement une application WPF en C#, je récupère le contenu d'une requête SQL dans une DATAGRID.

    Parallèlement je dois construire un graphique en rapport avec ces données sauf que je dois faire des opérations sur mon dataset (sommes cumulées par exemple).

    Est-til possible de faire une requête SQL (avec opération count()) sur un dataset en mode déconnecté ?

    Merci d'avance et bonne journée.

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Je développe actuellement une application WPF en C#, je récupère le contenu d'une requête SQL dans une DATAGRID.
    Comment tu recuperes le resultat du SQL pour le mettre dans la datagrid ?
    tu binds sur une collection ?

    Si c'est le cas, alors tu peux avoir acces a toutes les methodes sur la collection : Count(), Sum(), Average()

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut
    Citation Envoyé par Drezounet218 Voir le message
    Comment tu recuperes le resultat du SQL pour le mettre dans la datagrid ?
    tu binds sur une collection ?

    Si c'est le cas, alors tu peux avoir acces a toutes les methodes sur la collection : Count(), Sum(), Average()
    Je fais le lien de cette manière :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Datagrid.ItemsSource = dataset.Tables[0].DefaultView;

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
             dynamic[] obj = new dynamic[ds.Tables[0].DefaultView.Count];
             dataset.Tables[0].DefaultView.CopyTo(obj, 0);
             var nombre = obj.Where(w => w.Salaire > 2000).Count();
             var moyenne = obj.Average(w=>w.Salaire);
             var MasseSalariale = obj.Sum(w => w.Salaire );
    Quelque chose du genre devrait pouvoir fonctionner

    on créé un tableau d'element (obj).
    On met tous les éléments de la view dans le tableau
    On utilise Linq pour faire des opérations sur ce tableau ( j'ai dans mon exemple la propriété Salaire sur les éléments de mon DataSet)
    Il faut rajouter en haut de ton code :
    Attention, ci dessus, je copie le DefaultView. Donc les valeurs dépendront des éléments affichés a l'ecran.
    Si les besoin sont sur le dataset entier, il faut l'adapter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut
    Super, c'est globalement ce que je cherche, sauf que je fais une somme par catégorie par exemple ma table est de cette forme :

    Personne | Voiture
    -------------------
    Jean | Peugeot
    Pierre | Citroën
    Paul | Peugeot


    et ce que je cherche c'est à cumuler l'occurence d'une catégorie par exemple là on aurait 2 pour peugeot et 1 pour citroën.
    Actuellement je fais ça en SQL avec count et group by de manière simple mais ça nécessite deux requêtes SQL séparées (une pour les données en datagrid et une pour la somme pour le graph) .

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Toujours avec linq sur ta collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var group = from p in obj
                         group p.Person by p.Car into g
                         select new { Car = g.Key, Persons = g.ToList(), Compteur=g.Count() };
    group sera une liste d'objet avec comme propriété :
    - Car : nom de la voiture
    - Persons : liste des personnes qui ont cette voiture
    - Compteur : Nombre de personne qui ont ce model de voiture

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

Discussions similaires

  1. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02
  2. [MySQL] Problème de requêtes SQL dans un script
    Par Nefret dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/09/2005, 15h08
  3. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07
  4. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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