Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Format con decimali ... sconosciuti

Devo esporre un campo di un database di cui non so niente, se non che è
numerico.
Bene, sto largo con interi e decimali, per esempio
    risultato=Format(rs!campo, "###,###,###,###.#######")
e mi piace, nel senso che occupa solo le "battute" previste dal numero.
Ma se il numero non ha decimali?
Mi trovo comunque il separatore interi/decimali in coda. ;-(
Ok:
If rs!campo<>fix(rs!campo) then
    risultato=Format(rs!campo, "###,###,###,###")
End If
E' pur vero che, _generalmente_, si prefissa il formato in funzione
dell'entità massima prevista, ma, dico, possibile che non si possa togliere
quel separatore se non ci sono decimali? Cosa mi sfugge? Grazie.

 ha scritto nel messaggio
news:b6ka35$682sp$1...@ID-174464.news.dfncis.de...
[hypercut]
Mi dispiaceva lasciare senza risposta una domanda fatta da colui che
risponde sempre a tutti, con la bellezza di oltre 500 post al mese.
Però una soluzione senza usare l'IF non l'ho trovata.
Ma del resto.... è il pensiero che conta..
Ah! Buono il torrone... :-)
Bye

 Ma se il numero non ha decimali?
risultato=Format(rs!campo, "###,###,###,###.0######")
non si può fare un formato differente per numeri interi e decimali, e la
cosa ha una sua logica: metti di dover incolonnare 10 e 2.5.
Per avere ordine devi averli entrambi con lo stesso formato, nella
fattispecie 10.0 e 2.5
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Ciao

 Mi sono capito? ;-)
non so se ho capito io. cmq:
Private Sub Form_Load()
    Debug.Print "1", Val(5)
    Dim s As String
    s = "5,"
    Debug.Print "2", Val(s)
    s = "5."
    Debug.Print "3", Val(s)
End Sub
controlla se ci sono decimali, seno' converti in stringa e prendi il val, o
simili.
ciao

 0
Allora l'unico modo è questo
Function MyFormat(ByVal Value As Double) As String
    If (Value <> CInt(Value)) Then
        MyFormat = Format$(Value, "###,###,###,###.#######")
    Else
        MyFormat = Format$(Value, "###,###,###,##0")
    End If
End Function


 non so se ho capito io. cmq:
...
Grazie a.p, ma ... non credo di essermi spiegato.
Ci riprovo: Immagina di avere un database, del quale non conosci niente!
Fai una routine che ne apre una tabella e ne deve esporre i contenuti.
Ovviamente scopri la tipologia di ogni campo e, per i numerici, ti poni il
problema di una formattazione espositiva. Bene, ma _non sai_ che tipo ed
entità di numeri (valori) ci puoi trovare dentro, perchè non ne conosci il
significato.
(ovvio che _se so_ che in quel campo c'è una qtà che può avere al max 5
interi e 3 decimali, provvedo un formato del tipo ##,###.###)
La mia era solo una "provocazione" che voleva dire: Perchè mai la Format,
che pure provvede a rappresentare i numeri "battendo" solo i digits presenti
anche se gli passi un formato mooolto ampio (per essere sicuro di poter
rappresentare ogni possibile valore), mi sbatte comunque il separatore
interi/decimali anche se un numero non ha decimali?
Insomma, se il formato ###.###.###.##### mi rappresenta (per 1234.56)
1.234,56 e quindi "ignora" i vari separatori (in eccesso) delle migliaia,
non mi ignora il 
sep.int/dec
 se il numero fosse 1234 (che mi rappresenta
come 1.234,)?

 End Function
E io ... cos'avevo detto? :-P

 Insomma, se il formato ###,###,###.##### mi rappresenta (per 1234.56)...

 ha scritto nel messaggio
news:b6m2nc$6eo0n$1...@ID-174464.news.dfncis.de...

 MyFormat = Format$(Value, "#,#.####")
o
MyFormat = Format$(Value, #,#")
ho adottato la soluzione sopra indicata, utilizzando il carattere # al
minimo.
Ad oggi nessun problema .
Non ho letto le controindicazioni ?
giuseppeD

 Mi trovo comunque il separatore interi/decimali in coda. ;-(
Forse non ho capito il problema, ma non puoi _toglierlo_ ?
if right$(risultato,1)="." then
    risultato = left$(risultato, len(risultato)-1)
end if
Lo so, è orrido, ma è uno "SporcoTrucco©" :-)
Bye, G.

Lo so, è orrido, ma è uno "SporcoTrucco©" :-)
anche perché il separatore dipende dalla locale...
Ciao,
Moreno
-- 
sirri at morenosoft dot com
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

 anche perché il separatore dipende dalla locale...
Pignòlo, eh ? :-P
dim strSeparaDec as string *1
Separatore= SeparatoreDecimale
if right$(risultato,1)=strSeparaDec then
    risultato = left$(risultato, len(risultato)-1)
end if
La funzione SeparatoreDecimale, il cui scheletro è:
*****************
Function SeparatoreDecimale as String
' questa funzione rileva il separatore decimale in uso
' che potrebbe essere diverso a seconda delle
' impostazioni internazionali impostate nel pannello
' di controllo
' inserire qui il codice della funzione :-P
End Function
*****************
e che rileva il separatore senza usare l'API GetLocaleInfo,
viene lasciata come compito a casa per lo studente ;-)
Hint ? beh, direi di no, basta una riga :-)
Bye, G.

 Hint ? beh, direi di no, basta una riga :-)
SeparatoreDecimale = Mid$(CStr(2.1), 2, 1)
Hovintoquaccheccosa?
-- 
<un Gigio2K e LE... SO.... TUTTEEEEE>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 Hovintoquaccheccosa?
Un caffè più tardi, se sei da queste parti.
Altrimenti domani, o dopo :-).
Un Paperino "firulì firulà" che ha appena postato
contro gli OT su 
I.C.CY
 :-))))

viene lasciata come compito a casa per lo studente ;-)
e che sarebbe? Una "[SFIDA]"? :-PP
