OPALE - 10.0 - Utilisation

Fonctions de chaines

De MappingDoc

UpperLower

La fonction 1UpperLower permet de convertir une chaine de caractères initialement en majuscules ou minuscules dans un format où la première lettre de chaque mot sera une majuscule puis les autres des minuscules (proper case). TABLE.NAME = 1UpperLower ( TABLE.NAME )

Par exemple, CLIENT devient Client après conversion.

FindSubstring

L'opérateur FindSubstring permet de rechercher une sous-chaine de caractères dans une chaine de caractères donnée.

DB.FIND_POS = FindSubstring ( DB.STRING , DB.STRINGTOFIND , DB.STARTPOS )

Les positions sont "zéro base index", c'est-à-dire que le premier caractère est en position 0, le deuxième en position 1, etc.

  • DB.FIND_POS : Position de la chaine trouvée. Si aucune chaine n'est trouvée, cette valeur sera égale à -1.
  • DB.STARTPOS : Position de départ dans la chaine de caractères à partir de laquelle vous commencez à chercher.
  • DB.STRING : Chaine d'origine.
  • DB.STRINGTOFIND : Chaine recherchée.

Format

La nouvelle fonction Format accepte un champ en paramètre et le formate suivant le format passé en paramètre.

DB.str = Format ( DB.Total_Invoice , "Total reformaté ==> %010.5f" )
DB.str2 = Format ( DB.Total_TAX , "Total TTC 0 ==> %020.10f" )
% [Flags][Length][.precision]type

Type:

  • %d => Position du champ Entier
  • %f => Position du champ Float
  • %s => Position du champ String

Flags:

  • - => Alignement à gauche (à droite par défaut)
  • + => Permet d'ajouter un signe + devant les entiers (par défaut seuls les nombres négatifs ont un préfixe)
  • 0 => Si la longueur a un préfixe de 0, les blancs sont remplacés par des zéros

Length:

Permet de spécifier la longueur de champ. Non tronquée si la longueur est trop petite.

.Precision:

Spécifie le nombre de décimales affichées après la virgule

Exemple :

DB.int = 123456
DB.str = Format ( DB.int , " mon entier reformaté %010d" )  
Integer length 10. Blancs remplacés par des zéros
DB.str => mon entier reformaté 0000123456
DB.fl = 1344.05
DB.str = Format ( DB.fl , "==> %020.10f" )
Float avec 10 décimales et longueur totale de 20 caractères
DB.str => ==> 000001344.0500000000
DB.str = Format ( “test” , " %-15s" )
DB.str => “test           “


Remarque :

La fonction Format n'est pas compatible avec les caractères Unicode.

FormatDate

La fonction FormatDate modifie le format de date imprimé.

TABLE.FIELD = FormatDate ( TABLE.FIELD , "format d'origine" , "nouveau format" , "langue" )

Exemple : TABLE.DATE = FormatDate ( TABLE.DATE , "MM/YY" , "%B %y" , "English" )

Le format d'origine est MM/YY (03/07)

Le nouveau format est (March 07)

FormatString

La fonction FormatString permet de changer le format de la date et des heures.

TABLE.FIELD = FormatString ( TABLE.FIELD , "new format" )

Exemple :TABLE.TEXT = FormatString ( TABLE.TEXT , "xx xx xx xx xx / xtotox xx xx xx")

Chaque "x" correspond à un caractère. Chaque caractère supplémentaire sera ajouté au résultat.Si la valeur du champ d'origine est "this is the text", la valeur reformatée sera "th is is th e t /toto ex t ".

Cette fonction peut aussi être utilisée pour convertir des prix en chaines de caractères en utilisant les opérateurs clés "money_fr" et "money_us". Plus généralement, il est aussi possible de convertir un nombre en lettres à l'aide de "convert_fr" et "convert_us".

DB.Sum = 123.55

DB.strSum = FormatString ( DB.Sum , "money_fr" )

La variable strSum contient la chaine : " Cent vingt trois, 55 "

DB.strSum = FormatString ( DB.Sum , "money_us" )

La variable strSum contient la chaine : " One hundred [and] twenty three, 55 "

GetLength

L'opérateur GetLength permet de renvoyer la longueur d'une chaine de caractères donnée.

Exemple :

DB.VALUE="TEST"
DB.LEN = GetLength ( DB.VALUE )

Dans cet exemple, DB.LEN est égal à 4.

IsNumeric

Cette fonction retourne 0 si la chaine de caractères passée en paramètre est non-numérique ou 1 si elle est numérique.

Iower

La fonction Lower convertit une chaine de caractères en minuscules.

TABLE.NAME = Lower ( TABLE.NAME )

Après conversion, CLIENT devient donc client.

MakeDate

MakeDate formate une date de la même façon que l'opérateur FormatDate à la différence près que MakeDate accepte un paramètre de plus qui peut être utilisé pour additionner ou soustraire un nombre de jours, mois ou années.

DB.date = “03/03”
DB.date = MakeDate ( DB.Date, "MM/YY" , "%B %y" , "English" , "+3m" )
DB.date => 3 June

Le format d'origine est MM/YY auquel sont ajoutés 3 mois (03/03) ce qui donne June 03.

La syntaxe du dernier champ est :

  • - + or – pour ajouter ou soustraire
  • - le nombre
  • - le type ( « d » pour day, « m » pour month , « y » pour year)

MapTranslate

L'opérateur MapTranslate permet de traduire une chaine de caractères d'une langue à l'autre. Pour cela, il faut spécifier la langue cible à l'aide de la fonction SetLanguage et créer les fichiers de traduction auparavant.

Exemple :

DB.french = "bonjour"
DB.english = MapTranslate ( $DB.french )

Mid

L'opérateur Mid permet d'extraire une partie d'une chaine de caractères.

Exemple : Pour extraire le mois dans un champ date au format YYYYMMDD de la table MYTABLE.MYTABLE.MONTH = Mid ( MYTABLE.DATE, 5 , 2 )

NoQuote

L'opérateur NoQuote permet d'insérer une valeur de champ dans une requête SQL sans avoir besoin des guillemets avant et après les données.

Exemple :

DB.MYID=122

Sans NoQuote

"Select USER From MYTABLE Where ID_USER=" $DB.MYID

-> Select ID From MYTABLE Where USER='122'

Avec NoQuote

"Select ID FROM MYTABLE Where USER=" NoQuote($DB.MYID)

-> Select ID From MYTABLE Where USER=122

Param

L'opérateur Param permet de récupérer certains paramètres d'une procédure stockée.

Exemple : Exécution d'une procédure stockée qui renvoie les deux valeurs stockées dans DB.RESULT1 et DB.RESULT2 :

Param ( DB.RESULT1 , DB.RESULT2 ) Sql"Begin MyProc (:param1 , :param2 ) ; END;"

Replace

La fonction Replace permet de remplacer une valeur dans un champ par une autre sans forcément remplacer la totalité du champ. En fait, cette fonction remplace uniquement les caractères mentionnés dans le champ.

Exemple : Pour remplacer la valeur 'Mister' par 'Mr.' dans le champ TITLE de la table MYTABLE :Select Replace(MYTABLE.TITLE, 'Mister', 'Mr.') From MYLIB.MYTABLE

ReverseFind

Cette fonction renvoie la dernière occurrence d'une chaine de caractères dans une autre. Le premier argument est la chaine entière et le deuxième, la chaine recherchée.

Exemple :

DB.string = "abcdabcabcdab"
DB.substring = "b"
DB.num = ReverseFind ( DB.string  , DB.substring )   

(ici la fonction renvoie le dernier b c'est-à-dire le 13e caractère dans la chaine) → renvoie 13

Space

Cette fonction renvoie le nombre d'espaces blancs passés en paramètre. Le type de champ doit être " __abcd___ " sinon le nombre ne sera pas correct.

Exemple :

DB.space = Space ( 5 )
DB.str = "str1" DB.space "str2"
→ retourne “str1     str2”

TrimLeft

La fonction TrimLeft permet de supprimer les espaces avant une chaine de caractères.

Exemple : Pour supprimer tous les blancs au début du champ ADDRESS dans la table MYTABLE :MYTABLE.ADDRESS = TrimLeft ( MYTABLE.ADDRESS )

TrimRight

La fonction TrimRight permet de supprimer les espaces après une chaine de caractères.

Exemple :Pour supprimer tous les espaces à droite du champ ADDRESS dans la table MYTABLE : MYTABLE.ADDRESS = TrimRight ( MYTABLE.ADDRESS )

Upper

La fonction Upper permet de convertir tous les caractères dans une chaine donnée en majuscules.

TABLE.NAME = Upper ( TABLE.NAME )

Après conversion, client devient ainsi CLIENT.

WideChar

Cette fonction renvoie le caractère correspondant à la valeur Unicode passée en paramètre.

Exemple :DB.str = WideChar ( 75 ) renvoie K

WideCode

Cette fonction renvoie le code correspondant au caractère Unicode passé en paramètre.

Exemple :DB.num = WideCode ( "M" ) renvoie 77