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 :

Résultat d'un calcul dans une colonne ajoutée d'un listview via requête SQL


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Bachelier informatique de gestion
    Inscrit en
    Juillet 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bachelier informatique de gestion
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 40
    Par défaut Résultat d'un calcul dans une colonne ajoutée d'un listview via requête SQL
    Bonjour à tous,

    J'arrive à récupérer le résultat de mon calcul dans une boucle mais ensuite je sèche complètement pour afficher ce résultat dans ma colonne pourcentage

    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 StatPatient()
            {
                InitializeComponent();
                Afficher();
                test();
            }
     
            private void Afficher()
            {
                GestionListe.RemplirListe(Program.BD, listStatP, "SELECT patient.id, COUNT(*) AS Nombre_de_patients, provenance.nom_provenance AS Provenance FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id");
                listStatP.Columns.Add("Pourcentage", 80);
            }
     
            private void test() 
            {
                double nbrPT = Program.BD.GetValueDouble("SELECT COUNT(*) FROM patient");
                double nbrEnregistrements = Program.BD.GetValueDouble("SELECT COUNT(*) FROM (SELECT COUNT(*) FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id)AS COUNTS");
                double nombre = 0;
                double calcul = 0;
                double position = nbrEnregistrements - 1;
                for (double i = 0; i <= position; i++) 
                {
                    nombre = Program.BD.GetValueDouble("SELECT COUNT(*) FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id LIMIT "+i+",1");               
                    calcul = (nombre / nbrPT) * 100;
                    textBox1.Text += calcul.ToString() + "%\r\t";
                }
     
                //string[] texte = textBox1.Text.Split('\t');
                //string pourcentage = texte[0] + "-" + texte[1] + "-" + texte[2];
                //MessageBox.Show('"'+ pourcentage +'"');
            }
    Merci d'avance

  2. #2
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Bonjour,
    pourquoi ne pas le faire en SQL ? et ainsi récupérer les champs dont tu as besoin (y compris le champs calculé)

  3. #3
    Membre averti
    Homme Profil pro
    Bachelier informatique de gestion
    Inscrit en
    Juillet 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bachelier informatique de gestion
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 40
    Par défaut
    J'ai essayé ta solution mais il y a encore un soucis ça m'affiche le même pourcentage à chaque ligne :s
    Je n'arrive pas à arranger le problème

    Voici 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
     
            private void Afficher() 
            {
                int nbrPT = Program.BD.GetValueInt("SELECT COUNT(*) FROM patient");
                int nbrEnregistrements = Program.BD.GetValueInt("SELECT COUNT(*) FROM (SELECT COUNT(*) FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id)AS COUNTS");
                int nombre = 0;
                double calcul = 0;
                int position = nbrEnregistrements - 1;
                for (int i = 0; i <= position; i++)
                {
                    nombre = Program.BD.GetValueInt("SELECT COUNT(*) FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id LIMIT "+i+",1");
                    calcul = (Convert.ToDouble(nombre) / Convert.ToDouble(nbrPT)) * 100;
                    GestionListe.RemplirListe(Program.BD, listStatP, "SELECT patient.id, COUNT(*) AS Nombre_de_patients, provenance.nom_provenance AS Provenance, " + calcul + " AS Pourcentage FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id");          
                }
            }
    Merci d'avance

  4. #4
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Pouvez vous mettre la structure des tables SQL (nom de la table + libellé des champs utilisés + clefs étrangères) ainsi que le résultat attendu (nom des colonnes) ?

  5. #5
    Membre averti
    Homme Profil pro
    Bachelier informatique de gestion
    Inscrit en
    Juillet 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bachelier informatique de gestion
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 40
    Par défaut
    Bonjour,

    En pièce jointe le résultat attendu, dans la textbox les résultats que je voudrais avoir dans ma colonne pourcentage.

    La structure de ma table patient contient les champs suivants :
    id
    ref_provenance

    table provenance contient juste :
    id
    nom_provenance

    Le problème vient de la dernière requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                for (int i = 0; i <= position; i++)
                {
                    nombre = Program.BD.GetValueInt("SELECT COUNT(*) FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id LIMIT "+i+",1");
                    calcul = (Convert.ToDouble(nombre) / Convert.ToDouble(nbrPT)) * 100;
                    textBox1.Text += calcul.ToString("00.00") + "%\r\n";
                    pourcent = calcul.ToString("00.00");
                    GestionListe.RemplirListe(Program.BD, listStatP, "SELECT patient.id, COUNT(*) AS Nombre_de_patients, provenance.nom_provenance AS Provenance, " + pourcent + " AS Pourcentage FROM patient LEFT JOIN provenance ON patient.ref_provenance = provenance.id GROUP BY provenance.id");          
                }
    Merci d'avance
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Et avec ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT COUNT(*) AS [Nb par provenance],
     nom_provenance ,
     (CAST(COUNT(*) AS DECIMAL(9,0))/(SELECT COUNT(*) FROM patient))*100 AS pourcentage
    FROM patient p
    JOIN  provenance pr ON p.ref_provenance = pr.id
    GROUP BY nom_provenance

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

Discussions similaires

  1. [WD15] calcul dans une colonne table
    Par kirikou84 dans le forum WinDev
    Réponses: 13
    Dernier message: 23/08/2012, 18h35
  2. Update calcul dans une colonne petite probleme
    Par mihaispr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/12/2009, 10h24
  3. [XL-97] Ecrire résultat calcul dans une colonne déterminée
    Par Bocage dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2009, 18h24
  4. Réponses: 3
    Dernier message: 14/06/2007, 13h35
  5. [VB.NET] Calculs dans une colonne d'un datagridview
    Par boulete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/03/2006, 15h11

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