4 Replies Latest reply: Dec 20, 2017 5:01 AM by Axel Beaugrand RSS

    Flagger une chaine de caractère d'un champ

    Axel Beaugrand

      Bonjour à tous,

       

      Je recherche à Flagger des données d'un champ et je suis confronté à quelques problèmes.

      Voici ce qu'on peut trouver dans la table ou je souhaiterai effectuer un tri.

         

      A
      1234567
      12345678
      123456789
      123.567
      123.5678
      123.56789
      PA010540

      H1101.442

       

      Dans mon script j'ai réalisé les points suivants :

      - insertion de mon champ via un QVD

      - len(champ) as NBR_CARACT_CHAMP1

      J'ai par la suite 3 nombres qui se mette dans cette table NBR_CARACT_CHAMP1 = 7 / 8 / 9

      Chose paradoxal, quand je sélectionne 8 de la table NBR_CARACT_CHAMP1 j'ai des champs qui sont égal à cela : 1009.33 =6 caract numérique + 1 point donc bon ok pour le 7 mais pour le 8

       

      J'aimerai donc avoir vos recommandations sur les points suivants svp. Comment je peux faire pour :

      - Enlever les champs avec un point dans ma table

      - Enlever les champs commençant par P et H

       

      En vous remerciant d'avance pour votre aide je vous souhaite une excellente soirée !

        • Re: Flagger une chaine de caractère d'un champ
          youssef belloum

          Salut,

           

          pour purger une chaine de caractere, il y a la fonction PurgeChar

           

          pour enlever les points par exemple:

           

          len(Purgechar(A, '.')) as NBR_CARACT_CHAMP1

          • Re: Flagger une chaine de caractère d'un champ
            Kevin Chevrier

            Tu peux aussi utiliser la fonction replace pour transformer les points et les espaces en rien.

             

            Pour répondre à tes questions :

             

            J'aimerai donc avoir vos recommandations sur les points suivants svp. Comment je peux faire pour :

            - Enlever les champs avec un point dans ma table

            ==> Après ton From : where FindOneOf(TON_CHAMP, '.')=0

            ==> IF(FindOneOf(TON_CHAMP, '.')=0,TON_CHAMP) as TON_CHAMP_RECALCULE

            - Enlever les champs commençant par P et H

            ==> Après ton From : where  Left(TON_CHAMP, 1) <> 'P' or Left(TON_CHAMP, 1) <> 'H'

            ==> OU dans un IF : IF(Left(TON_CHAMP, 1) <> 'P' or Left(TON_CHAMP, 1) <> 'H', TON_CHAMP) as TON_CHAMP_RECALCULE


            Tout ensemble, ça donne donc :

            ==> Soit dans une clause where : where FindOneOf(TON_CHAMP, '.')=0 AND (Left(TON_CHAMP, 1) <> 'P' or Left(TON_CHAMP, 1) <> 'H')

            ==> Soit dans un IF : IF(FindOneOf(TON_CHAMP, '.')=0 AND (Left(TON_CHAMP, 1) <> 'P' or Left(TON_CHAMP, 1) <> 'H', TON_CHAMP)) as TON_CHAMP_RECALCULE

              • Re: Flagger une chaine de caractère d'un champ
                Axel Beaugrand

                Bonjour Kevin je te remercie de ta réactivité décidément tu deviendras mon mentor je crois ^^

                 

                J'ai effectué tes solutions, j'ai choisi la solution where qui me semble moins pénible que la if ..

                Pour la suppression des champs avec un point avec ta solution where FindOneOf(TON_CHAMP, '.')=0 Super ca marche au top je te remercie énormément je connaissais pas du tout celle la je la note ^^

                 

                Par la suite pour la suppression des caractère PA et H a sont non fonctionnel je vais travailler dessus ..
                Merci encore pour ton aide !

                 

                Excellente journée !