Comment faire le regroupement sur la date [Résolu]

Signaler
-
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020
-
Bonjour,
J'ai un code de ma requête qui me permet de connaitre des entrées et des sorties de mon stock.
Ma question 1: comment faire en sorte qu'il ne m'affiche pas une date plusieurs fois? donc pas des doublons des dates mais je veux juste voir les totaux des entrées, des sorties et une date.

question 2: je veux qu'il me me demande a chaque fois de mettre "datebebut" et "datefin"

Quelqu'un peut-il m'aider svp?

voici mon code SQL:

TRANSFORM Nz(Sum(Mouvements.Qtecommande),0) AS SommeDeQtecommande
SELECT produits.Designation, produits.QteStock, Mouvements.DateMov
FROM produits INNER JOIN Mouvements ON produits.IdProduit = Mouvements.IdProduit
GROUP BY produits.Designation, produits.QteStock, Mouvements.DateMov
PIVOT Mouvements.TypeMov;

4 réponses

Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020
30
Bonjour,

Je vais te faire exactement la même réponse qu'il y a 30 minutes sur un autre forum :-)

<copier / coller>

là tu fais un regroupement par produits.Designation, produits.QteStock et Mouvements.DateMov. Donc tu obtiens autant de ligne qu'il y a de désignation et de qtestock différentes pour une meme datemov... Si tu veux uniquement 1 date et un total, enlèves les champs designation et qtestock de ton regroupement.
D'ailleurs c'est quoi ce champ QteStock ?????? On ne stocke pas ce genre d'info, il faut le calculer à la demande avec une requête...

Pour le 2/ il suffit de mettre dans la clause WHERE

WHERE mouvements.datemov BETWEEN [saisir date debut] AND [saisir date fin]
.

Mais généralement on utilise un formulaire (f1 dans l'exemple ci-après) avec 2 controles indépendants, un pour la date début (ctrldatedebut tjrs exemple après), un pour la date fin (ctrldatefin idem), et on mets ces controles dans la clause WHERE. C'est plus joli et pratique pour l'utilisateur.
WHERE mouvements.datemov Between [formulaires]![f1]![ctrldatedebut] And [Formulaires]![f1]![ctrldatefin]

A+
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020
720
bonjour, peux-tu nous informer quand tu poses la même question dans un autre forum?
ce serait plus respectueux.
merci.
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020
30
A priori il a posé la question ici à 14h58 et sur l'autre forum à 15h17 ;-)
Mais bon, j'espère au moins qu'il viendra du coup donner un retour sur les 2 forums :)))
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020
720 >
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020

cela me semble correct de prévenir ici quand il poste ailleurs, pour éviter qu'on travaille pour rien.
>
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020

Bonjour.
Je m'excuse vraiment pour ça. Je ne ferait plus jamais ça. Merci pour cette remarque
>
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020

Bonjour Je suis vraiment désolé d'avoir posé ma question sur deux forums
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020
30
On va dire que tu as maximisé tes chances d'obtenir une réponse :)

Alors, en parlant de réponse, as-tu lu et mis en oeuvre ?

A+
>
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020

Ce code est-il bien écrit ??
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020
720 > Eric
j'ai simplement modifié ton code pour arrondir chaque date à la journée, en utilisant
int(Mouvements.DateMov)
.
Merci beaucoup de vôtre aide. Je suis vraiment satisfait.

Mais j'aimerais ajouter une autre question a la quelle vous n'êtes pas obligé de répondre aujourd'hui car vous m'avez beaucoup aidé.

Ma question : j'aimerais créer un état a partir de ma requête. Mais sur mon état pas des dates dans le champs mais dans un textbox. Mon état doit me montrer le totaux selon les dates saisie (donc il additionne tout selon l'intervalle de la date saisie) désignation, entrée (total) et sortie (total)
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020
30 > Eric
Bah tu crées ton état et tu le bases sur la requête... Et si tu ne veux pas le détail par date, bah enlèves le champs du regroupement...
Messages postés
12945
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 novembre 2020
720 >
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020

donc en copiant la requête, et en y supprimant la date du SELECT et du GROUP BY.
Messages postés
480
Date d'inscription
mardi 14 avril 2020
Statut
Membre
Dernière intervention
6 novembre 2020
30
Je n'avais pas fait attention pour la question à poser avant d'ouvrir la requête.
En analyse croisée, obligé de créer des paramètres dans la requête, ce qui donne :
PARAMETERS [saisir une date de début] DateTime, [saisir une date de fin] DateTime;
TRANSFORM Nz(Sum(Mouvements.Qtecommande),0) AS SommeDeQtecommande
SELECT produits.Designation, Mouvements.DateMov
FROM produits INNER JOIN Mouvements ON produits.IdProduit = Mouvements.IdProduit
WHERE Mouvements.DateMov Between [saisir une date de début] And [saisir une date de fin]
GROUP BY produits.Designation, Mouvements.DateMov
PIVOT Mouvements.TypeMov;


Voici lien https://www.cjoint.com/c/JKgrfFagxPU

A+