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 : Sélectionner tout - Visualiser dans une fenêtre à part
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