Bonsoir,
SELECT
NOM,
PRENOM,
CLE_FICHE,
PREFIXE
FROM
INDIVIDU
WHERE
KLE_DOSSIER=(select DLL_DOSSIER from GESTION_DLL) --=dossier si execution dans BOA
and PREFIXE is not null
ORDER BY
NOM,PRENOM
fonctionne aussi bien tout en étant bien plus simple.
Lorsqu'une seule table est interrogée dans une requête, il n'y a pas ambiguïté, les champs nommés appartiennent obligatoirement à la table. Il est donc inutile d'en préfixer le nom par le nom de la table ou un nom d'alias.
GROUP BY
INDIVIDU.NOM,
INDIVIDU.PRENOM,
INDIVIDU.CLE_FICHE,
INDIVIDU.PREFIXE
Dans ce groupe CLE_FICHE étant unique (chaque individu a une CLE_FICHE différente), count(INDIVIDU.PREFIXE) ne peut être que NULL (le champ est NULL) ou valoir 1. Si votre requête fonctionne, c'est parce que dans la clause
HAVING
(COUNT(INDIVIDU.NOM) = COUNT(INDIVIDU.PREFIXE))
COUNT(INDIVIDU.NOM) a aussi toujours la valeur 1. Cette clause est donc équivalente à un WHERE PREFIXE is not null sur la table.
Lors de l'ouverture du BOA, le numéro du dossier en cours est inscrit dans la table GESTION_DLL. Le lire dans la requête en cours permet de ne pas avoir besoin de le saisir.
André