Newsgroup: it.comp.lang.visual-basic
Titolo: problemi con virgola nei decimali

ciao a tutti!!!!
ho proprio bisogn di voi!!
devo fare questa cosa:
apro una connessione
rs.source="select [campo] from [tabella] where [campo1]=35,5"
rs.open, cn
e qui arrivano i problemi.......
nel database il [campo1] e' un decimal e i decimali sono separati dalla
virgola
pero' se io do alla select 35,5 vb mi da l'errore "sintassi non corretta in
prossimita' di ','
ho provato a dare anche 35.5 ma la select naturalmente non trova nessun
record...
qualcuno ha un'idea per ovviare all'inconveniente?????
vi ringrazio
kika
--------------------------------
Inviato via 
http://usenet.libero.it

 ho proprio bisogn di voi!!
Cut
In un form un pulsante ed una griglia
Option Explicit
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Tcon As String
Private Sub Form_Load()
Tcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\VB6_Lavori\Database\dbtest.mdb;Persist Security Info=False"
Cn.ConnectionString = Tcon
Cn.Open
End Sub
Private Sub Command1_Click()
'IMPOSTA LA GRIGLIA
grid.FixedCols = 0
'ASSOCIA IL RECORDSET
If Rs.State = adStateOpen Then
    Rs.Close
End If
Rs.Open "SELECT * FROM valori Where ValoreDecimal>33.35", Cn, adOpenKeyset,
adLockReadOnly
If Rs.BOF Then
    MsgBox "Recordset vuoto"
End If
Rs.MoveFirst
Set grid.Recordset = Rs
grid.Refresh
End Sub
Occhio che decimal č bastardo nell'anima!
ad esempio
se vuoi vedere 2 decimali devi mettere
scala =2
e
posizioni decimali=2
Ciauz!

 posizioni decimali=2
grazie, ma se io uso il punto invece che la virgola la select non trova
nessun record xche' nel database i valori sono formattati con la virgola
come separatore
correggimi se sbaglio ma l'ho gia' provato in ufficio e non funziona!!!!
e' qui il problema


 come separatore
Ma che dici?
Impara a distinguere subito la rappresentazione del valore da valore!
Altrimenti la prossima volta chiederai come mai le date che inserisci nel
formato yyyy/mm/dd lui le fa vedere come dd/mm/yyyy.
Come te le fa vedere (access?) dipende dalle impostazioni internazionali,
ovviamente il valore *NON* può cambiare in base a queste, altrimenti andando
su un altro PC non funzionerebbe più niente.
L'SQL (che sembrerà strano ha una sua sintassi ed è documentata nell'help)
accetta i numeri con il punto "." come separatore decimale.
Come li fa vedere poi il programma che usi non ha nessuna importanza.
Ciao
--
y = f(
http://neodatatype.interfree.it/index.html
)

 > Occhio che decimal è bastardo nell'anima!


 wrote in message
ajuitd$1vo$1...@lacerta.tiscalinet.it...


 e' qui il problema
CUT
e secondo te ho speso tempo per mandarti una cosa che non funziona?
sopratutto una cosa come questa?
....se non ti funziona il problema sta altrove bella!
In italia si usa il punto per le migliaia e la virgola per i decimali
ma il giorno si mette prima del mese.....
va un po in America e guarda che fanno!...l'esatto contrario di noi!
Pensa che casini se scrivi un programma e devi cambiarlo tutte le volte che
cambi stato!
Access benchè abitui MOLTO male chi lo usa ogni tanto si ricorda che deve
rispettare lo standard SQL (almeno un suo dialetto)
Guarda caso si usa il punto per i decimali INDIPENDENTEMENTE dalla sua
rappresentazione!
se la SQL
"SELECT * FROM valori Where ValoreDecimal>33.35"
BANALISSIMA, STUPIDISSIMA e quindi ha "fool proof"...
non ti trova nulla:
a) la più banale...non hai questi valori memorizzati ...non c'è nulla più
grande!
b) Ha trovato ma hai un errore nella visualizzazione...hai controllato se
rs.bof dopo l'apertura??? Se non è bof hai trovato...ma non li sai
visualizzare!
c) Stai cercando su un campo che non accetta quei valori
A riprova?
 prova il mio codice e provalo con un db di test fai una sola tabella
chiamata Valori
fatti un po di cmpi a caso
metti poi un campo chiamato "ValoriDecimal"
settalo a
Formato Standard
precisione 18
scala 2
posizioni decimali 2
Valore predefinito 0
e prova "homina di poca fede"!
Ciao!
(come son calmo!mah!....sarà il caldo?ma non doveva piovere???)

> Ma che dici?
chiedo perdono x la stupidaggine detta!!!!!!
comunque ho risolto con replace(cellachecontienecampo,",",".")


 comunque ho risolto con replace(cellachecontienecampo,",",".")
Esatto :)
