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

Bases de données Delphi Discussion :

Query colonnes : afficher en lignes


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut Query colonnes : afficher en lignes
    bonjour

    jai une BDD avec delphi 7 jai une table global comme suit :


    Lignes - Le Figaro - Le Parisien - Le Soir - date

    paris - 12 - 111 - 44 - 1/01/2008

    marseille - 222 - 34 - 45 - 1/01/2008

    Lyon - 33 - 55 -- 66 - 1/01/2008

    paris - 55 - 66 - 77 - 2/01/2008

    marseille - 99 - 88 --- 55 - 2/01/2008

    lyon - 22 - 44 - 11 - 2/01/2008
    -
    paris - 66 - 44 - 77 - 3/01/2008
    -
    marseille - 44 - 33 - 66 - 3/01/2008

    lyon - 22 - 44 - 100 - 3/01/2008
    -


    et je veux avoir cette etat avec une requete sql (tquery):

    lignes : paris - date du 1/01/2008 - au date : 3/01/2008


    journal - qte


    Le Figaro - 133

    Le parisien - 221

    Le Soir - 198


    es que je peux avoir cette etat de letat precedante ou bien je doit faire des modification parce que jai beau reflichi et tester mais aucun resultat

    es que quelqu'un peu maider et me dire esque c possible avec une requete et comment ?

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    voci toujours une piste , si ce n'est pas paradox
    sinon il faudra , je pense oter le premier champ du select et la clause group by
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT CAST('Le Figaro' AS CHAR(20)),SUM(LEFIGARO) FROM TABLE 
    WHERE LIGNES='Paris' AND DATE BETWEEN ....
    GROUP BY 0  
    UNION
    SELECT 'Le Parisien',SUM(LEPARISIEN) FROM TABLE 
    WHERE LIGNES='Paris'  AND DATE BETWEEN .....
    GROUP BY 0
    UNION
    SELECT 'Le Soir',SUM(LESOIR) FROM TABLE 
    WHERE LIGNES='Paris' AND DATE BETWEEN .....
    GROUP BY 0

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    ok c a peu pret sa chaque lignes toute seul jai compris le sens de la requete


    merci

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    Selon ton énoncé

    journal - qte


    Le Figaro - 133

    Le parisien - 221

    Le Soir - 198
    tu veux obtenir les trois (colonnes) ce que le Query proposé te permets de faire, l'UNION te fournissant trois "enregistrements" . Chaque requete 'toute seule' ne te fourniras qu'un seul "enregistrement" , pas top pour faire un état

  5. #5
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    desolé je viens de lire votre requete c sa oui c exactement sa je vien de comprendre merci et desolé pour lerreur je rajoute quelque chose les tables sont en paradox je doit ajouter des parametres

    je le test et je vous rond la reponse

    merci

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    puisque les tables sont Paradox il faut oublier la partie group by et le rajout de colonnes , dommage

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT SUM(LEFIGARO) FROM TABLE 
    WHERE LIGNES=:Ville AND DATE BETWEEN  :debut AND :fin
    UNION
    SELECT SUM(LEPARISIEN) FROM TABLE 
    WHERE LIGNES=:Ville  AND DATE BETWEEN  :debut AND :fin
    UNION
    SELECT SUM(LESOIR) FROM TABLE 
    WHERE LIGNES=:Ville AND DATE BETWEEN :debut AND :fin

    c'est dans l'etat qu'il faudra gérer les noms des journaux

  7. #7
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour

    elle fait quoi et pk vous lavez enlever ?


    merci

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    permettait d'obtenir la première colonne de la requête qui :
    1. n'était pas une colonne de la table
    2. n'était pas le résultat d'un agrégat comme SUM, MAX, COUNT etc ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST('Le Figaro' AS CHAR(20))

  9. #9
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour
    j'ai fait ce program mais il ne maffiche pas tout les journaux il maffiche que la somme de ''aggfield'' en plus il me calcul la somme entre deux date comme suit :
    exemple : date : 23/04/2008 au 27/04/2008 il fait la somme mais il ne prend pas la valeur de la date 25/04/2008 !!!!!

    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
    procedure TForm4.Button6Click(Sender: TObject);
    var requete,ville,Aggfield,Agg1field,Agg2field : string;
        StartDate, EndDate: TDate;
    begin
    requete := (' SELECT SUM('+Aggfield+') FROM Table_joursemaine WHERE (LIGNES=:Ville AND (Date_Liv BETWEEN  :StartDate AND :EndDate))');
    Aggfield := Edit1.Text;
    Agg1field := Edit5.Text;
    Agg2field := Edit6.Text;
    ville := edit4.Text;
    StartDate := strtodate(Edit2.text);
    Enddate := strtodate(Edit3.Text);
    with Query2 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT SUM('+Aggfield+') FROM Table_joursemaine WHERE (LIGNES=:Ville AND (Date_Liv BETWEEN  :StartDate AND :EndDate))');
        SQL.Add('Union');
        SQL.Add('SELECT SUM('+Agg1field+') FROM Table_joursemaine WHERE (LIGNES=:Ville AND (Date_Liv BETWEEN  :StartDate AND :EndDate))');
        SQL.Add('Union');
        SQL.Add('SELECT SUM('+Agg2field+') FROM Table_joursemaine WHERE (LIGNES=:Ville AND (Date_Liv BETWEEN  :StartDate AND :EndDate))');
        ParamByName('StartDate').AsDate := StartDate;
        ParamByName('EndDate').AsDate := EndDate;
        parambyname('ville').AsString := ville;
        Prepare;
        Open;
      end;
    end;
    je doit faire quoi ou est lerreur?
    merci

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    peux-tu m'envoyer le fichier (petit) via messages privé

    je doit avouer que j'ai toujours été frileux avec le test des Dates via BETWEEN

  11. #11
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    comment je fait je zip mon projet et je te lenvoi ?

    merci

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    juste la table paradox (c'est pour avoir un jeu d'essai sans me fatiguer )

  13. #13
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    desole mais comment je fait pour envoier une piece jointe ?

    merci

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    pas grave , je viens de faire un petit fichier
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT SUM(J1)
    FROM "test.db" 
    WHERE DATE_L between '01/01/2008' AND '1/3/2008'
    UNION 
    SELECT SUM(J2)
    FROM "test.db" 
    WHERE DATE_L between '01/01/2008' AND '1/3/2008'
    UNION
    SELECT SUM(J3)
    FROM "test.db" 
    WHERE DATE_L between '01/01/2008' AND '1/3/2008'

    Fonctionne parfaitement ce qui me fait penser que ton passage de paramètres est incorrect . Essayes :

    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
    procedure TForm4.Button6Click(Sender: TObject);
    var requete,ville,Aggfield,Agg1field,Agg2field : string;
        StartDate, EndDate: TDate;
    begin
    //requete := (' SELECT SUM('+Aggfield+') FROM Table_joursemaine WHERE (LIGNES=:Ville AND (Date_Liv BETWEEN  :StartDate AND :EndDate))');
    Aggfield := Edit1.Text;
    Agg1field := Edit5.Text;
    Agg2field := Edit6.Text;
    ville := edit4.Text;
    StartDate := strtodate(Edit2.text);
    Enddate := strtodate(Edit3.Text);
    with Query2 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT SUM('+Aggfield+') FROM Table_joursemaine WHERE LIGNES=:Ville AND Date_Liv BETWEEN '+Quotedstr(Edit2.text) AND '+Quotedstr(Edi3.text));
        SQL.Add('Union');
        SQL.Add('SELECT SUM('+Agg1field+') FROM Table_joursemaine WHERE LIGNES=:Ville AND Date_Liv BETWEEN '+Quotedstr(Edit2.text) AND '+Quotedstr(Edi3.text));
        SQL.Add('Union');
        SQL.Add('SELECT SUM('+Agg2field+') FROM Table_joursemaine WHERE LIGNES=:Ville AND Date_Liv BETWEEN '+Quotedstr(Edit2.text) AND '+Quotedstr(Edi3.text));
        parambyname('ville').AsString := ville;
        Prepare;
        Open;
      end;
    end;
    pour voir ATTENTION AU FORMAT DE LA DATE MM/JJ/AAAA

  15. #15
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    desole mais comment je fait pour envoier une piece jointe ?

    merci

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    pour envoyer une piece jointe regardes sous la zozn de saisie du message dans les options supplémentaires , le cadre Fichiers attachés, bouton [Gérer les pieces jointes]

  17. #17
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    le program ne ce compile pas il maffiche en bas :
    ''
    unterminated string
    operator not aplicable to this operend type''


    merci

  18. #18
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 504
    Points : 2 776
    Points
    2 776
    Billets dans le blog
    10
    Par défaut
    A mon avis tu ne prends pas le problème dans le bon sens.
    L'opération que tu souhaites faire par ta requete s'appelle Normalisation (cf formes normales de Boyce-Codd). La table source devrait avoir une autre forme :
    Date,Ville,Journal,Quantite et être primary-indexée sur Date+Ville.
    Est ce que tu as la possibilité de changer le format de la table interrogée ?

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 184
    Points : 41 385
    Points
    41 385
    Billets dans le blog
    63
    Par défaut
    + 1 @ALBEWER pour la structure

    quant à la compilation

    1. Je n'ai as testé le code
    2. il faut juste s'en inspiré
    3. je n'écris pas le programme a ta place

  20. #20
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    ok je vais voir ou est lerreur !!

    merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2003] Macro masquer/afficher des lignes et colonnes
    Par Estimea dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/03/2011, 17h18
  2. Ne pas afficher les lignes et les colonnes interne dans un tableau HTML
    Par Jinx_ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/01/2010, 21h23
  3. [CR 2008] afficher des lignes en colonnes.
    Par nerik_t dans le forum Formules
    Réponses: 3
    Dernier message: 16/11/2009, 10h34
  4. Réponses: 0
    Dernier message: 24/08/2007, 12h27
  5. Réponses: 2
    Dernier message: 24/12/2006, 12h01

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