Newsgroup: it.comp.lang.visual-basic
Titolo: domandina curiosa

se trasferisco il contenuto di un campo numerico di un database in una
textbox (sia agganciando direttamente la control al controllo data, sia da
codice) nella suddetta textbox mi compare un numero con la virgola per
separatore decimali.
adesso io voglio che tutte le volte che premo un tasto per modificare tale
valore (evento KeyUp), ad es. prezzo di listino in euro,  mi venga
ricalcolato l' importo relativo al prezzo scontato, visualizzato in un'altra
textbox.
problema:
VB mi spara una cifra con la virgola nella textbox, però riconosce il punto
come separatore di decimali nella funzione val().
soluzione adottata:
piccola routine che sostituisce il punto alla virgola prima di effettuare il
calcolo
funziona ma mi sembra a dir poco un assurdo
voi che ne dite?

 ha scritto nel messaggio
news:L9lB7.6706$C57.1...@news1.tin.it...

scusa se sono invadente, mi posteresti la routine?
potrebbe essermi utile.
Davide

 wrote in message
news:L9lB7.6706$C57.1...@news1.tin.it...

Non so se ho capito bene, cmq ci provo.
Considerando che la virgola te la mette il DB, suppongo sia un
campo currency, quindi penso che basterebbe convertire il valore
della casella di testo in currency nell'evento keyup e poi fare i
calcoli che servono.
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
   Text2 = CCur(Text1) * 10 / 100
End Sub
-- 
Posted from 
ppp-38-248.27-151.libero.it
 [151.27.248.38] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:HNmB7.85647$1H1.8...@news.infostrada.it...


Adesso vi spiego cosa succede a me.
Ho le impostazioni internazionali di Windows impostate
sull'italiano.
In Access va tutto bene, nelle maschere che utilizzo.
Lo stesso campo associato ad una textbox fa casini da vb.
Inserisco il numero
    120,2
e appena esco dalla text box (perde il focus)
il numero si trasforma in 1202
Cioè la virgola viene considerata come separatore
delle migliaia e siccome il suo posto è errato viene eliminata.
Se inserisco
    120.2
Invece appena la textbox in questione perde il focus
il numero si trasforma in 120,2.
Quello che non riesco a capire è che non c'è nessun evento
associato alla text box
Se qualcuno ne capisce qualcosa (ho già postato la questione
dieci giorni fa) sarei lieto di ascoltarlo
                                                    danilo


Scusa se ho fatto un post inopportuno però al corso che sto facendo il
comando replace non l'abbiamo fatto, oppure ci dobbiamo ancora arrivare,
quindi nemmeno volendo avrei potuto riuscirci da solo.
Grazie.
Davide

 > > VB mi spara una cifra con la virgola nella textbox, perň riconosce il


Dunque, facciamo un po' di chiarezza.
1) La virgola non la mette il DB, nè il VB, ma la mette l'utente.
2) Probabilmente non è il caso dei tre signori alle prese con questo
problema, ma in generale la virgola non è né una virgola nè un punto, nè
altro carattere individuabile a priori, perché è semplicemente un simbolo
matematico che sta ad indicare che lì si passa dalle unità ai decimi. In
altre parole, per noi italiani la virgola è, appunto, una virgola, ma per
gli americani è un punto (infatti loro non la chiamano "comma" ma "dot");
però per gli africani bantù, per quanto ne so io, potrebbe benissimo essere
un "%" oppure un  "#" oppure qualunque altro carattere che noi non abbiamo
nemmeno sulla tastiera. Dunque, attenzione: fare una routine che sostituisca
la virgola con il punto o il punto con la virgola o quello che volete voi
concettualmente è sbagliato.
Fate fare il "lavoro sporco" al sistema operativo: invece della funzione VAL
(da dimenticare) usate la CDBL (se il dato è un Double...) che tiene conto
del carattere di separazione dei decimali SCELTO dall'utente nel pannello di
controllo, intercettate opportunamente eventuali errori (la funzione VAL li
ignora semplicemente, troncando i dati al primo carattere non riconosciuto)
e poi avrete bell'e pronto il dato da inserire nel database.
3) Sembrerà una banalità, ma ricordatevi che nelle TextBox non viene
memorizzato un numero ma una stringa. Il fatto che VB converta i dati in
automatico a volte invece di semplificare le cose crea dei problemi.
Buon lavoro.
Carlo.

Hai perfettamente ragione, ma io ho già provato di tutto
(compresa ovviamente la cxxx invece della val), il problema
è che mentre O.S. ha un settaggio sembra che vb ne consideri
un altro.
                                                    danilo