Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
J'aimerais effectuer un mapping au niveau de ma "Désignation article"
Ci-dessous un script de mapping pour supprimer les accents d’une chaîne de caractère qui est donc la « Désignation article »
Aussi, j’aimerais que lorsque la « Désignation article » importée comporte MINI BEIGNETS 5X35 FOURRES PAS, et bien que cela soit modifié en MINI BEIGNETS FRAMBOISE
Mon script fonctionne bien pour la modification des accents mais pas pour cette modification ci-dessus.
Pourriez-vous m'aider, ai-je fait une erreur dans le script ?
Merci à vous !
// Table de mapping ==> Suppression des accents
//*********************************************
MapSupprimeAccent:
Mapping LOAD * INLINE [
From, To
MINI BEIGNETS 5X35 FOURRES PAS, MINI BEIGNETS FRAMBOISE
à, a
á, a
â, a
ã, a
é, e
ê, e
í, i
ó, o
ô, o
õ, o
ú, u
À, A
Á, A
Â, A
Ã, A
É, E
Ê, E
Í, I
Ó, O
Ô, O
Õ, O
Ú, U
ç, c
Ç, c
];
NoConcatenate
DataSage:
LOAD
'SAGE_'&RowNo() as No_Facture_Sage,
F1,
F2,
[code du client final],
[libéllé client final],
[Code commercial],
[Nom commercial],
TEXT([Ref article]) as [Ref article],
MapSubString('MapSupprimeAccent',upper(rtrim(left([Désignation article],30)))) as [Désignation article],
[Nb de cartons facturés],
…
Bonjour @steph24350
à mon avis ya aucun problème dans le script sauf qu'il faut faire attention à la limite 30 dans left([Désignation article],30)
30 c'est exactement la taille de MINI BEIGNETS 5X35 FOURRES PAS
donc upper(rtrim(left('MINI BEIGNETS 5X35 FOURRES PAS dsjhflkdjfh sflkdfh d',30))) retournera MINI BEIGNETS 5X35 FOURRES PAS et avec MapSubString le résultat est MINI BEIGNETS FRAMBOISE MapSubString joue le role de remplacer puisque il ya pas de texte ni avant ni après (limite de 30)
voilà un exemple :
cas avec 30
Map1:
mapping load * inline [
From, To
MINI BEIGNETS 5X35 FOURRES PAS,MINI BEIGNETS FRAMBOISE
à, a
];
Data:
load *,MapSubString('Map1',upper(rtrim(left([Désignation article],30)))) as [NewDésignation article] inline [
Désignation article
MINI BEIGNETS 5X35 FOURRES PAS dsjhflkdjfh sflkdfh
dskjfmds à
]
output:
le reste de texte : dsjhflkdjfh sflkdfh est invisible à cause de la limite 30
cas2: limite 40 ou sans limite :
Map1:
mapping load * inline [
From, To
MINI BEIGNETS 5X35 FOURRES PAS,MINI BEIGNETS FRAMBOISE
à, a
];
Data:
load *,MapSubString('Map1',upper(rtrim(left([Désignation article],40)))) as [NewDésignation article] inline [
Désignation article
MINI BEIGNETS 5X35 FOURRES PAS dsjhflkdjfh sflkdfh
dskjfmds à
]
output:
on a bien le reste du texte
Bonjour
plutot que de faire un mapping pour une seule occurrence à remplacer , je te propose d'utiliser la fonction REPLACE()
soit ici ( çà çà marche )
MapSubString('MapSupprimeAccent',upper(rtrim(left(replace([Désignation article],' MINI BEIGNETS 5X35 FOURRES PAS','MINI BEIGNETS FRAMBOISE')30)))) as [Désignation article],
sinon dans la table d'origine :
load
...
replace([Désignation article],' MINI BEIGNETS 5X35 FOURRES PAS','MINI BEIGNETS FRAMBOISE') as [Désignation article],
...
from ...
Merci pour les réponses !
Concernant le REPLACE
Si j'ai plusieurs remplacements à effectuer, puis-je toujours me servir du REPLACE ? Et si oui comment faire ?
Merci à vous
Bien cordialement,
Bonjour
oui il est possible de faire plusieurs remplacement à la volée ..
Il faut imbriquer la fonction replace comme ceci
replace(replace([MADIMENSION],'ValeurA','ValeurA1'),'ValeurB',ValeurB1')) et ainsi de suite