IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAGE Discussion :

Remplacer un bout de valeur par une autre


Sujet :

SAGE

  1. #1
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut Remplacer un bout de valeur par une autre
    Bonjour,
    J'utilise régulièrement les transactions systèmes pour modifier en masse la valeur d'un champ par un autre.
    La demande d'un service en interne cette fois est de modifié une partie du champs par une autre valeur.

    Disons par exemple la désignation d'un article qui contient le mot "plage" et on souhaite le remplacer par "mer" out en gardant ce qu'il y a devant et derrière.

    Par exemple :
    "large plage bleu" deviendrait "large mer bleu"
    "petite plage verte" deviendrait "petite mer bleu"
    ....

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Pas simple !!

    Si STR = la chaîne d'origine, OLDSTR = la chaîne a remplacer et NEWSTR la chaîne de remplacement ça donne quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    left$(STR,(instr(0,STR,OLDSTR))-1)+NEWSTR+right$(STR,(instr(0,STR,OLDSTR))+len(OLDSTR))
    ce qui donne avec ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    left$("petite plage verte",(instr(0,"petite plage verte",'plage'))-1)+'mer'+right$("petite plage verte",(instr(0,"petite plage verte",'plage'))+len("plage"))
    Nom : 2019-05-14 11_28_47- Sage ERP X3.png
Affichages : 765
Taille : 7,0 Ko


    Le problème est que tu es limité à 80 caractères dans les formules de transaction...

  3. #3
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    J'ai peur de m'être mal exprimé.
    En fait j'ai une centaine d'article avec le mot "plage" dedans que je veux remplacer par le mot "mer".
    Les 2 exemples que j'ai donné sont 2 désignations parmi la centaine.

    Or d'après votre exemple j'ai l'impression qu'il faut faire la requête pour chaque article, je cherche à le faire en masse, car dans ce cas autant passé par la maintenance des tables ?
    Ou j'ai mal compris quelque chose ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Oui je crois que j'ai bien compris
    si tu veux remplacer le mot plage par le mot mer dans toutes les désignations 1 de tes article tu fais quelque chose comme ça dans la formule de ta transaction systeme:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    left$([F:ITM]ITMDES1,(instr(0,[F:ITM]ITMDES1,"plage"))-1)+"mer"+right$([F:ITM]ITMDES1,(instr(0,[F:ITM]ITMDES1,"plage"))+len("plage"))

  5. #5
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    ok merci je vais faire le test sur un ou deux articles avant de lancer en masse bien sûr.

    Et cela se passe bien par le menu "Transaction de mise à jour"
    Je choisis ma table et dans le 2ème onglet je ne précise aucune paramètre tout se fait dans le 2ème tableau ? C'est ça


    Nom : Sans titre.png
Affichages : 821
Taille : 17,3 Ko


    Et j'ai un message d'erreur quand je veux inscrire la formule j'ai l'impression que la fonction right n'existe pas de mémoire :

    Nom : Sans titre1.png
Affichages : 763
Taille : 7,6 Ko

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Moi j'ai le message qui dit que la formule dépasse 80 caractères ... comme prévu

    Une solution serait de créer 2 champs temporaires

    1ere champ ZPARTIEGAUCHE dans laquelle tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    left$([F:ITM]ITMDES1,(instr(0,[F:ITM]ITMDES1,"plage"))-1)
    2eme champs ZPARTIEDROITE dans laquelle tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    right$([F:ITM]ITMDES1,(instr(0,[F:ITM]ITMDES1,"plage"))+len("plage"))
    et dans une 2eme transaction de mise à jour tu concatènes ZPARTIEGAUCHE+"mer"+ZPARTIEDROITE

    C'est une idée, il y a surement d'autres solutions peut-être plus simple


    Citation Envoyé par leloup84 Voir le message

    Et cela se passe bien par le menu "Transaction de mise à jour"
    Oui !

    Citation Envoyé par leloup84 Voir le message
    Je choisis ma table et dans le 2ème onglet je ne précise aucune paramètre tout se fait dans le 2ème tableau ? C'est ça
    Tu peux mettre des paramètres si tu veux. Pour appeler les paramètres dans les sélection ou les formules il faut utiliser la syntaxe V1 pour le 1er paramètre, V2 pour le 2eme ,....

  7. #7
    Membre averti
    Homme Profil pro
    Consultant technico-fonctionnel sage X3
    Inscrit en
    Avril 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant technico-fonctionnel sage X3
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 316
    Points : 448
    Points
    448
    Par défaut sql
    en sql directement au niveau de la base sera plus rapide pour ce coup

    transaction systeme se limite a des cas simple

  8. #8
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Ah ok mais compétence se limite à l'application Sage.
    Je ne sais pas attaquer la base SQL Server.

  9. #9
    Membre averti
    Homme Profil pro
    Consultant technico-fonctionnel sage X3
    Inscrit en
    Avril 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant technico-fonctionnel sage X3
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 316
    Points : 448
    Points
    448
    Par défaut Import Export
    sinon autre solution faire un modele d import export

    une fois les designations exportes dans notepad vous pouvez remplacer cela rapidement et reimporter

  10. #10
    Membre actif
    Homme Profil pro
    Développeur, Analyste-programmeur ERP Sage X3, Crystal Report, Oracle, SQL, Formateur
    Inscrit en
    Mars 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur, Analyste-programmeur ERP Sage X3, Crystal Report, Oracle, SQL, Formateur

    Informations forums :
    Inscription : Mars 2007
    Messages : 154
    Points : 272
    Points
    272
    Par défaut
    ou une autre solution est de le faire par un traitement qui parcours les articles et qui utilise la fonction suivante pour le remplacement de sous-chaines :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #**
    #* Sous-programme remplaçant dans une chaîne une sous-chaîne par une autre
    #*
    #* @param ZCHAINE : Chaîne à traiter
    #* @param ZOLD : texte à remplacer
    #* @param ZNEW : nouveau texte
    #*!
    Subprog RPLCH(ZCHAINE,ZOLD,ZNEW)
        Variable Char ZCHAINE
        Value Char ZOLD,ZNEW
        Local Integer ZI
        Local Char ZRETOUR(255)
        ZRETOUR=""
        For ZI=1 To len(ZCHAINE)
            If mid$(ZCHAINE,ZI,len(ZOLD)) = ZOLD
                ZRETOUR+=ZNEW
                ZI+=len(ZOLD)-1
            Else
                ZRETOUR+=mid$(ZCHAINE,ZI,1)
            Endif
        Next ZI
        ZCHAINE=ZRETOUR
    End
    Analyste-Programmeur - Consultant technico-fonctionnel - Expert Crystal Report - Formateur - 14 ans d'expérience sur ERP Sage X3 - Nombreux modules, développements spécifiques et migrations réalisés - Contactez-moi par message privé pour vos projets X3 toute version

Discussions similaires

  1. remplacer une valeur par une autre
    Par khelilo dans le forum Excel
    Réponses: 2
    Dernier message: 14/12/2012, 14h06
  2. [AC-2000] Remplacer une valeur par une autre à partir d'une requête
    Par tibogaet dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/08/2009, 14h23
  3. Remplacer une valeur par une autre valeur
    Par Prekestolen dans le forum Formules
    Réponses: 2
    Dernier message: 23/02/2009, 17h18
  4. comment remplacer une valeur par une autre?
    Par bling dans le forum Excel
    Réponses: 5
    Dernier message: 14/02/2009, 18h06
  5. remplacement d'une valeur par une autre
    Par hugoos dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2005, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo