Problème requête Access

Résolu/Fermé
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 - Modifié par KantinT le 11/05/2011 à 14:18
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 - 17 mai 2011 à 17:38
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.

2 réponses

castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 14/05/2011 à 15:11
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
0
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
17 mai 2011 à 08:57
Salut castours.

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.
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
Modifié par blux le 17/05/2011 à 09:40
Salut,

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...
0
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
Modifié par KantinT le 17/05/2011 à 17:38
Comment je fais ça?

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
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
17 mai 2011 à 09:40
order by 7 ?
0
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
17 mai 2011 à 09:54
Du coup ça marche très bien si je fais une nouvelle requête qui reprend les données de celle avec les calculs mais ce n'est vraiment pas possible de faire le tri directement dans la première requête?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
17 mai 2011 à 09:52
bonjour
Est ce que ma solution fonctionne?
0
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
17 mai 2011 à 17:38
Oui oui.

Ta solution fonctionne mais j'avais un problème sur le tri.
Du coup comme Blux m'a dit que ce n'était pas possible de trier sur une colonne calculé j'ai créer une autre requête pour faire ce tri.

Merci beaucoup en tout cas pour ton aide
0