Bonjour à tous !
Sous Access 2007, je découvre les requêtes d'analyse croisée qui peuvent m'être bien utiles. Pas de problème pour les créer, cela fonctionne bien MAIS je bute au moment d'ajouter un critère (champ dans un formulaire) afin de filtrer mes résultats.
Ce que je ne comprend pas c'est que ma requête "Sélection" fonctionne très bien avec ce critère : [Formulaires]![F_menu_HA_affaire]![ID_Affaire]
Lorsque je la transforme en requête d'analyse croisée, Access me renvoie le message d'erreur :
"Le moteur de la base de données micro. Access ne reconnaît pas "[Formulaires]![F_menu_HA_affaire]![ID_Affaire]" en tant que nom de champ ou expression correcte"
Avez vous une piste pour expliquer l'apparition de ce message d'erreur ? Sait on jamais je vais poster le SQL de ces 2 requêtes ci dessous :
Requête sélection qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT T_ouvrages_ensembles.[Repère ens ADM], T_ouvrages_ensembles.[Désignation ensemble], T_ouvrages.[Code ouvrage ADM], T_ouvrages.Ouvrage, Sum([Quantité commandée]*[Prix unitaire]) AS Montant_HT, [T_fam achats].[Familles achats], [T_fam achats niv1].[Sous famille N1] INTO test_reporting FROM [T_fam achats niv1] RIGHT JOIN ([T_fam achats] RIGHT JOIN (T_articles RIGHT JOIN (T_ouvrages_ensembles INNER JOIN ((T_Affaires INNER JOIN T_ouvrages ON T_Affaires.ID_Affaire = T_ouvrages.[Désignation affaire]) INNER JOIN T_commande_lignes ON T_ouvrages.ID_ouvrage = T_commande_lignes.ID_ouvrage) ON (T_ouvrages_ensembles.ID_ensemble = T_ouvrages.ID_ensemble) AND (T_ouvrages_ensembles.ID_ensemble = T_commande_lignes.ID_ensemble) AND (T_ouvrages_ensembles.ID_Affaire = T_Affaires.ID_Affaire)) ON T_articles.IDArticle = T_commande_lignes.IDArticle) ON [T_fam achats].[ID fam HA] = T_articles.[ID fam HA]) ON [T_fam achats niv1].[ID Ss fam N1] = T_articles.[ID Ss fam N1] GROUP BY T_ouvrages_ensembles.[Repère ens ADM], T_ouvrages_ensembles.[Désignation ensemble], T_ouvrages.[Code ouvrage ADM], T_ouvrages.Ouvrage, [T_fam achats].[Familles achats], [T_fam achats niv1].[Sous famille N1], T_ouvrages_ensembles.ID_Affaire HAVING (((T_ouvrages_ensembles.ID_Affaire)=[Formulaires]![F_menu_HA_affaire]![ID_Affaire]));
Requête analyse croisée qui renvoie le message d'erreur :
Pour m'en sortir je vais essayer de suivre une piste lue dans un autre post :passer par une table intermédiaire (requête ajout sur une table puis analyse croisée) Mais je suis vraiment curieux de découvrir ce qui ne va pas ici ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TRANSFORM Sum([Quantité commandée]*[Prix unitaire]) AS Montant_HT SELECT T_ouvrages_ensembles.[Désignation ensemble], T_ouvrages.Ouvrage FROM [T_fam achats niv1] RIGHT JOIN ([T_fam achats] RIGHT JOIN (T_articles RIGHT JOIN (T_ouvrages_ensembles INNER JOIN ((T_Affaires INNER JOIN T_ouvrages ON T_Affaires.ID_Affaire = T_ouvrages.[Désignation affaire]) INNER JOIN T_commande_lignes ON T_ouvrages.ID_ouvrage = T_commande_lignes.ID_ouvrage) ON (T_ouvrages_ensembles.ID_ensemble = T_ouvrages.ID_ensemble) AND (T_ouvrages_ensembles.ID_Affaire = T_Affaires.ID_Affaire) AND (T_ouvrages_ensembles.ID_ensemble = T_commande_lignes.ID_ensemble)) ON T_articles.IDArticle = T_commande_lignes.IDArticle) ON [T_fam achats].[ID fam HA] = T_articles.[ID fam HA]) ON [T_fam achats niv1].[ID Ss fam N1] = T_articles.[ID Ss fam N1] WHERE (((T_ouvrages_ensembles.ID_Affaire)=[Formulaires]![F_menu_HA_affaire]![ID_Affaire])) GROUP BY T_ouvrages_ensembles.ID_Affaire, T_ouvrages_ensembles.[Repère ens ADM], T_ouvrages_ensembles.[Désignation ensemble], T_ouvrages.[Code ouvrage ADM], T_ouvrages.Ouvrage, [T_fam achats].[Familles achats] PIVOT [T_fam achats niv1].[Sous famille N1];
Merci pour vos lumières !!
Pierre
Partager