Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
ab92
Creator II
Creator II

Flagger une chaine de caractère d'un champ

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 !

1 Solution

Accepted Solutions
kevinchevrier
Partner - Creator III
Partner - Creator III

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

View solution in original post

4 Replies
YoussefBelloum
Champion
Champion

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

kevinchevrier
Partner - Creator III
Partner - Creator III

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

ab92
Creator II
Creator II
Author

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 !

ab92
Creator II
Creator II
Author

Bonjour Youssef ce n'est pas exactement ce que je souhaite obtenir je te remercie en tout cas pour ta réactivité.

Excellente journée !