Problème requête Access
Résolu
KantinT
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
KantinT Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
KantinT Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une base de donnée (avec plein de tables, requêtes et formulaire) qui fonctionne bien, elle sert a gérer le nombre de défauts.
Je veux rajouter une requêet permettant de faire le calcul du taux= nbr de défauts*1000000/production sur un mois.
Je fais donc une somme sur les quantité pour toutes les entrées du mois et pareil pour la production. Je créé ensuite le champ Taux : [SommeDeQuantité ajustée]*1000000/[SommeDeProduction]
Je vous met le SQL de la reuête en entier si ça peu vous permettre de m'aider.
Je vois pas du tout où j'ai fait une erreur. Mon problème est que quand j'exécute la requête Access ouvre une fenêtre de messagerie pour que je renseigne SommeDeQuantité ajustée et SommeDeProduction; mais si je met n'importe quoi j'ai quand même les bon résultat dans ma requête.
SELECT [Enregistrements Requête].Année, [Lignes de montage].Appareil, Composants.Composant, Détails.Détails, Sum([Enregistrements Requête].[Quantité ajustée]) AS [SommeDeQuantité ajustée], Sum([Production hebdomadaire].Production) AS SommeDeProduction, [SommeDeQuantité ajustée]*1000000/[SommeDeProduction] AS Taux
FROM [Production hebdomadaire] INNER JOIN ([Lignes de montage] INNER JOIN (Détails INNER JOIN (Composants INNER JOIN [Enregistrements Requête] ON Composants.[Code Composant]=[Enregistrements Requête].[Code composant]) ON Détails.[Code détails]=[Enregistrements Requête].[Code détails]) ON [Lignes de montage].[Code ligne]=[Enregistrements Requête].[Code ligne]) ON ([Production hebdomadaire].Appareil=[Lignes de montage].Appareil) AND ([Production hebdomadaire].Semaine=[Enregistrements Requête].Semaine) AND ([Production hebdomadaire].Année=[Enregistrements Requête].Année)
WHERE ((([Enregistrements Requête].Semaine) Between DatePart("WW",DateSerial(Year(Date()),Month(Date())-1,1),2,2) And DatePart("WW",DateSerial(Year(Date()),Month(Date()),1)-1,2,2)))
GROUP BY [Enregistrements Requête].Année, [Lignes de montage].Appareil, Composants.Composant, Détails.Détails
HAVING ((([Enregistrements Requête].Année)=Year(Date())-1))
ORDER BY [SommeDeQuantité ajustée]*1000000/[SommeDeProduction] DESC;
Si vous pouvez m'aider, merci beaucoup.
Kantin.
J'ai une base de donnée (avec plein de tables, requêtes et formulaire) qui fonctionne bien, elle sert a gérer le nombre de défauts.
Je veux rajouter une requêet permettant de faire le calcul du taux= nbr de défauts*1000000/production sur un mois.
Je fais donc une somme sur les quantité pour toutes les entrées du mois et pareil pour la production. Je créé ensuite le champ Taux : [SommeDeQuantité ajustée]*1000000/[SommeDeProduction]
Je vous met le SQL de la reuête en entier si ça peu vous permettre de m'aider.
Je vois pas du tout où j'ai fait une erreur. Mon problème est que quand j'exécute la requête Access ouvre une fenêtre de messagerie pour que je renseigne SommeDeQuantité ajustée et SommeDeProduction; mais si je met n'importe quoi j'ai quand même les bon résultat dans ma requête.
SELECT [Enregistrements Requête].Année, [Lignes de montage].Appareil, Composants.Composant, Détails.Détails, Sum([Enregistrements Requête].[Quantité ajustée]) AS [SommeDeQuantité ajustée], Sum([Production hebdomadaire].Production) AS SommeDeProduction, [SommeDeQuantité ajustée]*1000000/[SommeDeProduction] AS Taux
FROM [Production hebdomadaire] INNER JOIN ([Lignes de montage] INNER JOIN (Détails INNER JOIN (Composants INNER JOIN [Enregistrements Requête] ON Composants.[Code Composant]=[Enregistrements Requête].[Code composant]) ON Détails.[Code détails]=[Enregistrements Requête].[Code détails]) ON [Lignes de montage].[Code ligne]=[Enregistrements Requête].[Code ligne]) ON ([Production hebdomadaire].Appareil=[Lignes de montage].Appareil) AND ([Production hebdomadaire].Semaine=[Enregistrements Requête].Semaine) AND ([Production hebdomadaire].Année=[Enregistrements Requête].Année)
WHERE ((([Enregistrements Requête].Semaine) Between DatePart("WW",DateSerial(Year(Date()),Month(Date())-1,1),2,2) And DatePart("WW",DateSerial(Year(Date()),Month(Date()),1)-1,2,2)))
GROUP BY [Enregistrements Requête].Année, [Lignes de montage].Appareil, Composants.Composant, Détails.Détails
HAVING ((([Enregistrements Requête].Année)=Year(Date())-1))
ORDER BY [SommeDeQuantité ajustée]*1000000/[SommeDeProduction] DESC;
Si vous pouvez m'aider, merci beaucoup.
Kantin.
A voir également:
- Problème requête Access
- Acer quick access - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Exemple base de données Access de gestion ✓ - Forum Logiciels
- Requête sql pix - Forum Python
2 réponses
Bonjour
Tu ne peux pas faire un calcul avec cette formule.
Il te faut creer 3 colonnes que tu nomes.
Exemple:
TotalQteAjus: Somme([Quantité ajustée])
TotalProd: Somme([Production])
Taux: [TotalQteAjus]*1000000/[TotalProd]
Tu peux aussi essayer d'utiliser la syntaxe ci dessous dans ta formule.
Taux : Somme([Quantité ajustée]*1000000)/Somme([Production])
Donne moi réponse si cela fonctionne
Tu ne peux pas faire un calcul avec cette formule.
Il te faut creer 3 colonnes que tu nomes.
Exemple:
TotalQteAjus: Somme([Quantité ajustée])
TotalProd: Somme([Production])
Taux: [TotalQteAjus]*1000000/[TotalProd]
Tu peux aussi essayer d'utiliser la syntaxe ci dessous dans ta formule.
Taux : Somme([Quantité ajustée]*1000000)/Somme([Production])
Donne moi réponse si cela fonctionne
J'ai fait comme tu dis et en fait j'ai trouvé que le problème vient du ORDER BY...
Si j'enlève le tri il n'y a pas de problème et la requête se lance sans me mettre de message.
Mais j'ai vraiment besoin de trier sur le taux.
Saurais tu quel peut êter le problème dans ce cas là et comment je pourrais le régler?
Merci et tout cas de m'avoir aider.
Kantin.
un tri ne peut pas se faire sur un champ que tu calcules à la volée.
Il te faut donc mettre une colonne dans laquelle tu fais ce calcul et ensuite, faire le tri sur cette colonne...
Pasque j'ai essayé de mettre ORDER BY [Taux] DESC;
Met à ce moment là il me demande de renseigner Taux quand j'exécute.
Merci d'avance