Re,
Compris pour le "goupillage" des requête entre elles.
Reste le cas possible ou tu aurais 2 ref produit ne différant que sur le dernièr caractère mais où ce caractère ne représente pas un chiffre. Il faudrait alors compliquer un peu pour analyser le dernier caractère.
Je ne comprend pas très bien ou tu veux en venir, peux-tu me donner des exemples pour que je puisse visualiser la problématique?
Je n'ai pas saisis pour TB ce que tu espères... Ou, peut-être, traiter les codes se terminant par TB et leur faire une racine sur le code moins les 3 derniers caractères ?
Oui c'est de cette manière qu'il faut procéder, par contre pourquoi moins les 3 derniers ? Moins les 2 derniers ("TB") suffit non ?
Edit : : vérification faite, Excel bloque sur la fonction NZ. Donc le dernière requête doit être
N.B.:Vous pouvez utiliser la fonction Nz pour renvoyer zéro, une chaîne nulle (" ") ou une autre valeur spécifiée lorsqu’une type de données Variant a la valeur Null. Vous pouvez, par exemple, utiliser cette fonction pour convertir une valeur Null en une autre valeur et l’empêcher de se propager dans une expression.
Je me trompe surement, mais comment se fait-il qu'Excel bloque cette fonction, sachant que le code SQL dont on parle est compilé par Access, non ?
A noter aussi que tu as des F1 sans F2. Donc pour une gestion vraiment saine il vaudrait mieux avoir la notion de face dans tes données sources car ce type de découpage est toujours un peu limite.
Dans le cas où l'on a qu'une face il faut procéder comme pour le cas "TB" supprimer le suffixe et préserver la racine comme "nouveau nom de produit" dans la requête de selection.
Pour info:
L'idée est de créer un TCD constitué de l'ensemble des ref_produits et de leurs compositions respectives. A la différence de MatricComposition, ici on ne veut pas tenir compte des faces. Autrement dit dans MatricComposition nous avions la composition des produits mais par face donc nous avions pour certains produits deux compositions pour le même produit (exemple: 423820F1 & 423820F2 /// au lieu de 423820). Idéalement et logiquement pour un traitement global par produit il faudrait n'avoir qu'une et même composition par produit en fusionnant les deux faces.
---------------------------------------------------------------------------------------------------------------------------------------
Recap:
Cette première requête est utilisé pour traiter une première fois les ref_produits :
SELECT DISTINCT Communs.Ref_Produit, Left([communs]![ref_produit],Len([communs]![ref_produit])-1) AS Racine0 FROM Communs;
Le second traitement est effectué par celle-ci:
SELECT DISTINCTROW Couples0.Ref_Produit, Couples0.Racine0 FROM Couples0 INNER JOIN Couples0 AS CommunsRacine2_1 ON Couples0.Racine0 = CommunsRacine2_1.Racine0 HERE (((Couples0.Ref_Produit)<>[CommunsRacine2_1]![ref_produit]));
Et pour terminer, cette dernière requête synthétise les deux précédentes, pour faciliter un traitement aval avec un TCD sous Excel:
1 2
| SELECT Communs.*, IIf([Couples]![Racine0] Is Null,[Communs]![REf_produit],[Couples]![Racine0]) AS Racine
FROM Communs LEFT JOIN Couples ON Communs.Ref_Produit = Couples.Ref_Produit; |
Tu confirmes ?
Partager