Jump to content
  • entries
    69
  • comments
    19
  • views
    7647

Le travail à la chaîne !


David Julot

945 views

 Share

Cette semaine nous allons tous travailler à la chaîne… Du début à la fin, nous allons apprendre à extraire des chaînes, tout en gardant notre position… Nous allons être les forçats de FileMaker, pour s’apercevoir en fin de compte que ce dernier nous propose de travailler moins, pour gagner plus… de confort !

Bref, nous allons étudier de près les fonctions DEBUT, EXTRAIT, POSITION et OBTENIRVALEUR, qui permettent de jouer, si l’on peut dire, avec les chaînes de caractères, plus communément appelés textes.

Pour les besoins de ma démonstration, nous allons prendre comme données de travail le texte suivant :

David Julot
Formateur
www.leblogfm.fr

texte vu par FileMaker comme cela :

David Julot¶Formateur¶www.leblogfm.fr
1234567890123456789012345678901234567
         1         2         3

La numération présente en dessous du texte n’est là que pour bien visualiser la position de chaque caractère de la chaîne.

 

Pourquoi cet exemple ?

Cet exemple illustre un cas pratique de transmission de plusieurs paramètres en une fois, les paramètres étant séparés par un retour chariot.

Imaginons que je veuille envoyer plusieurs valeurs à un script, via le paramètre de script. La seule possibilité qui s’offre à moi c’est de n’envoyer qu’une seule valeur. Mais alors, comment différencier les différentes valeurs ? En les séparant par un caractère dont je suis certain qu’il ne sera pas présent dans mes valeurs.

On a longtemps utilisé le « pipe » | comme caractère de séparation.

 

La concaténation

Pour générer une donnée composée de plusieurs valeurs, on dit « concaténer », on utilise l’opérateur de concaténation, qui dans FileMaker Pro est : & . Par exemple pour concaténer trois rubriques avec comme séparateur le retour chariot, on utilise la formule suivante :

rubrique 1 & "¶" & rubrique 2 & "¶" & rubrique 3


Les fonctions d’extraction de chaîne de caractères

Il y a, dans FileMaker Pro, trois fonctions d’extraction de chaîne :

  • DEBUT, pour récupérer les n premiers caractères d’une chaîne ;
  • EXTRAIT, pour extraire à partir d’une position n caractères d’une chaîne ;
  • FIN, pour récupérer les n derniers caractères d’une chaîne.

Exemples avec le texte présenté en début de chronique :

DEBUT ( texte ; 11 )
// retourne : David Julot

EXTRAIT ( texte ; 13 ; 9 )
// retourne : Formateur

FIN ( texte ; 15 )
// retourne : www.leblogfm.fr


Et il y a d’autres fonctions qui permettent de récupérer des informations sur une chaîne de caractères, entres autres :

  • LONGUEUR, qui permet de connaître le nombre de caractères d’une chaîne ;
  • OCCURRENCES, qui permet de connaître le nombre de fois qu’une chaîne est présente dans le texte ;
  • POSITION, qui permet de connaître la position d’une chaîne dans un texte.

Exemples avec le texte présenté en début de chronique :

LONGUEUR ( texte )
// retourne : 37

OCCURRENCES ( texte ; "¶" )
// retourne : 2

POSITION ( texte ; "¶" ; 1 ; 1 )
// retourne : 12 , position du 1er ¶ contenu dans le texte

POSITION ( texte ; "¶" ; 1 ; 2 )
// retourne : 22 , position du 2e ¶ contenu dans le texte

 

Extraire une valeur contenu dans une liste

Des valeurs séparées par des retours chariots dans un texte s’appelle, dans FileMaker Pro, une liste. Le texte présenté en début de chronique est donc une liste de 3 valeurs.

Récupération de la 1ère valeur

Pour récupérer la première valeur, il nous faut connaître sa longueur, en nombre de caractères. Si nous connaissons la position du premier séparateur, à savoir le retour chariot. Nous pouvons donc connaître la longueur de la 1ère valeur qui est égale à : position du 1er retour chariot moins 1. Ce qui se formule dans FileMaker Pro comme suit :

POSITION ( texte ; "¶" ; 1 ; 1 ) - 1

Donc, pour récupérer la 1ère valeur nous allons utiliser la fonction DEBUT avec la formule suivante :

DEBUT ( texte ; POSITION ( texte ; "¶" ; 1 ; 1 ) - 1 )

// qui peut aussi s'écrire de la manière suivante :
DEFINIR (
  [
    t = texte ; 
    n = POSITION ( t ; "¶" ; 1 ; 1 ) - 1
  ];
  DEBUT ( t ; n )
)

Récupération de la 2e valeur

Pour récupérer la 2e valeur du texte, nous allons utiliser la fonction EXTRAIT, pour cela nous avons besoin de connaître :

  • la position du premier caractère à extraire, c’est donc la position du 1er retour chariot + 1 :
    POSITION ( texte ; "¶" ; 1 ; 1 ) + 1

     

  • le nombre de caractères à extraire, c’est donc ( la position du 2 retour chariot ) – ( la position du 1er retour chariot ) – 1 :
    POSITION ( texte ; "¶" ; 1 ; 2 ) - POSITION ( texte ; "¶" ; 1 ; 1 ) - 1

     

Donc, pour récupérer la 2e valeur, nous allons utiliser la formule suivante :

DEFINIR (  
  [
    t = texte ;
    p1 = POSITION ( t ; "¶" ; 1 ; 1 ) ;
    p2 = POSITION ( t ; "¶" ; 1 ; 2 ) ;
    p = p1 +1 ;
    n = p2 - p1 - 1
  ] ;
  EXTRAIT ( t ; p ; n )
)

Récupération de la 3e valeur

Pour récupérer la troisième valeur du texte, nous allons utiliser la fonction FIN, pour cela nous avons besoin de connaître le nombre de caractères à extraire depuis la fin du texte. Cette longueur est égale à (longueur du texte) – (position du 2e retour chariot) :

LONGUEUR ( texte ) - POSITION ( texte ; "¶" ; 1 ; 2 )

Donc, pour récupérer la 3e valeur, nous allons utiliser la formule suivante :

DEFINIR (  
  [
    t = texte ;
    n = LONGUEUR ( t ) - POSITION ( t ; "¶" ; 1 ; 2 )
  ] ;
  FIN ( t ; n )
)

 

Et FileMaker Pro 8 introduit une fonction pour les fainéants comme moi !

Comme on peut le constater, les formules précédentes sont fastidieuses à réaliser, il faut jongler avec EXTRAIT, POSITION et LONGUEUR… Alors est arrivé OBTENIRVALEUR, une fonction qui permet aux fainéants comme moi, oui je suis fainéant, de récupérer une valeur par son numéro :

OBTENIRVALEUR ( texte ; 1 )
// retourne : David Julot

OBTENIRVALEUR ( texte ; 2 )
// retourne : Formateur

OBTENIRVALEUR ( texte ; 3 )
// retourne : www.leblogfm.fr

Comme on le voit, cette instruction remplace à elle seule les fonctions EXTRAIT, POSITION et LONGUEUR. Cela suppose d’avoir une liste de valeurs séparées par des retours chariots.

 

C’est tout pour cette semaine…

Si vous avez apprécié cette chronique, ou vous souhaitez soumettre des compléments, des suggestions ou des corrections, n’hésitez pas à mettre un commentaire.

Excellente semaine à toutes et à tous !

 Share

2 Comments


Recommended Comments

Bonjour David, je viens de lire cet article fort intéressant, pensant y trouver mon bonheur..... Mais pas de chance!!!

Je souhaiterais savoir comment extraire une partie d'une rubrique jusqu'a un caractére donné:

  • Achillée millefeuille (Achillea millefolium). Antibactérien, antifongique, antioxydant3

en clair comment pouvoir scinder cette phrase en plusieurs rubriques

  1. Nom commun du début à la paranthése
  2. Nom scientifique entre les parenthése
  3. les propriétés dans une rubrique multivaluée si possible

Voilà mon probléme, ceci est il possible avec FMP12??

Je fais des essais, mais je n'arrive pas à finaliser quelque chose de correct si cela est possible bien entendu.....

Cordailement

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...