Bonsoir,
J'ai beau chercher, je ne trouve pas de réponse à ma question donc je fini par poster ici !
En espérant qu'une autre personne n'ai pas déjà posté un message similaire, si c'est le cas je vous prie de m'en excuser...
Je poste ici en espérant être au bon endroit (le problème se situe au niveau VBA (pas d'erreur à la compilation) mais concerne une requête SQL)...
Tout d'abord j'ai essayé de faire une requête d'analyse croisée paramétrée, à la construction de celle-ci je suis tombé sur la fameuse erreur me disant gentiment que les paramètres ne peuvent pas être définis par des variables...
Je suis donc passé par ici (au passage c'est un très bel article, simple clair et efficace), n'ayant pas d'allergies j'ai préféré la solution via le VBA.
La requête via l'interface d'Access fonctionne sans soucis (en écrivant mon paramètre manuellement dans la fenêtre du mode création).
Version graphique :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 TRANSFORM Count(tblPrestation.id_prestation) AS CompteDeid_prestation SELECT tblTypeAnimal.nom_type, tblRace.nom_race, tblAnimal.nom_animal FROM tblTypeAnimal INNER JOIN ((tblRace INNER JOIN tblAnimal ON (tblRace.id_race=tblAnimal.id_race) AND (tblRace.id_type_animal=tblAnimal.id_type_animal)) INNER JOIN tblPrestation ON (tblAnimal.id_animal=tblPrestation.id_animal) AND (tblAnimal.id_race=tblPrestation.id_race) AND (tblAnimal.id_type_animal=tblPrestation.id_type_animal) AND (tblAnimal.id_client=tblPrestation.id_client)) ON tblTypeAnimal.id_type_animal=tblRace.id_type_animal WHERE ((tblPrestation.id_client)=1) GROUP BY tblTypeAnimal.nom_type, tblRace.nom_race, tblAnimal.nom_animal ORDER BY Year([date_prestation]) DESC PIVOT Year([date_prestation]);
Le résultat obtenu :
Mais une fois ajoutée dans du vba la syntaxe de la requête est comme mauvaise, voici le message :
J'ai modifié un peu le code du tuto pour simplifier les choses et surtout pour ne plus supprimer ma requête sans jamais pouvoir la recréer via VBA...
Donc au niveau de mon code j'en suis ici :
Pour le paramètre, je l'ai volontairement écrit en dur pour être sur que ça ne venait pas d'une erreur de syntaxe dans mon code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 CurrentDb.QueryDefs("qryFrequAnnuelleClient").SQL = _ "TRANSFORM Count(tblPrestation.id_prestation) AS Frequence" & _ "SELECT tblTypeAnimal.nom_type, tblRace.nom_race, tblAnimal.nom_animal" & _ "FROM tblTypeAnimal " & _ "INNER JOIN ((tblRace INNER JOIN tblAnimal " & _ "ON (tblRace.id_race = tblAnimal.id_race) " & _ "AND (tblRace.id_type_animal = tblAnimal.id_type_animal)) " & _ "INNER JOIN tblPrestation " & _ "ON (tblAnimal.id_animal = tblPrestation.id_animal) " & _ "AND (tblAnimal.id_race = tblPrestation.id_race) " & _ "AND (tblAnimal.id_type_animal = tblPrestation.id_type_animal) " & _ "AND (tblAnimal.id_client = tblPrestation.id_client)) " & _ "ON tblTypeAnimal.id_type_animal = tblRace.id_type_animal" & _ "WHERE (((tblPrestation.id_client) = 1))" & _ "GROUP BY tblTypeAnimal.nom_type, tblRace.nom_race, tblAnimal.nom_animal" & _ "ORDER BY Year([date_prestation]) DESC" & _ "PIVOT Year([date_prestation]);" DoCmd.OpenQuery "qryFrequAnnuelleClient"
Je sais où l'ajouter ce n'est pas le soucis mais je bute sur le pourquoi cette erreur apparait alors que la requête semble correcte (et surtout qu'il l'accepte via le menu de paramétrage de la requête)...
Merci par avance à ceux qui arriveront à voir où est mon erreur![]()
Partager