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

Requêtes et SQL. Discussion :

Requête cumul sur dates


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur Usines
    Inscrit en
    Juillet 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur Usines
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 29
    Points : 15
    Points
    15
    Par défaut Requête cumul sur dates
    Bonjour à tous,
    Après plusieurs heures à balayer le forum sur les sujets déjà traités sur les requêtes incluant des cumuls, j'en viens à vous demander de l'aide car je n'arrive toujours pas à faire fonctionner la mienne.
    J'ai une table ([Saisies Journalières]) où je saisi nos valeurs journalières de CA, l'objectif journalier de CA et aussi d'autres valeurs.
    J'ai créé une requête qui me permet de tracer des graphiques de suivi de nos performances.
    Désormais je souhaite également suivre l'évolution de notre CA objectif et CA réel en cumul.
    Voici ce que je souhaite obtenir :

    Nom : Cumul.png
Affichages : 489
Taille : 35,5 Ko

    et voici le code actuel de ma requête, qui fonctionne parfaitement sur les autres champs pour le filtre par date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Saisies Journalières].N°, [Saisies Journalières].Date, [Saisies Journalières].Orders_flow, [Saisies Journalières].Shipped_total_actual, [Saisies Journalières].[Shipped_banana _actual], [Saisies Journalières].Shipped_industry_actual, [Saisies Journalières].MTD_average_salesprice_actual, [Saisies Journalières].MTD_average_salesprice_objectif, [Saisies Journalières].MTD_average_contrib_actual, [Saisies Journalières].MTD_average_contrib_objectif, [Saisies Journalières].Daily_sales_banana_objectif, [Saisies Journalières].Daily_sales_industry_objectif, [Saisies Journalières].Daily_sales_total_objectif, [Saisies Journalières].Daily_sales_actual_euros, [Saisies Journalières].Daily_sales_objectif_euros, [Saisies Journalières].Stock, [Saisies Journalières].Orders_entered, [Saisies Journalières].Orders_backlog, [Saisies Journalières].[Backlog limit]
    FROM [Saisies Journalières]
    WHERE ((([Saisies Journalières].Date) Between [Formulaires]![Démarrage]![DateDébut] And [Formulaires]![Démarrage]![DateFin]));
    Ce sont les champs [Saisies journalières].Daily_sales_objectif_euros et [Saisies journalières].Daiyly_sales_actual_euros que je souhaite pouvoir cumuler.
    Merci d'avance,

    Olivier

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 402
    Points : 19 833
    Points
    19 833
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    C'est compliqué, vous ne donnez pas assez d'informations.

    Il faudrait cumuler par jour, par exemple pour les objectifs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT [Saisies Journalières].Date,DSum("Daily_sales_total_objectif","[Saisies Journalières]","[Date]<=#" & Format([Saisies Journalières].[Date],"mm-dd-yyyy") & "#") as cumulObjectifs
    FROM [Saisies Journalières]
    WHERE ((([Saisies Journalières].Date) Between [Formulaires]![Démarrage]![DateDébut] And [Formulaires]![Démarrage]![DateFin]));
    Le distinct après le select permet d'avoir des lignes uniques dans le résultat de la requête.

    La formule des cumuls pour les objectifs ressemblerait donc à ceci :

    cumulObjectifs = SomDom("Daily_sales_total_objectif";"[Saisies Journalières]";"[Date]<=#" & Format([Saisies Journalières].[Date];"mm-jj-aaaa") & "#")
    En fait, j'ignore si c'est le champ "Daily_sales_total_objectif" qui vous sert de calcul ou un autre

    Voici de la lecture :

    fonctions de domaine vs sous-requêtes

    Cdlt,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Directeur Usines
    Inscrit en
    Juillet 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur Usines
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Quelles sont les informations complémentaires dont vous auriez besoin ?
    J'ai commencé à regarder le tuto sur les fonctions de domaine, pas simple pour moi qui suis débutant mais je vais tenter de m'accrocher.
    "Daily_sales_total_objectif" n'est pas un champ calculé mais un champ renseigné.
    En fait je souhaite que "Daily_sales_objectif_euros" et "Daily_sales_actual_euros" se cumulent journalièrement sur la plage de dates sélectionnée dans mon formulaire "Démarrage" afin de pouvoir comparer l'évolution du cumul comme sur le graphique présent dans mon premier message. L'idée est de savoir si de date à date, notre CA cumulé est en ligne ou non avec notre objectif de CA cumulé, car on peut avoir pris du retard sur une journée mais rattrapé le lendemain.
    Ex, si Daily_sales_actual_euros vaut :
    26/06/19 : 50
    27/06/19 : 60
    28/06/19 : 40
    29/06/19 : 20
    30/06/19 : 30
    et que Daily_sales_objectif_euros vaut :
    26/06/19 : 40
    27/06/19 : 40
    28/06/19 : 40
    29/06/19 : 40
    30/06/19 : 40
    Je souhaite que la requête, si je sélectionne la plage du 27/06 au 29/06 dans le formulaire, renseigne dans un champ qu'on appellera Daily_sales_actual_euros_cumul, les valeurs suivantes :
    27/06/19 : 60 (Daily_sales_actual_euros du 27/06)
    28/06/19 : 100 (Daily_sales_actual_euros du 27/06 + 28/06)
    29/06/19 : 120 (Daily_sales_actual_euros du 27/06 + 28/06 + 29/06)
    et un autre champ Daily_sales_objectif_euros_cumul les valeurs suivantes :
    27/06/19 : 40 (Daily_sales_objectif_euros du 27/06)
    28/06/19 : 80 (Daily_sales_objectif_euros 27/06 + 28/06)
    29/06/19 : 120 (Daily_sales_objectif_euros 27/06 + 28/06 + 29/06)
    qui sera donc pour chaque jour, le montant du champ Daily_sales_actual_euros + le cumul des valeurs de ce champ pour les jours d'avant.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 402
    Points : 19 833
    Points
    19 833
    Billets dans le blog
    66
    Par défaut
    Dans ce cas essayez cette requête pour le 1er cas, suivant ce que je vous ai expliqué précédemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT [Saisies Journalières].Date,DSum("Daily_sales_actual_euros","[Saisies Journalières]","[Date] between #" & Format([Formulaires]![Démarrage]![DateDébut],"mm-dd-yyyy") & "# and #" & Format([Saisies Journalières].[Date],"mm-dd-yyyy") & "#") as Daily_sales_actual_euros_cumul
    FROM [Saisies Journalières]
    WHERE ((([Saisies Journalières].Date) Between [Formulaires]![Démarrage]![DateDébut] And [Formulaires]![Démarrage]![DateFin]));
    Dans le QBE, requête en mode création vous devriez avoir une formule de la forme :

    Daily_sales_actual_euros_cumul : SomDom("Daily_sales_actual_euros";"[Saisies Journalières]";"[Date] between #" & Format([Formulaires]![Démarrage]![DateDébut],"mm-jj-aaaa") & "# and #" & Format([Saisies Journalières].[Date],"mm-jj-aaaa") & "#")
    Même principe pour le cumul des objectifs.


    Cdlt,

  5. #5
    Membre à l'essai
    Homme Profil pro
    Directeur Usines
    Inscrit en
    Juillet 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur Usines
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ok j'ai essayé mais en voulant enregistrer la requête j'ai un message d'erreur qui me dit :
    Erreur de syntaxe (opérateur absent) dans l'expression "DSum(Daily_sales_actual_euros"..........)
    Ce que je comprends de votre code est qu'il va, dans la requête que je crée avec, donner pour valeur au champ "Daily_sales_actual_euros_cumul" la valeur calculée par la formule se trouvant à partir de DSUM, c'est bien ça ?

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 402
    Points : 19 833
    Points
    19 833
    Billets dans le blog
    66
    Par défaut
    Oui, j'ai oublié l’esperluette (&) après le between dans la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT [Saisies Journalières].Date,DSum("Daily_sales_actual_euros","[Saisies Journalières]","[Date] between #" & Format([Formulaires]![Démarrage]![DateDébut],"mm-dd-yyyy") & "# and #" & Format([Saisies Journalières].[Date],"mm-dd-yyyy") & "#") as Daily_sales_actual_euros_cumul
    FROM [Saisies Journalières]
    WHERE ((([Saisies Journalières].Date) Between [Formulaires]![Démarrage]![DateDébut] And [Formulaires]![Démarrage]![DateFin]));
    Il faut voir la formule comme une sous-requête.

    Cdlt,

  7. #7
    Membre à l'essai
    Homme Profil pro
    Directeur Usines
    Inscrit en
    Juillet 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur Usines
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ok ça fonctionne, merci bcp !
    Etant donné que je dois comparer mon cumul de CA réel par rapport au cumul de CA objectif, j'ai donc créé une deuxième requête pour le deuxième cumul et j'ai intégré ces deux sous-requêtes dans une nouvelle requête qui les regroupe et ça fonctionne parfaitement (on peut peut-être pu coder directement une requête qui regroupe les deux fonctions de domaine pour chaque cumul mais je n'y arrive pas, alors j'ai utilisé cette astuce qui est à mon niveau de compétence...).
    Mon soucis est que quand je créé un graphique à partir de ma requête, au lieu d'afficher les valeurs il affiche le nombre de valeurs pour chaque champ, je n'avais encore jamais rencontré ce problème et je ne sais pas où aller modifier (je suppose que c'est un paramètre qui spécifie si on veut la valeur, le nombre de valeurs, leur moyenne, leur max ou leur min, etc...).
    Ci-dessous le graphique, le visu de la requête ainsi que la base de données si besoin :

    Nom : Graphique cumul.png
Affichages : 386
Taille : 157,9 Ko

    Nom : Requête comparaison.png
Affichages : 389
Taille : 133,9 Ko

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 402
    Points : 19 833
    Points
    19 833
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Il faut regarder la propriété contenu du graphique, elle contient le code SQL de la requête qui comporte un count au lieu d'un sum ou d'un first :

    Ci-joint votre fichier.

    Cdlt,
    Fichiers attachés Fichiers attachés

  9. #9
    Membre à l'essai
    Homme Profil pro
    Directeur Usines
    Inscrit en
    Juillet 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur Usines
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ok donc c'est là qu'il faudra que j'aille dans le futur en cas de besoin :

    Nom : Contenu graphique.png
Affichages : 373
Taille : 207,2 Ko


    puis là :

    Nom : Contenu requête graphique.png
Affichages : 383
Taille : 126,1 Ko

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 402
    Points : 19 833
    Points
    19 833
    Billets dans le blog
    66
    Par défaut
    Oui, c'est bien ça.

    Pouvez-vous clore la discussion ?


  11. #11
    Membre à l'essai
    Homme Profil pro
    Directeur Usines
    Inscrit en
    Juillet 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur Usines
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ok top merci, je clos la discussion.

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 402
    Points : 19 833
    Points
    19 833
    Billets dans le blog
    66
    Par défaut
    Oui, c'est mieux comme ça ;-)

    Un problème = une discussion.

    Cdlt,

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

Discussions similaires

  1. Requête SQL sur date
    Par Siocnarfus dans le forum Requêtes
    Réponses: 7
    Dernier message: 27/04/2018, 16h52
  2. Requête SQL sur date
    Par souhail72 dans le forum Développement
    Réponses: 12
    Dernier message: 12/10/2016, 18h43
  3. [AC-2003] Requête paramétrée sur date
    Par PAUL87 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/10/2011, 10h18
  4. [SQL 2008] Requête : Cumul sur 12 mois glissants
    Par mad_martigan dans le forum Développement
    Réponses: 4
    Dernier message: 23/12/2010, 17h35
  5. Requête condition sur date
    Par napegadie dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/06/2007, 14h24

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