ThierryPerretier
Messages postés103Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 6 juillet 20061 30 nov. 2005 à 12:46
Pourquoi pas simplement :
transform(123.45, "@RL 99999.99")
?
ccguns
Messages postés2Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention 8 octobre 2004 8 oct. 2004 à 08:46
C'est marrant, j'ai la même fonction. J'ai toujours cru qu'elle avait été écrite par quelqu'un de la boite où je travaille, mais à priori non.
La voilà, un peu modifiée pour gérer les décimales :
* Fonction : Strzero
* Objet : Permet d'effectuer un STR en remplaçant les espaces par des zéros.
* Paramètre : - La valeur numérique
* - La longueur de la chaine totale
* - Le nombre de chiffre après la virgule
* Exemple : ? strzero(123.45, 8, 2) => "00123.45"
30 nov. 2005 à 12:46
transform(123.45, "@RL 99999.99")
?
8 oct. 2004 à 08:46
La voilà, un peu modifiée pour gérer les décimales :
* Fonction : Strzero
* Objet : Permet d'effectuer un STR en remplaçant les espaces par des zéros.
* Paramètre : - La valeur numérique
* - La longueur de la chaine totale
* - Le nombre de chiffre après la virgule
* Exemple : ? strzero(123.45, 8, 2) => "00123.45"
FUNCTION strzero
PARAMETERS m.valeur, m.longueur, m.decimale
PRIVATE lcRetour
PRIVATE m.chaine
PRIVATE m.nb_param
STORE "" TO lcRetour
STORE "" TO m.chaine
STORE 1 TO m.nb_param
m.nb_param = IIF(EMPTY(m.longueur), 1, IIF(EMPTY(m.decimale), 2, 3))
IF (TYPE("m.valeur") <> "N")
m.chaine IIF(m.nb_param 1, STR(0), IIF(m.nb_param = 2, STR(0, m.longueur), STR(0, m.longueur, m.decimale)))
ELSE
m.chaine IIF(m.nb_param 1, STR(m.valeur), IIF(m.nb_param = 2, STR(m.valeur, m.longueur), STR(m.valeur, m.longueur, m.decimale)))
ENDIF
lcRetour = STRTRAN(m.chaine," ", "0")
IF m.nb_param = 2 AND LEN(lcRetour) > m.longueur
lcRetour = LEFT(lcRetour , m.longueur)
ENDIF
RETURN lcRetour