Newsgroup: it.comp.lang.visual-basic
Titolo: Format di Numeri senza virgola

Chi sa dirmi perchè nel seguente codice, Importo, nel caso in cui Valuta sia
uguale a "Lire" e non abbia decimali, non cambia (è proprio il caso di
dirlo) di una virgola?
Come potrei fare?
Public Function Formatta(Importo As Double, Valuta As String) As Double
If Valuta = "Euro" Then
    Formatta = Format(Importo, "###,##0.00")
ElseIf Valuta = "Lire" Then
    Formatta = Format(Importo, "###.###.###")
End If
End Function
---------------------------------------------------------------
Giovanni Lauria
wild...@libero.it
giovann...@tiscalinet.it
giovann...@libero.it
---------------------------------------------------------------
WRSoft - Software & Rigenerazione
Viale Montedarena, 80
74026 Pulsano (TA)
Tel./Fax: 099.531.49.24
Cell. 347.656.64.36
---------------------------------------------------------------
http://web.tiscalinet.it/wrsoft
wrs...@tiscalinet.it

 End Function
[SNIP]
Hai confuso i separatori nel secondo Format:
Formatta = Format(Importo, "###,###,##0")
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 Formatta = Format(Importo, "###,###,##0")
Rileggendo, mi sono accorto che c'e' un'altro problema piu' importante:
La funzione deve restituire una *stringa*, non un Double o, in generale, un
qualsiasi tipo numerico che non puo' avere formattazione in se...


 ha scritto nel messaggio
|> news:Vo5J7.104595$sq5.4...@news.infostrada.it...
|> > Chi sa dirmi perchč nel seguente codice, Importo, nel caso in cui Valuta
|> sia
|> > uguale a "Lire" e non abbia decimali, non cambia (č proprio il caso di


 errati, da cosa può dipendere tutto ciò?
Il separatore delle migliaia usato nella Format è quello impostato
dall'utente nel pannello di controllo. Non è che c'è un carattere null ("")?
Ciao,
Carlo.


wrote:


 E' come se la format non esistesse...
Prova a sostituire:
Formatta = Format(Importo, "###,###,###")
Con:
Formatta = Format(Importo, "###,###,##0")
Ciao,
Carlo.


wrote:

Giovanni Lauria
Responsabile WRSoft Provincia di Taranto
wrsoft...@tiscalinetNOSPAM.it

 Grazie
[SNIP]
Guarda bene il messaggio sopra: non devi *passare* una stringa, devi
*restituire* una stringa.
Tagliando la testa al toro, ecco la tua funzione con le 2 correzioni
necessarie:
Public Function Formatta(Importo As Double, Valuta As String) As String
If Valuta = "Euro" Then
    Formatta = Format(Importo, "###,##0.00")
ElseIf Valuta = "Lire" Then
    Formatta = Format(Importo, "###,###,##0")
End If
End Function
se poi posso permettermi un suggerimento "stilistico", oltre a passare i
parametri per valore, invece che per riferimento, sarebbe meglio definire
due costanti numeriche, oppure un Enum, con le due possibili valute ed
utilizzarli al posto della stringa letterale, a scanso di problemi; la
versione ulteriormente modificata sarebbe
Public Enum EValuta
    cEuro = 0
    cLire = 1
End Enum
Public Function Formatta(ByVal Importo As Double, _
        ByVal Valuta As EValuta) As String
If Valuta = cEuro Then
    Formatta = Format(Importo, "###,##0.00")
ElseIf Valuta = cLire Then
    Formatta = Format(Importo, "###,###,##0")
End If
End Function


Fatto...
Grazie a tutti per l'aiuto...
: )


Giovanni Lauria
