VBA, Requête SQL, Group By
Bonjour,
Là j'ai atteint ma limite .........
Je construis, sur la base de différents critères (liste de choix) d'un formulaire , une requète SQL qui s'exécute avec :
Code:
1 2 3
| CurrentDb.CreateQueryDef stDocQueryName, stDocQuery
Set qry = CurrentDb.QueryDefs(stDocQueryName)
DoCmd.OpenQuery stDocQueryName, , acReadOnly |
Un des critère de choix est la structure hiérarchique de l'entreprise :
ABC
ABC-DRE
ABC-DRE-ER-GZU-V
ABC-DRE-ER-RT
ABC-DRE-ER-TE
ABC-DRE-KLT-VH
DER-UZT-PT-ERT
DER-UZT-WED-VBZ
Lorsque je choisi "ABC-DRE" (Formulaire, liste déroulante), la réponse devrait être :
ABC-DRE -> ce qui est égal à ABC-DRE
ABC-DRE-ER -> ce qui est égal à ABC-DRE-ER*
ABC-DRE-KLT -> ce qui est égal à ABC-DRE-KLT*
soit le niveau choisi plus 1 niveau
Ceci est réalisé en adaptant le champ [StrucHyerar] dans Select(IIF(.....) suivi d'un Group By [StrucHyerar]
ABC-DRE -> ABC-DRE
ABC-DRE-ER-GZU-V -> ABC-DRE-ER*
ABC-DRE-ER-RT -> ABC-DRE-ER*
ABC-DRE-ER-TE -> ABC-DRE-ER*
ABC-DRE-KLT-VH -> ABC-DRE-KLT*
Hélas, ce que j'obtiens est :
ABC-DRE
ABC-DRE-ER
ABC-DRE-ER
ABC-DRE-ER
ABC-DRE-KLT
Donc, j'en déduis que le Group By prends la valeur originale du champ, et non pas la nouvelle valeur définie par le IIF.... !!!!!
Comment peux-on définir le Group By sur la nouvelle valeur ??
PS : A noter que le Champ [StrucHyerar] est renommé "AS [UNIT]"
Merci d'avance
Mitch