Numero Formattato

E' l'area in cui è possibile condividere funzioni personalizzate nate dalla creatività e l'esperienza degli sviluppatori FileMaker

Moderatore: Moderatori

permax
Messaggi: 58
Iscritto il: sabato 7 aprile 2007, 2:00

Messaggio da permax » martedì 28 agosto 2007, 21:04

permax ha scritto: Anch'io ho notato che con i numeri negativi la funzione "FormattedNumber" da i numeri.
Scusa ho sbagliato la funzione è "ImportoMoneta2"
La "FormattedNumber" funziona perfettamente ma vorrei chiedere se è possibile far apparire sempre due zeri decimali anche quando il numero non ha decimali.
Grazie
Filemaker Pro Advanced 9 - Windows Xp Professional SP2

raybaudi
Messaggi: 3616
Iscritto il: sabato 7 febbraio 2004, 1:00
Località: Roma
Contatta:

Messaggio da raybaudi » giovedì 30 agosto 2007, 11:34

Per adesso modifica la funzione personalizzata con questa:

Codice: Seleziona tutto

/* 

FormattedNumber custom function 

Author: 
Daniele Raybaudi 

Format: 
FormattedNumber ( number ; thousandSep ; color ) 

Parameters: 
number - any number or  number field 
thousandSep - the your choice thousand separator (decimal separator is given by your system settings) 
color - boolean number - if the number is a negative one and this parameter is  ≠ 0, the result will be red writed 

Returns any gived number as a number formatted with thousand and decimal separators. 
Also you can choose to dispay the result in red if the number is a negative one. 
Better than other custom functions because this isn't limited to some separators and don't need sub custom. 

March 16, 2006 

August 30, 2007 : modified version for 2 decimals

*/ 

Let ([ 
negative = If ( Sign ( number )  = - 1 ; 1 ; 0 ); 
num = Abs ( number ); 
int = Int ( num ); 
dec = If ( num - int ; Left ( num - int & "00" ; 3 ); Left ( 1/10 ^ 3 ; 3 ) ) ;
len = Length ( int ); 
tris = 
Case ( 
len > 3  ; thousandSep & Right ( int ; 3 ) & dec; 
len ≤ 3  ; Right ( int ; len ) & dec 
); 
next = Left ( int ;  len - 3 ); 
result = Case ( 
len  ; FormattedNumber ( next ; thousandSep ; color ) &  tris ; 
"" 
) 
]; 
Case ( 
negative and color ; TextColor ( "-" & result; RGB ( 255 ; 0 ; 0 ) ); 
negative ; "-" &  result; 
result 
) 
)
Avrai SEMPRE 2 decimali...e proprio per questo ho detto "per adesso"...

Infatti conviene inserire un altro parametro nella funzione in modo da poter decidere se e quanti decimali vogliamo.

Ma questo avverrà nella versione Premium :wink:
Raybaudi FMP 12 Adv. Windows XP SP3

loziofester
Messaggi: 196
Iscritto il: domenica 12 novembre 2006, 1:00
Località: Caserta

Messaggio da loziofester » venerdì 31 agosto 2007, 8:34

raybaudi ha scritto:Per adesso modifica la funzione personalizzata con questa:

Codice: Seleziona tutto

/* 

FormattedNumber custom function 

Author: 
Daniele Raybaudi 

Format: 
FormattedNumber ( number ; thousandSep ; color ) 

Parameters: 
number - any number or  number field 
thousandSep - the your choice thousand separator (decimal separator is given by your system settings) 
color - boolean number - if the number is a negative one and this parameter is  ≠ 0, the result will be red writed 

Returns any gived number as a number formatted with thousand and decimal separators. 
Also you can choose to dispay the result in red if the number is a negative one. 
Better than other custom functions because this isn't limited to some separators and don't need sub custom. 

March 16, 2006 

August 30, 2007 : modified version for 2 decimals

*/ 

Let ([ 
negative = If ( Sign ( number )  = - 1 ; 1 ; 0 ); 
num = Abs ( number ); 
int = Int ( num ); 
dec = If ( num - int ; Left ( num - int & "00" ; 3 ); Left ( 1/10 ^ 3 ; 3 ) ) ;
len = Length ( int ); 
tris = 
Case ( 
len > 3  ; thousandSep & Right ( int ; 3 ) & dec; 
len ≤ 3  ; Right ( int ; len ) & dec 
); 
next = Left ( int ;  len - 3 ); 
result = Case ( 
len  ; FormattedNumber ( next ; thousandSep ; color ) &  tris ; 
"" 
) 
]; 
Case ( 
negative and color ; TextColor ( "-" & result; RGB ( 255 ; 0 ; 0 ) ); 
negative ; "-" &  result; 
result 
) 
)
Avrai SEMPRE 2 decimali...e proprio per questo ho detto "per adesso"...

Infatti conviene inserire un altro parametro nella funzione in modo da poter decidere se e quanti decimali vogliamo.

Ma questo avverrà nella versione Premium :wink:
scusate se approfitto di questo topic per chieder una mano su qualcosa che cmq mi sembra attinente.
Ho molti campi che devo compilare con le diottrie degli occhiali - esempio -0.25 -0.50 oppure +0.25 +0.50 ecc.
la particolarità e che devo sempre e dico sempre inserire valori multipli di 0,25 sia con il segno meno che con il segno + ; quindi non avrò mai un 0,35 o 0,45.
qualche consiglio su come procedere?? preferirei che i campi fossero di tipo numerico per poi eventualmente fare dei calcoli.
grazie a tutti
FILEMAKER 12 - win7

raybaudi
Messaggi: 3616
Iscritto il: sabato 7 febbraio 2004, 1:00
Località: Roma
Contatta:

Messaggio da raybaudi » venerdì 31 agosto 2007, 11:35

loziofester ha scritto:...
Ho molti campi che devo compilare con le diottrie degli occhiali - esempio -0.25 -0.50 oppure +0.25 +0.50 ecc.
la particolarità e che devo sempre e dico sempre inserire valori multipli di 0,25 sia con il segno meno che con il segno + ; quindi non avrò mai un 0,35 o 0,45.
Ti crei una lista valori personalizzata e la colleghi a tutti quei campi.
Raybaudi FMP 12 Adv. Windows XP SP3

loziofester
Messaggi: 196
Iscritto il: domenica 12 novembre 2006, 1:00
Località: Caserta

Messaggio da loziofester » venerdì 31 agosto 2007, 12:25

raybaudi ha scritto:
loziofester ha scritto:...
Ho molti campi che devo compilare con le diottrie degli occhiali - esempio -0.25 -0.50 oppure +0.25 +0.50 ecc.
la particolarità e che devo sempre e dico sempre inserire valori multipli di 0,25 sia con il segno meno che con il segno + ; quindi non avrò mai un 0,35 o 0,45.
Ti crei una lista valori personalizzata e la colleghi a tutti quei campi.
è una soluzione fattibile ma non percorribile - diverrebbe una lista lunghissima
si parte da 0.00 -0,25 -0,50 fino a -30,00 e lo stesso per i valori positivi
FILEMAKER 12 - win7

raybaudi
Messaggi: 3616
Iscritto il: sabato 7 febbraio 2004, 1:00
Località: Roma
Contatta:

Messaggio da raybaudi » venerdì 31 agosto 2007, 12:31

loziofester ha scritto: qualche consiglio su come procedere??
Allora non ho capito quale era il problema che necessitava di un consiglio...

Quale era il problema ?
Raybaudi FMP 12 Adv. Windows XP SP3

loziofester
Messaggi: 196
Iscritto il: domenica 12 novembre 2006, 1:00
Località: Caserta

Messaggio da loziofester » venerdì 31 agosto 2007, 12:49

raybaudi ha scritto:
loziofester ha scritto: qualche consiglio su come procedere??
Allora non ho capito quale era il problema che necessitava di un consiglio...

Quale era il problema ?
vorri un controllo sull'immissione dei dati in modo che non accetti valori che non siano multipli di 0,25 - sia che li inserisco con il segno meno sia che li inserisco con il segno +.
Qundi potro scrivere +0.25 / +0.50 ma non 0.55 0.37 1.29 ecc ecc.
FILEMAKER 12 - win7

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » venerdì 31 agosto 2007, 15:24

verificato mediante lista valori.
FM 10Adv, winzooz...

raybaudi
Messaggi: 3616
Iscritto il: sabato 7 febbraio 2004, 1:00
Località: Roma
Contatta:

Messaggio da raybaudi » venerdì 31 agosto 2007, 17:01

Inserisci nelle opzioni di verifica di quel campo il seguente calcolo:

Mod ( tuoCampoNumero ; 0,25 ) = 0
Raybaudi FMP 12 Adv. Windows XP SP3

loziofester
Messaggi: 196
Iscritto il: domenica 12 novembre 2006, 1:00
Località: Caserta

Messaggio da loziofester » venerdì 31 agosto 2007, 18:29

raybaudi ha scritto:Inserisci nelle opzioni di verifica di quel campo il seguente calcolo:

Mod ( tuoCampoNumero ; 0,25 ) = 0
campo numerio chiamato cylODx
in questo campo nelle opzioni di verifica devo mettere la tua formula??
devo mettere il segno di spunta su "in questo campo convalida sempre" ??
se si -non mi funziona - se metto +0.44 o un qualsiasi altro valore non mi segnala nessun errore
FILEMAKER 12 - win7

Rispondi