Newsgroup: it.comp.lang.visual-basic
Titolo: inserimento numeri decimali in textboxt

ciao a tutti, chiedo scusa se magari riposto una FAQ ma non sono
riuscito a trovare nulla in giro
il mio problema e' (credo) semplicissimo:
ho un applicativo vb6+access2000 (con Jet 4.0)
mi creo dei bellissimi recordset con il Dataenvironment e imposto
read/write in accesso
poi mi creo una form con dei textbox collegati all recordset
(datasource, datafield ecc. ecc.)
il tutto e' molto semplice e veloce
senonche' i guai cominciano quando ho a che fare con dei float con
decimali
il formato riesco a gestirlo tranquillamente e l'output dipende
(correttamente) dalle impostazioni internazionali
quindi se io ho nel db 3.5 vedo nel textbox 3,5 o 3.5 a seconda delle
impostazioni
ma se io devo fare un inserimento o una modifica e al posto di 3,5
scrivo 3,6 il cavolo di programma non capisce la virgola e mi scrive
36
mi sembra una cosa assolutamente incredibile
potrei fare un replace (punto/virgola) nell'evento validate ma non e'
che mi piaccia molto come idea
e' possibile che non ci sia modo per venirne a capo? dipende forse
dalle proprieta' della connessione col dataenvironment?
grazie a chi vorra' aiutarmi
Andrea

 mi sembra una cosa assolutamente incredibile...
<CUT>
Non è incredibile.
È l'unico modo per fare in modo che il sistema operativo che utilizzi
possa funzionare in paesi diversi dall'Italia ed anche possa adattarsi
alle diverse necessità degli utilizzatori.
Ogni Windows (ma anche Linux, Unix, MacOS e qualsiasi sistema operativo
'moderno') può avere impostazioni per i numeri (e le date, l'ora, la
valuta, ecc.) diverse (pannello di controllo > impostazioni
internazionali).
Prima di inserire i dati nella textbox e prima di scriverli nel db devi
convertirli in formati 'numerici validi' per il sistema operativo che
usi e le sue impostazioni. Vedi nella guida CInt, CLng, CDbl e gli altri
formati di conversione, perché sono lì apposta.
Sostituendo la virgola con il punto (o viceversa) non otterrai altro che
far funzionare il tuo programma SOLO nel tuo computer (ed in quelli
impostati come il tuo, che non è detto siano la maggioranza), e solo
finché qualcuno non modifica le impostazioni internazionali del tuo
piccì.
La programmazione prevede un certo numero di conoscenze 'di base'.
Questa è una delle tante :)
-> GbC
http://www.gbcweb.com
sniff... sniff...
...
mah... mi era sembrato...

 
ti ringrazio per la risposta (e per la fiducia ... :)  )
il punto e' un altro (e non mi sono spiegato)
io non ho controllo sulle impostazioni dell'utente, per cui io non so
quello che lui ha come output nella textbox (potrebbe avere 3.5 o 3,5
a seconda delle SUE impostazioni)
mi piacerebbe non dovermi neanche preoccupare di quello che lui
inserisce
quello che succede a me (ma magari sto sbagliando qualcosa) e' che
l'utente vede 3,5 e se vuole modificare il dato in 3,6 deve inserire
3.6
questo non puo' andare bene
Andrea

formati di conversione, perché sono lì apposta.
-> GbC
http://www.gbcweb.com
no, non mi ero sbagliato...

...

neanche io su di te ...

Considerazioni personali a parte, hai risolto?
Devi assicurarti che il formato che stai per usare (sia nella text che
prima di aggiornare il db) sia coerente con le impostazioni del SO. E
visto che sarebbe improponibile leggere le impostazioni e comportarsi di
conseguenza, si devono usare le funzioni di conversione cui accennavo
(che peraltro fanno esattamente ciň che ho appena definito
'improponibile'), che sono lě apposta.
-> GbC
http://www.gbcweb.com

 
http://www.gbcweb.com
ho risolto grazie (scusa ma mi ero un po' innervosito ...)
il problema nasceva dal fatto che io, per motivi che ora ti tralascio,
cercavo di settare le proprieta' datasource, datamember, datafield,
dataformat.format e dataformat.type a run-time (nell'evento load della
form)
evidentemente non si puo' fare
se do formato numerico con due decimali a design-time funziona che e'
un piacere, senza applicare conversioni
d'altra parte se uno non inserisce un valore numerico trappo l'errore
in un altro modo
ciao e grazie
Andrea