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

Access Discussion :

affichage ligne malgré 0 enregistrement


Sujet :

Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut affichage ligne malgré 0 enregistrement
    Salut,

    J'ai fait une base dans le lequel chaque enregistrement correspond à un événement daté. J'ai fait un état qui me réalise le bilan par année, mais le problème est, que si je n'ai pas d'enregistrement lors d'un mois, la ligne du mois n'apparaît pas. Pour être plus clair, voici un exemple de ce que j'ai, suivi de ce que je voudrais:

    janvier 2
    février 1
    mars 3
    mai 3

    ------

    janvier 2
    février 1
    mars 3
    avril 0
    mai 3


    La ligne du mois d'avril où je n'ai pas d'enregistrement ne se crée pas. Existe-t'il une solution?

    Merci de m'aider.

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Avec un Regroupement et une Somme, cela retouren ce que tu veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT Table1.N°, Table1.Mois, Sum(Table1.Valeur) AS Total
    FROM Table1
    GROUP BY Table1.N°, Table1.Mois
    ORDER BY Table1.N°;
    Argy

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse, mais je ne comprend pas où je dois spécifier le code que tu me conseilles.

    Je n'utilise pas de requête pour mon état (directement ma table). Dans mon état, j'ai fait "Trier et grouper" avec 2 tris par date (un tri par année et un tri par mois). Est-ce une bonne idée?

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    C'aurait pu être une bonne idée mais il est préférable de mettre comme source une requête si tu ne veux pas te compliquer la vie.

    Argy

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    J'ai suivi ton conseil le problème est que, pour faire le tri, je travaille sur les dates complètes ("jj/mm/aaaa") de mes évènements. Je n'ai pas de champ "Mois".

    Voici les codes que j'ai mis pour ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT NonConformité.[Référence NonConformité], NonConformité.Date, Sum(NonConformité.Valeur) AS Total
    FROM NonConformité
    GROUP BY NonConformité.Date, NonConformité.[Référence NonConformité]
    ORDER BY NonConformité.[Référence NonConformité];
    Elle ne fonctionne pas (à cause du champ "valeur") qui n'existe pas dans ma table.

    Jd

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Dans ta zone de regroupement d'entête, tu ajoutes un champ indépendant (caché) avec la formule
    sur lequel tu appliques un tri croissant.

    Argy

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Excuses, mais je ne te suis plus.

    Je rajoute le champ indépendant dans mon état ou dans ma requête? J'ai créé un autre état travaillant avec la requête (suivant le code de mon post précédent, ce code ne fonctionnant pas).

    Jd

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Le seul moyen de trier par mois est d'exploiter le N° du mois ;
    Tu ne peux pas trier sur le nom du mois, oK ???
    Donc, oui, dans ton état, tu ajoutes un champ indépendant (dans un 1er temps tu le laisses visible pour contrôler la cohérence) dans lequel tu mets la formule qui retourne le N° du mois de ta date.
    Ensuite dans les options de regroupement, tu choisis Croissant puis tu valides ;
    Tu contrôles que c'est OK puis en Mode création, tu écrases la hauteur de l'entête de groupe à hauteur 0.

    C'est tout...

    Argy

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Ok, je crois avoir compris. Mais le problème, c'est que pour les mois où je n'ai pas d'enregistrement, la ligne n'apparaît pas. ???

    Jd

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Pour ce qui est du champ Valeur, je croyais que ce champ existait...
    Donc au lieu de faire un SUM() tu fais un COUNT() comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NonConformité.[Référence NonConformité], Month([Date]) AS NoMois, Count(NonConformité.Date) AS Valeur, StrConv(Format([Date],"mmmm"),3) AS NomDuMois
    FROM NonConformité AS NonConformité
    GROUP BY NonConformité.[Référence NonConformité], Month([Date]), StrConv(Format([Date],"mmmm"),3);
    Là tu as tout pour travailler alors plus d'excuses

    Argy

  11. #11
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bon, je dois être très lourd.

    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NonConformité.[Référence NonConformité], Month([Date]) AS NoMois, Count(NonConformité.Date) AS Valeur, StrConv(Format([Date],"mmmm"),3) AS NomDuMois, NonConformité.Date
    FROM NonConformité
    GROUP BY NonConformité.[Référence NonConformité], Month([Date]), StrConv(Format([Date],"mmmm"),3), NonConformité.Date;
    Je donne cette requête comme source à mon état.
    Je fais un regroupement dans mon état avec la formule et dans mon aperçu, j'obtients uniquement :

    janvier 1
    juillet 1


    ???

    Jd

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Non,
    Tu n'as plus besoin de ça:
    Tout est dans la requête ; ouvre la requête dans le QBE et tu comprendras tout d'après son contenu.

    Argy

  13. #13
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bon, j'avais un peu modifié ma requête avant ta réponse parce que je perdais la trace de l'année (qui me permets de faire un premier tri par année). Donc voici son nouveau code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(NonConformité.AnnéeNC) AS CompteDeAnnéeNC, StrConv(Format([Date],"mmmm/yyyy"),3) AS MoisAnnée, NonConformité.AnnéeNC, Month([Date]) AS NoMois
    FROM NonConformité
    GROUP BY StrConv(Format([Date],"mmmm/yyyy"),3), NonConformité.AnnéeNC, Month([Date])
    ORDER BY Month([Date]);
    Mais tout ça ne résout encore pas mon problème, puisque les mois où je n'ai pas d'enregistrement n'apparaissent toujours pas.

    Excuses-moi, un question toute bête pour toi. Qu'est-ce que le QBE?

    Merci

    Jd[/i]

  14. #14
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Quand tu fais un regroupement, tu poses le champ à regrouper dans la zone de groupe.
    Là, tu vas poser le champ MoisAnnée en entête de groupe et le reste dans la section détail.

    Si tu exécutes la requête, tu verras que pour Avril tu as 0 et pas ""

    QBE, c'est l'éditeur de requête.

    Argy

  15. #15
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    J'ai fait un regroupement sur l'année: pas de problème.

    Ensuite, j'ai fait un regroupement sur NoMois pour conserver l'ordre chronologique où je place le champ MoisAnnée dans l'entête de groupe et le champ CompteDeAnnéeNC dans la section détail, mais je n'ai toujours les mois à 0.

    Quand je lance ma requête en mode Feuilles de données, c'est pareil, les mois à 0 n'apparaisse pas.

    Merci encore de ta bonne volonté.

    Jd

  16. #16
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bon, ok... Tu as raison, c'est normal, j'avais omis de considérer qu'il n'y avait aucun enregistrement.
    Voilà la solution, procède exactement comme suit:
    1/ Créé une table que tu appelle TBLMois qui contient les 12 mois de l'année avec leur n° respectifs dans les champs NoMois et NomDuMois
    (pas de clé primaire)
    2/ Créé une requête comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NonConformité.Date AS Valeur, StrConv(Format([Date],"mmmm yyyy"),3) AS NomDuMois, Month([Date]) AS NoMois
    FROM NonConformité;
    que tu nommes qryNonConformité et que tu fermes après avoir enregistré
    3/ Créé une seconde requête comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(qryNonConformité.Valeur) AS CompteDeValeur, TBLMois.NomDuMois, TBLMois.NoMois
    FROM qryNonConformité RIGHT JOIN TBLMois ON qryNonConformité.NoMois = TBLMois.NoMois
    GROUP BY TBLMois.NomDuMois, TBLMois.NoMois
    ORDER BY TBLMois.NoMois;
    Qui exploitera la table TBLMois et la requête qryNonConformité
    4/ Exécute la requête, tu as tes données.

    Argy

  17. #17
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Encore merci, ça marche ... presque.

    Je t'explique. Quand je n'ai pas d'enregistrement, ça m'affiche bien 0, mais le problème est que ça mélange les années. En détail si en 2004, je n'ai pas eu d'enregistrement mais qu'en 2005 j'en ai un, là ça ne marche plus.

    J'ai essayé de mettre un autre champ (qui contient une date) dans la 2ème requête pour faire des regroupement dans mon état, mais ça ne marche pas. Faut-il que je crée une autre table contenant les années?

    Voici mes données:

    Année 2004:
    juillet 2
    août 1
    septembre 2
    octobre 2
    décembre 1

    Année 2005:
    janvier 1
    février 1
    mars 2
    avril 1
    mai 2
    juin 1
    juillet 1
    octobre 1


    Jd

  18. #18
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Non, pas besoin,

    Tu modifies la 2nd requête comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(qryNonConformité.Valeur) AS Total, TBLMois.NomDuMois, Year([Valeur]) AS Année
    FROM qryNonConformité RIGHT JOIN TBLMois ON qryNonConformité.NoMois = TBLMois.NoMois
    GROUP BY TBLMois.NoMois, TBLMois.NomDuMois, Year([Valeur])
    ORDER BY TBLMois.NoMois, Year([Valeur]);
    Argy

  19. #19
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Toujours pas.

    Quand je lance la requête, j'obtient uniquement 0 sur le mois de novembre où je n'ai encore aucun enregistrement sur les 2 années.

    Dans mon état, si je fais un regroupement sur l'année, j'obtiens une première ligne avec un champ vide pour l'année et novembre égal à 0 (normal puisqu'en lançant ma requête, ce champ est vide), mais pour les années 2004 et 2005, les mois où je n'ai pas d'enregistrement n'apparaisent toujours pas.

    Jd

  20. #20
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bien disons qu'il faut relativiser.
    Tu veux donc afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Janvier    0
    Février    0
    Mars       0
    Avril      0
    Mai        0
    Juin       0
    Juillet    2
    Août       0
    Septembre  0
    Octobre    0
    Novembre   0
    Décembre   0
    pour une année X si il n'y a eu que des Conformités en Juillet par exemple ?
    C'est pour ma part pas très élégant et puis pas très lisible non plus...
    Ce que je t'ai proposé inclue l'année mais seulement pour les date qui en contiennent.
    Si tu veux ce que je viens de citer alors effectivement c'est plus compliqué mais avec une requête croisée ça doit pouvoir se faire, toutefois, sa présentation dans un état ne sera pas conforme à ce que tu souhaites.

    Argy

Discussions similaires

  1. [MySQL] Affichage des deux derniers enregistrements
    Par breizhgen dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/12/2006, 22h13
  2. [MySQL] Affichage des deux derniers enregistrements
    Par breizhgen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2006, 17h23
  3. Affichage complet d'un enregistrement
    Par emmablue dans le forum Access
    Réponses: 1
    Dernier message: 19/07/2006, 16h14
  4. Affichage ligne avec condition dans /etc/passwd
    Par mzt.insat dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 17/04/2006, 22h25
  5. affichage ligne de tableau
    Par rdams dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 01/02/2006, 11h49

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