HAHA, je vais être honnête..
Je dois avouer que non, je n'ai pas eu une minute à moi. Mais je test tout de suite et je te dis
Petit problème d’exécution pour la deuxième requête, je pensais que le problème était dans le nom de la première requête(vu qu'elle lui fait appel???).
Pourtant j'ai bien créé et enregistré comme il le faut la première requête, enfin je suppose.
Bonjour 78chris,
J'essaye de debugger la requête mais j'ai du mal
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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]));
Si j'ai à un peu près compris:
On sélectionne Ref_Produit dans la table Couples0 créée précédemment puis Racine0 dans cette même table, on fait donc le lien avec Couples0. On renomme ensuite Racine0 de la table Couples0 en CommunsRacine2_1.
Jusqu'ici ça va.
Ensuite l'autre partie de la requête me donne plus de mal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Couples0.Racine0 = CommunsRacine2_1.Racine0 HERE (((Couples0.Ref_Produit)<>[CommunsRacine2_1]![ref_produit]));
Bonjour
Il manque le W de WHERE qui a sauté lors de ma copie. Par ailleurs l'alias est mal choisi (résidu de mes divers tests)
Pour la dernière il faut ajouter DISTINCT
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCTROW Couples0.Ref_Produit, Couples0.Racine0 FROM Couples0 INNER JOIN Couples0 AS Couples0_1 ON Couples0.Racine0 = Couples0_1.Racine0 WHERE (((Couples0.Ref_Produit)<>[Couples0_1]![ref_produit]));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DISTINCT Communs.*, IIf(Right([Communs]![ref_produit],2)="TB",Left([Communs]![Ref_produit],Len([Communs]![ref_produit])-2),IIf([Couples]![Racine0] Is Null,[Communs]![Ref_produit],[Couples]![Racine0])) AS Racine FROM Communs LEFT JOIN Couples ON Communs.Ref_Produit = Couples.Ref_Produit;
Juste pour être sur, la première requête se nomme "Couples0" et la deuxième "Couples" ?
ça à l'air correcte, je vais tester. mais il ya un truc que je trouve bizarre..
Ici pour ce produit c'est le cas à peu près partout, pourquoi il y a encore le "F" dans la colonne de droite (Racine) ?
Là on perd carrément l'indice du produit,
Alors qu'initialement il n'est pas considéré comme un produit du type "double faces" (F1/F2, B1/B2, D1/D2, E1/E2..)
Re
Le principe était d'assimiler les éléments ayant plusieurs faces (cf. #27) d'où ma notion de couples pas de tronquer tous les caractères de fin de chaîne.
J'ai d'ailleurs signalé (cf. #33) qu'on trouvait des F1 sans F2...
Re
J'ai mal saisi ta remarque. C'est le contraire. On en revient à ce que j'ai évoqué au #33, il faut analyser les 2 derniers caractères : le dernier doit être un chiffre et l'avant dernier une lettre.
Cela complique ainsi la 1ère requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT Communs.Ref_Produit, Left([communs]![ref_produit],Len([communs]![ref_produit])-2) AS Racine0 FROM Communs WHERE (((Asc(Right([ref_produit],1)))>=48 And (Asc(Right([ref_produit],1)))<=57) AND ((Asc(Mid([ref_produit],Len([ref_produit])-1,1))>=48 And Asc(Mid([ref_produit],Len([ref_produit])-1,1))<=57)=False));
Re,
Je suis désolé, je me suis surement mal expliqué.
En fait dans cette base on peut classer en trois grandes famille les différents produits:
- Ceux qui ont cette fameuse notion de "double faces" (F1/F2, B1/B2, D1/D2, E1/E2..)
- Les autres qui n'ont pas de "double faces", ont cependant un indice. Sur ces produits on ne fait rien car on a pas besoin de les fusionner vu qu'ils ont qu'une face.
- Puis les produits qui finissent par "TB", ici il suffit juste de supprimer "TB" (ils ont une double faces, mais c'est la même donc il n'y a rien a faire...)
Pour ceux qui n'ont qu'une face il faut agir comme avec "TB" supprimer la notion de face... En réalité ils ont une autre face mais qui intervient plus loin dans le procédé de fabrication donc on peut considérer qu'ils ont qu'une face.
N'hésite pas à me demander plus de détails.
Oui il faut analyser les deux derniers caractères, si le produit est de la forme "xxxxxF1/2"
Je vais tester
Re
Je t'ai donné la solution pour ne pas tronquer par contre, je vais en rester là. J'ai passer beaucoup (trop) de temps sur ce problème.
L'association des couples est faite, la terminaison TB est supprimée. Pour le reste les règles sont trop floues il me semble pour savoir quoi enlever.
J'avais déjà signalé le cas des F1 sans F2 mais tu n'avais pas répondu sur ce point.
Bidouiller des chaînes qui ne semblent pas voir de structure logique est assez aléatoire et on peut y passer beaucoup de temps pour un résultat non optimum...
Oui je confirme, le nom des produits n'est pas standardisé et ça pose beaucoup de problèmes.
Je suis très reconnaissant que tu m'es accordé autant de temps et je t'en remercie..
Malheureusement je ne peux procédé que comme ça en "bidouillant", du coup je vais essayer de manipuler tes requête en travaillant au corps les chaînes de caractères, encore merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager