Question sur une nouvelle requête

Résolu/Fermé
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018 - Modifié le 19 août 2018 à 23:09
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018 - 10 sept. 2018 à 22:25
bonjour,
J'ai une question, car je viens de créer une nouvelle requête que j'ai appelée Produits vendus v2. J'ai copié le SQL d'une autre qui fonctionne très bien mais dans laquelle il y a un paramètre qui doit être changé … donc j'ai copie les SQL dans la nouvelle et j'ai fait les changements nécessaires, mais lorsque je veux voir le résultat, le rang ne se calcule plus.

Voici le SQL qui fonctionne :
SELECT [Produits vendus].Année
  , [Produits vendus].[No du Stand (COE)]
  , [Requête - Stand No].[Stand No]
  , [Données stands].[Nom du Stand]
  , [Données stands].Label
  , Avg([Q1 - Saison].[Points (Q1)]) AS [MoyenneDePoints (Q1)]
  , Avg([Q2 - Origine].[Points (Q2)]) AS [MoyenneDePoints (Q2)]
  , Avg([Q3 - Label].[Points (Q3)]) AS [MoyenneDePoints (Q3)]
  , Avg([Q4 - Frais].[Points (Q4)]) AS [MoyenneDePoints (Q4)]
  , Avg([Requête - Bonus Malus].BonusMalus) AS MoyenneDeBonusMalus
  , Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[BonusMalus]) AS TOTAL
  , Count([Produits vendus].[Nom du produit]) AS [CompteDeNom du produit]
  , DCount("*" ,"[Requête - Produits vendus]" ,"[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang
FROM (([Données stands] INNER JOIN (([Q1 - Saison] 
INNER JOIN Produits 
  ON [Q1 - Saison].[Réponse (Q1)] = Produits.[Saison]) 
INNER JOIN ([Q5 - Bonus/Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] 
INNER JOIN ([Q2 - Origine] 
INNER JOIN [Produits vendus] 
  ON [Q2 - Origine].[Réponse (Q2)] = [Produits vendus].[Origine du produit]) 
  ON [Q3 - Label].[Réponse (Q3)] = [Produits vendus].[Label du produit]) 
  ON [Q4 - Frais].[Réponse (Q4)] = [Produits vendus].[Conditionnement du produit]) 
  ON [Q5 - Bonus/Malus].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) 
  ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) 
  ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) 
INNER JOIN [Requête - Bonus Malus] 
  ON ([Produits vendus].[No du Stand (COE)] = [Requête - Bonus Malus].Stand) 
  AND ([Produits vendus].Année = [Requête - Bonus Malus].Annee)) 
INNER JOIN [Requête - Stand No] 
  ON ([Produits vendus].[No du Stand (COE)] = [Requête - Stand No].Stand) 
  AND ([Produits vendus].Année = [Requête - Stand No].Annee)
GROUP BY [Produits vendus].Année
  , [Produits vendus].[No du Stand (COE)]
  , [Requête - Stand No].[Stand No]
  , [Données stands].[Nom du Stand]
  , [Données stands].Label
ORDER BY [Produits vendus].Année
  , Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[BonusMalus]) DESC;


Mais pourquoi lorsque je désire changer le :
DCount("*","[Requête - Produits vendus]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang 

avec le nouveau nom de la requête (soit Produits vendus v2) ça me renvoie que des #erreur ?

EDIT : Ajout des balises de code

D'avance merci pour le support !
A voir également:

2 réponses

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
4 août 2018 à 10:21
bonjour,
"que des #erreur": pour tous les champs, ou uniquement pour rang?
que donne la nouvelle requête si tu ne modifies pas le calcul du rang?
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
6 août 2018 à 21:02
Bonjour,
Oui, les #erreur sont que pour le calcul du rang ...
Si je ne change rien dans la nouvelle requête, le calcul se fait bien ... mais c'est simplement que je voulais supprimer la requête "Requête - Produits vendus", car c'est l'ancienne version du calcul pour mon Bonus/Malus.
D'avance merci pour ton support
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
6 août 2018 à 21:11
tu expliques que tu as une erreur en changeant Dcount, et tu ne montres pas ce que tu as réellement changé.
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
7 août 2018 à 21:32
Dans le SQL qui est en haut : il y a :

DCount("*","[Requête - Produits vendus]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang

et j'ai changé par :

DCount("*","[Produits vendus v2]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang

autrement dans le SQL, je n'ai rien changé.

Produits vendus v2 étant le nom de la nouvelle requête dans laquelle j'aimerai avoir ce SQL qui fonctionne sans faire référence à Requête - Produits vendus.

D'avance merci pour ton aide
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
8 août 2018 à 09:34
cette requête fonctionne-t-elle sans donner d'erreur?
select [TOTAL], [Année] from [Produits vendus v2]
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
8 août 2018 à 18:57
oui j'ai un résultat sans erreur … voici le résultat
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
21 août 2018 à 19:54
voilà, je pense y être arrivé.
pour commencer, changer Requête - Bonus Malus, pour y avoir:
SELECT 2016 as Annee, [No du Stand (COE)] as Stand, BM2016 as BonusMalus 
FROM [Q5 - Bonus/Malus] 
UNION SELECT 2017 as Annee, [No du Stand (COE)] as Stand, BM2017 as BonusMalus 
FROM [Q5 - Bonus/Malus] 
UNION SELECT 2018 as Annee, [No du Stand (COE)] as Stand,
 iif(BM2018 is null,0, BM2018) as BonusMalus FROM [Q5 - Bonus/Malus];
cela va éviter des soucis causés par le fait que BM2018 n'est pas encore encodé. je pense que c'est ta seule vraie erreur. le reste des changements, c'est pour soulager Access, qui me semble avoir été dépassé par ce que tu lui demandes de faire (de la façon dont tu lui as demandé).
ensuite, faire une première nouvelle requête:
SELECT [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], 
[Requête - Stand No].[Stand No], 
[Données stands].[Nom du Stand], [Données stands].Label, 
Avg([Q1 - Saison].[Points (Q1)]) AS [MoyenneDePoints (Q1)], 
Avg([Q2 - Origine].[Points (Q2)]) AS [MoyenneDePoints (Q2)], 
Avg([Q3 - Label].[Points (Q3)]) AS [MoyenneDePoints (Q3)], 
Avg([Q4 - Frais].[Points (Q4)]) AS [MoyenneDePoints (Q4)], 
Avg([Requête - Bonus Malus].BonusMalus) AS MoyenneDeBonusMalus, 
Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[BonusMalus]) AS TOTAL, 
Count([Produits vendus].[Nom du produit]) AS [CompteDeNom du produit]
FROM (([Données stands] INNER JOIN (([Q1 - Saison] 
INNER JOIN Produits ON [Q1 - Saison].[Réponse (Q1)] = Produits.[Saison]) 
INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] 
INNER JOIN [Produits vendus] 
ON [Q2 - Origine].[Réponse (Q2)] = [Produits vendus].[Origine du produit]) 
ON [Q3 - Label].[Réponse (Q3)] = [Produits vendus].[Label du produit]) 
ON [Q4 - Frais].[Réponse (Q4)] = [Produits vendus].[Conditionnement du produit]) 
ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) 
ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) 
INNER JOIN [Requête - Bonus Malus] 
ON ([Produits vendus].[No du Stand (COE)] = [Requête - Bonus Malus].Stand) 
AND ([Produits vendus].Année = [Requête - Bonus Malus].Annee)) INNER JOIN [Requête - Stand No] 
ON ([Produits vendus].[No du Stand (COE)] = [Requête - Stand No].Stand) 
AND ([Produits vendus].Année = [Requête - Stand No].Annee)
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], 
[Requête - Stand No].[Stand No], [Données stands].[Nom du Stand], 
[Données stands].Label;

pour l'exemple, appelons-la y1
ensuite, faire une deuxième nouvelle requête:
SELECT *, DCount("*","y1","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang
FROM y1;
pour l'exemple, appelons-la y2
ensuite, la troisième requête, qui, je l'espère, donnera le résultat tant attendu:
SELECT *
FROM y2
ORDER BY Année, Rang;

cela donne quoi?
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
23 août 2018 à 21:33
C'est top, tu as solutionné mon problème !!!! MERCI beaucoup
J'ai ce que j'attends comme résultat. J'avais compliqué les choses sans le savoir.

Il faut que je fasse maintenant des états basés sur tes nouvelles requêtes ;-))
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
7 sept. 2018 à 13:01
peux-tu alors marquer le sujet comme résolu?
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
10 sept. 2018 à 22:25
oui merci beaucoup !
0