Requête de regroupement

alb05

XLDnaute Occasionnel
Bonjour
je commence avec Access et je voudrai savoir comment créer une requête de regroupement.

Ma base de données d'exercice est :
Table des ARTICLES
Table des COMMANDES avec une date de réception de la commande et une date d'expédition de la commande.
Table du détail de la commande dans laquelle il y a par commande, les quantités commandées d'articles.

J'entends par regroupement dans mon exemple :
Requête 01 :
- Avoir la somme des quantités commandées par article pour les commandes reçues entre DATE 1 et DATE 2.

Requête 02 :
- Avoir la somme des quantités commandées par article pour les commandes reçues entre DATE 1 et DATE 2
et
avoir la somme des quantités expédiées par article pour les commandes expédiées sur la même période d'analyse (entre DATE 1 et DATE 2)
-> n'avoir à saisir qu'une fois les DATE 1 et 2 pour les 2 critères (reception et expedition).

J'espère avoir été clair.
ci joint la base de données de cet exercice.
merci
 

Pièces jointes

  • stock Base de données.zip
    16.7 KB · Affichages: 78
  • stock Base de données.zip
    16.7 KB · Affichages: 82
  • stock Base de données.zip
    16.7 KB · Affichages: 77
  • contenu Bdd.jpg
    contenu Bdd.jpg
    52.4 KB · Affichages: 234

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Bonjour

Un conseil mettre une clé primaire sur la table détail commandes
En principe on utilise un numéro de ligne associé au numéro de la commande.
A défaut j'ai utilisé le code article mais cela interdit 2 lignes sur le même code article dans une commande.

Egalement mettre l'intégrité référentielle sur les relations.

Si tu n'as pas besoin de l'heure, opter pour un format date sans heure dans la structure de la table car sinon cela oblique à saisir l'heure pour les requêtes ou à décaler d'un jour car une date seule est égale à 0 heures.
Par ailleurs si tu veux le détail jour par jour, cela complique les requêtes.

alb05 à dit:
Requête 01 :
- Avoir la somme des quantités commandées par article pour les commandes reçues entre DATE 1 et DATE 2.
Voir requête paramétrée Qte_Commande dans la base

alb05 à dit:
Requête 02 :
- Avoir la somme des quantités commandées par article pour les commandes reçues entre DATE 1 et DATE 2
et
avoir la somme des quantités expédiées par article pour les commandes expédiées sur la même période d'analyse (entre DATE 1 et DATE 2)
-> n'avoir à saisir qu'une fois les DATE 1 et 2 pour les 2 critères (reception et expedition).
Tu ne précises pas si ce sont les articles commandés et expédiés (dont pas ceux qui ont été commandés mais pas encore expédiés) ou tous y compris ceux qui ne sont pas expédiés auquel cas on aura deux cas par article (le cas échéant) les commandés et expédiés et les commandés non expédiés ainsi que, troisième cas, ceux expédiés dans cette période mais commandés hors période.

La requête paramétrée Qte_Livre dans la base donne les livraisons tous cas confondus .

La requête Analyse_commande_livre exploitant les 2 autres donne ton analyse si effectivement c'est la quantité livrée dans la période quel que soit le cas.
 

Pièces jointes

  • stock Base de données.zip
    17.9 KB · Affichages: 76
  • stock Base de données.zip
    17.9 KB · Affichages: 73
  • stock Base de données.zip
    17.9 KB · Affichages: 74
Dernière édition:

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

Merci.
L'utilisation du "Où" dans Opération permet de faire la sélection et le regroupement dans la même requête.

Quand à l'expression du besoin; les 3 requêtes répondent à ces besoins.

Mais une 4ème serait la bienvenue :
Elle consisterait à
- avoir par article (même pour ceux pour lequel il n'y a aucune commande)
==> lecture primaire de la table "articles"
- la quantité réceptionnée dans une colonne
- la quantité livrée dans une autre colonne

Dans les boites de dialogues demandes la saisie des dates, comment initialiser ces dates avec dans la date de début la date de la veille à 8h00
et dans la date de fin la date du jour à 8:00
?
merci beaucoup.
 

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Re
alb05 à dit:
L'utilisation du "Où" dans Opération permet de faire la sélection et le regroupement dans la même requête.
le Où permet de préciser qu'un critère n'est qu'un critère et ne doit pas intervenir dans le regroupement.

Mais une 4ème serait la bienvenue :
Elle consisterait à
- avoir par article (même pour ceux pour lequel il n'y a aucune commande)
==> lecture primaire de la table "articles"
- la quantité réceptionnée dans une colonne
- la quantité livrée dans une autre colonne
Il suffit dans le requête Analyse que j'ai envoyée d'enlever les 2 critères "<>0"

Dans les boites de dialogues demandes la saisie des dates, comment initialiser ces dates avec dans la date de début la date de la veille à 8h00
et dans la date de fin la date du jour à 8:00
Dans ce cas plutôt qu'un requête paramétrée mettre en critère
Entre Date()-1+(8/24) Et Date()+(8/24)
 

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

POINT 1
Citation :
"Dans ce cas plutôt qu'un requête paramétrée mettre en critère
Entre Date()-1+(8/24) Et Date()+(8/24) "

sauf que ce sont des valeurs que je veux pouvoir modifier dans la boite de dialogue. L'initialisation est aide pour bon nombre de cas mais n'est pas la règle absolue.
Alors comment combiner ces 2 besoins ?


POINT 2
Même en ôtant les <>0, seuls les articles ayants une ligne de commande apparaissent.
Ce que je souhaiterait c'est que tous les articles soient affichés (même avec des valeurs 0 dans les 2 colonnes).

merci
 

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Re
1
Je regrette, tu as du mal modifier ou recopier ma requête Analyse : la preuve si je rentre une date où il n'y a ni livraison ni commande j'obtiens bien tous les articles (voir image)

2
Taper une date+heure dans la boîte de dialogue 01/01/2009 8:00
ou bien si c'est toujours 8:00 mettre en paramètre
Entre [Date1]+(8/24) Et [date2]+(8/24) et définir le type (date/heure) des paramètres Date1 et Date2 dans le menu Requête, Paramètres...

Si l'écart est toujours une journée tu peux combiner les 2 solutions
 

Pièces jointes

  • Analyse.jpg
    Analyse.jpg
    25.9 KB · Affichages: 158

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

Point 1 : Exact, j'ai mal vu. Mea culpa.

Point 2 :
Je veux une requête paramétrée dont les paramètres dates et heures ont une valeur pré renseignée (en dur par la requête) mais modifiable dans la boite de dialogue.
La valeur 'en dur' doit être égale à DATE1 = J-1 8:00:00 et DATE2 = J 8:00:00
 

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Re

Dans les boîtes de dialogue de requêtes paramétrées on ne peut rien faire.
Soit il faut prévoir dans la requête mais c'est pas si simple (utiliser une formule vraifaux).

Si cela doit être utilisé par d'autres personnes que toi, la requête paramétrée n'est pas l'idéal surtout avec des valeurs date+heure.

Le mieux est de construire un formulaire avec les champs date début et date fin ayant des valeurs par défaut et donc modifiables et d'utiliser les valeurs du formulaire pour la requête.
 

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

Bonjour
dans la requête "Reçue & Livrée" construite à partir de 2 autres requêtes ;
comment créer un champ qui calcul la différence entre les 2 champs "Qté Commandée" et "Qté Livrée" ?

merci
 

Pièces jointes

  • stock3.zip
    17.1 KB · Affichages: 74
  • stock3.zip
    17.1 KB · Affichages: 75
  • stock3.zip
    17.1 KB · Affichages: 74

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Bonjour

Ajouter une colonne avec en ligne 1
Ecart: [Qté_Commandée]-[Qté_Livrée]

Attention dans la base que tu as envoyée il y a une date en dur dans la requête quantité commandée et des paramètres dans l'autre. Du coup la 3ème ne marche pas.
 

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

Ajouter une colonne avec en ligne 1
Ecart: [Qté_Commandée]-[Qté_Livrée]

=> Fait mais le calcul ne fonctionne pas bien.
Dans la période (4/9/2009 au 5/9/2009 18:00) pour client "01", la commande C08 a été livrée, elle n'apparait pas en négatif ?


Comment sur le champ monter un filtre basé sur la table CATEGORIES mais aussi avoir la possibilité du "*" pour dire toutes les catégories ?

merci
 

Pièces jointes

  • stock4.zip
    39.8 KB · Affichages: 80
  • stock4.zip
    39.8 KB · Affichages: 79
  • stock4.zip
    39.8 KB · Affichages: 79

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Bonjour

alb05 à dit:
dans la requête "Reçue & Livrée" construite à partir de 2 autres requêtes ;
comment créer un champ qui calcul la différence entre les 2 champs "Qté Commandée" et "Qté Livrée" ?
merci

alb05 à dit:
Ajouter une colonne avec en ligne 1
Ecart: [Qté_Commandée]-[Qté_Livrée]

=> Fait mais le calcul ne fonctionne pas bien.
Dans la période (4/9/2009 au 5/9/2009 18:00) pour client "01", la commande C08 a été livrée, elle n'apparait pas en négatif ?

Tu demandes la différence entre quantité livrée et quantité commandée.
Ce client commande 4 produits C01 et 8 P04. Tout est livré dont l'écart est de 0.
Je ne comprends pas ce qui devrait être en négatif.

alb05 à dit:
Comment sur le champ monter un filtre basé sur la table CATEGORIES mais aussi avoir la possibilité du "*" pour dire toutes les catégories ?
merci
S'il y a une liste déroulante des catégories dans le champ on peut décider que s'il est vide (aucune catégorie choisie) on veut tout.
Dans la requête mettre en critère :
Comme ([Formulaires]![SAISIE PARAMETRES]![CAT] & "*")

Sinon voir soit la multisélection, soit une liste contenant * et un test sur cette valeur pour le critère vraifaux([Formulaires]![SAISIE PARAMETRES]![CAT]="*";Comme ([Formulaires]![SAISIE PARAMETRES]![CAT] & "*");[Formulaires]![SAISIE PARAMETRES]![CAT])
 
Dernière édition:

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

NB: comment tu fais pour faire CITATION dans le forum ?

Ta citation :
"Tu demandes la différence entre quantité livrée et quantité commandée.
Ce client commande 4 produits C01 et 8 P04. Tout est livré dont l'écart est de 0.
Je ne comprends pas ce qui devrait être en négatif."

Ma Réponse
L'idée est d'avoir le stock logique des commandes reçues dans la période (début/fin) et des expéd de la même période.
Ainsi je peux comparer quelle activité (reception ou expédition) est la plus sollicitée sur cette période.
Actuellement c'est le stock qui est calculé, semble t'il sans prendre en compte les dates. Information utile également.
En synthèse j'ai besoin des 2.

Autre chose : JE ne trouve pas dans la requete 'Qte_commandée' l'endroit où est demandé Date1 et Date2 ?
 

Pièces jointes

  • stock4.zip
    47.7 KB · Affichages: 72
  • stock4.zip
    47.7 KB · Affichages: 74
  • stock4.zip
    47.7 KB · Affichages: 69

chris

XLDnaute Barbatruc
Re : Requête de regroupement

Bonjour

Dans mon post de 06/09/2009, 15h28 je mettais en évidence la nécessité de préciser ce que l'on veut exactement calculer.

Ici le calcul retenu donne un solde entre commende et expédition d'articles qui ne correspond pas à grand chose en gestion sauf si on raisonne client par client comme tu semble le faire au niveau du formulaire.

Cela ne représente pas le stock car un calcul stock tient compte des réceptions fournisseurs et des livraisons clients.

Je comprends que le calcul actuel n'est pas ce que tu veux mais je ne comprends pas ce que tu veux : il faudrait détailler.

Pour date1 et date2 voir mon post du 06/09/2009 17h14 : c'est dans le menu Requête, Paramètres.
 

alb05

XLDnaute Occasionnel
Re : Requête de regroupement

ce que je cherche avec les date de début et date de fin, c'est de prendre en compte les réception OU livraison de cette période
exemple : dans cette période
1) une réception dans cette période sans livraison
2) une réception dans cette période avec livraison hors période
3) une livraison dans cette période avec une réception hors période

A partir de ça, quelle requête simple pour lister les COMMANDES qui dont les dates correspondent à ce critère de "OU"
SELECT * FROM COMMANDES
WHERE
CDE-DATE-RECEP >= DDEB AND CDE-DATE-RECEP < DFIN
OR
CDE-DATE-EXPED >= DDEB AND CDE-DATE-EXPED < DFIN

Ci joint la base stock4 avec cette requete "LISTE DES COMMANDES" car je n'arrive pas à faire le "OU" pour les dates RECEP OU EXPED.
Le test à faire :
Début : 01/01/2000 00:00:00
Fin : 01/01/2010 00:00:00
Retour : Les 8 commandes et leur détail est affiché

merci de ton aide.
 

Pièces jointes

  • stock4.zip
    40.9 KB · Affichages: 93
  • stock4.zip
    40.9 KB · Affichages: 87
  • stock4.zip
    40.9 KB · Affichages: 90

Discussions similaires

Réponses
21
Affichages
949
Réponses
13
Affichages
693

Statistiques des forums

Discussions
312 336
Messages
2 087 389
Membres
103 534
dernier inscrit
Kalamymustapha