convertire numeri a testo, per assegni ?

Come utilizzare gli script. Automatizzare gli archivi. Utilizzo dei pulsanti

Moderatore: Moderatori

wakatanka
Messaggi: 8
Iscritto il: mercoledì 23 gennaio 2008, 1:00
Località: Bellaria (Rimini)
Contatta:

convertire numeri a testo, per assegni ?

Messaggio da wakatanka » lunedì 22 dicembre 2008, 16:09

Ciao a tutti, sto facendo un software per la gestione di una amministrazione condominiale. Ho necessità
di stampare i bollettini per i condomini, e, su questi bollettini, la cifra da pagare deve essere in lettere
anzichè in numeri.
Quindi 1360,20 deve diventare milletrecentosessanta/20.

Qualcuno riesce a darmi qualche spunto da dove partire?

grazie a tutti.
Filemaker 9.0v3 ADV OS X 10.5.3

andreuccio
Messaggi: 1737
Iscritto il: giovedì 7 ottobre 2004, 2:00
Località: Lamezia Terme

Re: convertire numeri a testo, per assegni ?

Messaggio da andreuccio » lunedì 22 dicembre 2008, 16:26

Con una funzione personalizzata.
Umiliati e sarai Esaltato, Esaltati e sarai Umiliato
Mac OS X Snow Leopard - FMP 10 Adv.

wakatanka
Messaggi: 8
Iscritto il: mercoledì 23 gennaio 2008, 1:00
Località: Bellaria (Rimini)
Contatta:

Re: convertire numeri a testo, per assegni ?

Messaggio da wakatanka » lunedì 22 dicembre 2008, 16:34

esatto, ci stavo guardando, ma mi sono incagliato, ho cominciato così:

(per il momento considero numeri non superiori a 99999)

nome funzione: numbertotext (viva la fantasia :D )
parametri:
numbers

funzione:

Consenti (
[
$cifra = Lunghezza (number);

$unita = "uno¶due¶tre¶quattro¶cinque¶sei¶sette¶otto¶nove¶dieci¶undici¶dodici¶tredici¶quattordici¶quindici¶sedici¶diciassette¶diciotto¶diciannove";
$decine = "venti¶trenta¶quaranta¶cinquanta¶sessanta¶settanta¶ottanta¶novanta";
$centinaia = "cento";
$migliaia = "mille¶mila";
];
........

ammesso che sia partito col piede giusto, non riesco a capire come "scorporare" $cifra in modo da poter sostituire i numeri con i corrispondenti testi.
:?:
Filemaker 9.0v3 ADV OS X 10.5.3

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: convertire numeri a testo, per assegni ?

Messaggio da PIG-NAH » lunedì 22 dicembre 2008, 18:13

Io utilizzo questa, fornita da non mi ricordo chi ma funge egregiamente 8)

Num text ( number ; alText )

Casi ( number ≤ 0 ; "" ; Lunghezza ( Intero ( number ) ) > 9 ; alText ;
Consenti ( [ l1 = Lunghezza ( Intero ( number ) ) ; l2 = Lunghezza ( Intero ( number ) ) - 3 ;
l3 = Lunghezza ( Intero ( number ) ) - 6 ] ; Consenti ( [ g1 = RicavaComeNumero ( Destra ( Intero ( number ) ; 3 ) ) ;
g2 = RicavaComeNumero ( Destra ( Tronca ( number / 1000 ; 0 ) ; 3 ) ) ;
g3 = RicavaComeNumero ( Destra ( Tronca ( number / 1000000 ; 0 ) ; 3 ) ) ;
n1 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 ; 1 ) ) ;
n12 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 1 ; 2 ) ) ;
n2 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 1 ; 1 ) ) ;
n3 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 2 ; 1 ) ) ;
n4 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 3 ; 1 ) ) ;
n41 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 4 ; 2 ) ) ;
n5 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 4 ; 1 ) ) ;
n6 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 5 ; 1 ) ) ;
n7 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 6 ; 1 ) ) ;
n71 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 7 ; 2 ) ) ;
n8 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 7 ; 1 ) ) ;
n9 = RicavaComeNumero ( Mezzo ( Intero ( number ) ; l1 - 8 ; 1 ) ) ;
rest = Destra ( "00" & Arrotonda ( Modulo ( number ; Intero ( number ) ) ; 2 ) * 100 ; 2 ) ;
a1 = If ( l1 = 2 ; If ( n12 < 20 ; n12 ; If ( n1 ≠ 0 ; n1 ; "" ) ) ;
Casi ( n12 > 10 and n12 < 20 ; n12 ; n12 = 10 ; n12 ; If ( n1 ≠ 0 ; n1 ; "" ) ) ) ;
b1 = Casi ( a1 < 1 ; "" ; a1 = 1 and l1 ≥ 2 ; "Uno" ; Scegliere ( a1 ; "Zero" ;
"Uno" ; "Due" ; "Tre" ; "Quattro" ; "Cinque" ; "Sei" ; "Sette" ; "Otto" ;
"Nove" ; "Dieci" ; "Undici" ; "Dodici" ; "Tredici" ; "Quattordici" ;
"Quindici" ; "Sedici" ; "Diciassette" ; "Diciotto" ; "Diciannove" ) ) ;
a2 = If ( n12 > 19 ; If ( l1 > 1 ; Sinistra ( n12 ; 1 ) & "0" ; "" ) ; "" ) ;
b2 = Casi ( a2 = 10 ; "Dieci" ; a2 = 20 ; "Venti" ; a2 = 30 ; "Trenta" ;
a2 = 40 ; "Quaranta" ; a2 = 50 ; "Cinquanta" ; a2 = 60 ; "Sessanta" ;
a2 = 70 ; "Settanta" ; a2 = 80 ; "Ottanta" ; a2 = 90 ; "Novanta" ) ;
a3 = If ( n3 ≠ 0 ; If ( l1 > 2 ; n3 ; "" ) ; "" ) ;
b3 = Casi ( a3 = 1 ; "Cento" ; a3 = 2 ; "Duecento" ; a3 = 3 ; "Trecento" ;
a3 = 4 ; "Quattrocento" ; a3 = 5 ; "Cinquecento" ; a3 = 6 ; "Seicento" ;
a3 = 7 ; "Settecento" ; a3 = 8 ; "Ottocento" ; a3 = 9 ; "Novecento" ) ;
a4 = Casi ( l2 ≥ 2 ; If ( n41 < 20 ; n41 ; If ( n4 ≠ 0 ; n4 ; "" ) ) ;
l2 = 1 ; n4 ) ; b4 = If ( a4 = 1 and l2 ≥ 2 ; "Un" ; Scegliere ( a4 ; "" ;
"Mille" ; "Due" ; "Tre" ; "Quattro" ; "Cinque" ; "Sei" ; "Sette" ;
"Otto" ; "Nove" ; "Dieci" ; "Undici" ; "Dodici" ; "Tredici" ; "Quattordici" ;
"Quindici" ; "Sedici" ; "Diciassette" ; "Diciotto" ; "Diciannove" ) )
& If ( l1 > 3 and not ( l1 = 4 and a4 = 1 ) and g2 ≠ 0 ; "mila" ; "" ) ;
a5 = If ( n41 > 19 ; If ( l2 > 1 ; n5 & "0" ; "" ) ; "" ) ;
b5 = Casi ( a5 = 10 ; "Dieci" ; a5 = 20 ; "Venti" ; a5 = 30 ; "Trenta" ;
a5 = 40 ; "Quaranta" ; a5 = 50 ; "Cinquanta" ; a5 = 60 ; "Sessanta" ;
a5 = 70 ; "Settanta" ; a5 = 80 ; "Ottanta" ; a5 = 90 ; "Novanta" ) ;
a6 = If ( l2 > 2 ; n6 ; "" ) ; b6 = Casi ( a6 = 1 ; "Cento" ;
a6 = 2 ; "Duecento" ; a6 = 3 ; "Trecento" ; a6 = 4 ; "Quattrocento" ;
a6 = 5 ; "Cinquecento" ; a6 = 6 ; "Seicento" ; a6 = 7 ; "Settecento" ;
a6 = 8 ; "Ottocento" ; a6 = 9 ; "Novecento" ) ;
a7 = Casi ( l3 ≥ 2 ; If ( n71 < 20 ; n71 ; If ( n7 ≠ 0 ; n7 ; "" ) ) ;
l3 = 1 ; n7 ) ; b7 = If ( a7 = 1 and l3 ≥ 2 ; "Un" ; Scegliere ( a7 ; "" ;
"Unmilione" ; "Due" ; "Tre" ; "Quattro" ; "Cinque" ; "Sei" ;
"Sette" ; "Otto" ; "Nove" ; "Dieci" ; "Undici" ; "Dodici" ; "Tredici" ;
"Quattordici" ; "Quindici" ; "Sedici" ; "Diciassette" ; "Diciotto" ;
"Diciannove" ) )
& If ( l1 > 6 and not ( l1 = 7 and a7 = 1 ) and g3 ≠ 0 ; "milioni" ; "" ) ;
a8 = If ( n71 > 19 ; If ( l3 > 1 ; n8 & "0" ; "" ) ; "" ) ;
b8 = Casi ( a8 = 10 ; "Dieci" ; a8 = 20 ; "Venti" ; a8 = 30 ; "Trenta" ;
a8 = 40 ; "Quaranta" ; a8 = 50 ; "Cinquanta" ; a8 = 60 ; "Sessanta" ;
a8 = 70 ; "Settanta" ; a8 = 80 ; "Ottanta" ; a8 = 90 ; "Novanta" ; ) ;
a9 = If ( l3 > 2 ; n9 ; "" ) ;
b9 = Casi ( a9 = 1 ; "Cento" ; a9 = 2 ; "Duecento" ; a9 = 3 ; "Trecento" ;
a9 = 4 ; "Quattrocento" ; a9 = 5 ; "Cinquecento" ; a9 = 6 ; "Seicento" ;
a9 = 7 ; "Settecento" ; a9 = 8 ; "Ottocento" ; a9 = 9 ; "Novecento" ) ] ;
Proprio ( Sinistra ( b9 ; Lunghezza ( b9 ) - If ( a8 = 1 or a8 = 8 ; 1 ; 0 ) ) &
Sinistra ( b8 ; Lunghezza ( b8 ) - If ( a7 = 1 or a7 = 8 ; 1 ; 0 ) ) &
Sinistra ( b7 ; Lunghezza ( b7 ) - If ( /* a6 = 1 or */ a6 = 8 ; 1 ; 0 ) ) &
Sinistra ( b6 ; Lunghezza ( b6 ) - If ( a5 = 1 or a5 = 8 ; 1 ; 0 ) ) &
Sinistra ( b5 ; Lunghezza ( b5 ) - If ( a4 = 1 or a4 = 8 ; 1 ; 0 ) ) &
Sinistra ( b4 ; Lunghezza ( b4 ) - If ( /* a3 = 1 or */ a3 = 8 ; 1 ; 0 ) ) &
Sinistra ( b3 ; Lunghezza ( b3 ) - If ( a2 = 1 or a2 = 8 ; 1 ; 0 ) ) &
Sinistra ( b2 ; Lunghezza ( b2 ) - If ( a1 = 1 or a1 = 8 ; 1 ; 0 ) ) &
b1 ) & " // " & rest & If ( Lunghezza ( rest ) = 1 ; "0" ) ) ) )
FM8 ADV XP SP3

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: convertire numeri a testo, per assegni ?

Messaggio da PIG-NAH » martedì 23 dicembre 2008, 18:08

La parte finale della funzione ( il calcolo ) è da sistemare perchè presenta qualche problemuccio ma è di facile soluzione :mrgreen:

Con l'occasione gradirei un consiglio al riguardo, come si deve scrivere 888 ?

ottocentoottantotto ? ( doppia o )

oppure

ottocentottantotto ?

A me pare la seconda che ho detto ma mi potrei anche sbagliare :D
FM8 ADV XP SP3

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

Re: convertire numeri a testo, per assegni ?

Messaggio da raybaudi » martedì 23 dicembre 2008, 19:42

Come scrivi 108 ?

Come scrivi 180 ?

http://forum.wordreference.com/showthread.php?t=690238

http://it.wiktionary.org/wiki/centottanta

Parlando di assegni o di conti correnti, non ci perderei molto tempo e scriverei la formula con il risultato più facile da ottenere e cioè:

centootto
centoottanta

... e nel tuo caso la prima che hai detto: ottocentoottantotto.

Cioè lasciando invariata la parola "cento" ( forse l'unica che non abbia eccezioni, vedi uno - un dici, mille - mila, nove - dicia nnove )

Vorrei proprio vedere la Banca o l'Ufficio Postale che lo possa rifiutare :wink:

E' anche vero comunque che è molto facile cancellare una "o" dal risultato:

CercaeSost ( Risultato ; "oo" ; "o" )
Raybaudi FMP 12 Adv. Windows XP SP3

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: convertire numeri a testo, per assegni ?

Messaggio da PIG-NAH » mercoledì 24 dicembre 2008, 10:15

Caro ray, ti ringrazio molto della risposta con linkature dove si evince che si può scrivere in entrambi i modi ergo io ho scelto di scrivere così : Centottantottomilioniottomilaottocentootto // 00
Il codice originale restituisce questo : Centoottantottomilioniottomilottocentootto // 00 (manca una a)
Dunque chi gli va bene come il mio lo può sostituire con questo:

Proprio ( Sinistra ( b9 ; Lunghezza ( b9 ) - ( a8 = 80 ) ) &
Sinistra ( b8 ; Lunghezza ( b8 ) - ( a7 = 1 or a7 = 8 ) ) &
Sinistra ( b7 ; Lunghezza ( b7 ) ) &
Sinistra ( b6 ; Lunghezza ( b6 ) - ( a5 = 80 ) ) &
Sinistra ( b5 ; Lunghezza ( b5 ) - ( a4 = 1 or a4 = 8 ) ) &
Sinistra ( b4 ; Lunghezza ( b4 ) ) &
Sinistra ( b3 ; Lunghezza ( b3 ) - ( a2 = 80 ) ) &
Sinistra ( b2 ; Lunghezza ( b2 ) - ( a1 = 1 or a1 = 8 ) ) &
b1 ) & " // " & rest & If ( Lunghezza ( rest ) = 1 ; "0" ) ) ) )

baranbaran :mrgreen:
FM8 ADV XP SP3

wakatanka
Messaggi: 8
Iscritto il: mercoledì 23 gennaio 2008, 1:00
Località: Bellaria (Rimini)
Contatta:

Re: convertire numeri a testo, per assegni ?

Messaggio da wakatanka » lunedì 29 dicembre 2008, 10:12

Ragazzi, grazie a tutti, ci ho messo una settimana ma credo di avere capito come funziona (non ce l'avrei mai fatta da solo) :roll:

Buone Feste a tutti

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: convertire numeri a testo, per assegni ?

Messaggio da PIG-NAH » lunedì 29 dicembre 2008, 11:26

wakatanka ha scritto:Ragazzi, grazie a tutti, credo di avere capito come funziona
Beato te... ma l'importante è che funzioni :lol:

In effetti ci sono ancora diverse magagne tipo la variabile g1, come faccia la variabile a2 a essere uguale a 10 e così via dicendo... ma ad ogni modo è realistico dire che una funzione così lunga fa comodo trovarsela bella pronta e scodellata, nidificazioni degli if incluse 8)
FM8 ADV XP SP3

Alessio73
Messaggi: 458
Iscritto il: giovedì 9 agosto 2007, 2:00
Località: Formia (LT)

Re: convertire numeri a testo, per assegni ?

Messaggio da Alessio73 » giovedì 20 agosto 2009, 9:42

Che ne pensate di realizzare tutti insieme un file per compilazione automatica di bollettini postali??
Io vorrei cominciare ma cerco aiuto o qualcuno che ha già una base su cui lavorare.
----
FileMaker Pro Advanced 10 e 11 (Mac e PC)

Rispondi