Rebonsoir,
Oui vos explications sont bien détaillées mise à part le point concernant le numéro de pièce :
VT000001
est-ce que le denier caractère du code de la pièce correspond au groupe ou pas ?
Sinon, je pense que vous pouvez vous en sortir avec des requêtes :
Voilà comment je ferais :
Une requête "R_GrandLivre X ListeExclusion" qui réalise le produit cartésien entre le grand livre et la liste des exclusions :
1 2 3 4
| SELECT T_GrandLivre.[Numéro Pièce], T_ListeExclusion.Groupe_Compte, T_GrandLivre.Compte, T_ListeExclusion.Compte AS CompteExclusion, ([T_GrandLivre].[Compte] Like [T_ListeExclusion].[Compte] & "*") AS Exclu
FROM T_GrandLivre, T_ListeExclusion
WHERE (((T_GrandLivre.[Numéro Pièce]) Like "*" & [Groupe_Compte]))
ORDER BY T_GrandLivre.[Numéro Pièce], T_ListeExclusion.Groupe_Compte, T_GrandLivre.Compte, T_ListeExclusion.Compte; |
Le champ :
([T_GrandLivre].[Compte] Like [T_ListeExclusion].[Compte] & "*") AS Exclu
Renvoie vrai si le compte est exclu.
Une requête regroupement R_PiecesCpteExclus, basée sur la 1ère qui compte les exclusions par groupe pour un numéro de pièce :
1 2 3 4
| SELECT R_GrandLivreListeExclusion.[Numéro Pièce], R_GrandLivreListeExclusion.Groupe_Compte, -Sum([Exclu]) AS CpteExclus
FROM R_GrandLivreListeExclusion
GROUP BY R_GrandLivreListeExclusion.[Numéro Pièce], R_GrandLivreListeExclusion.Groupe_Compte
HAVING (((-Sum([Exclu]))>0)); |
Une requête R_PiecesCpteExclu, pour compter les comptes par Numéro de pièce :
1 2 3
| SELECT T_GrandLivre.[Numéro Pièce], Count(T_GrandLivre.Compte) AS CpteComptes
FROM T_GrandLivre
GROUP BY T_GrandLivre.[Numéro Pièce]; |
Ensuite, il suffit de comparer les décomptes des 2 dernières requêtes en les liant sur le numéro de pièce, si les décomptes sont égaux on exclu...
Cdlt,
Partager