Newsgroup: it.comp.lang.visual-basic
Titolo: Variabile che cambia nella query

visual studio 2008 (VB)
 
Questa la query via visual basic
 
            Dim value1 As Double = Double.Parse(Me.Grid(n, "Costo"))
            Dim value2 As Double = Double.Parse(Me.Grid(n, "Totale"))
            Dim value As String = Replace(Me.Grid(n, "Descrizione"), 
"'","''")
 
value1 contiene il costo unitario prelevato da una grid dove il campo � 
impostato come valuta
value2 contiene il costo unitario prelevato da una grid dove il campo � 
impostato come valuta
value mi serve a cambiare una descrizione contenente 
apostrofo...es...(dell'acqua in dell''acqua)
per essere memorizzato regolamermente nel database
 
 
sql = "INSERT INTO Storico (Tavolo, Tipo, [Ora Inizio],
Quantita, Descrizione, Costo, Totale, [Ora Fine]) VALUES(" &
Val(LblTavolo.Text) & ", " _
            & "'" & Me.Grid(n, "Tipo") & "', '" & Me.Grid(n, "Ora") & "', "
& Me.Grid(n, "Qta") & ", '" & value & "', " _
            & value1 & ", " & value2 & ", '" & Date.Now & "')"
 
query dove vengono inseriti value1, value2 e value
 
            WriteDatabase(sql, ConnectionUser)
 
funzione che scrive nel database
 
 
value1 e value2 sono 2 valori valuta e nel database i campi sono stati
selezionati sia come valuta sia come numerico (precisione doppia)
ovviamente provando singolarmente perche non riuscivo a capire
dove stava l'errore.
i valori vengono prelevati da una griglia e sono valori valuta
value1=9.15
value2=18.30
 
il problema e che quando vengono inseriti nella query i valori vengono
cambiati in questo modo
 
value1=9,15 (virgola)
value2=18,30(virgola)
 
ma il valore originale ritornato dalla funzione double.parse e quello 
scritto in precedenza
 
 
ovviamente in queste condizioni risulta che la query non viene eseguita, ma
non riesco a capire il motivo per cui i valori vengono cambiati ovvero viene
cambiato la virgola al posto del punto regolarmente estratto dalla funzione
(Double.Parse
in queste condizioni WriteDatabase che � la funzione di scrittura nel
database riceve come sql dei valori con virgola e non viene eseguita
 
Grazie a tutti per qualsiasi suggerimento in merito anche se sinceramente 
non riesco a capire come delle variabili vengono cambiate durante un 
posizionamento in una stringa query 
 

 posizionamento in una stringa query
 
quando imparerete che le query non si compongono concatenando le 
stringhe ma usando i parametri sarï¿œ sempre troppo tardi :-)
 
il problema l'hai proprio evidenziato tu, la query ï¿œ una stringa e i 
valori sono dei numeri, quando metti insieme pere e mele c'ï¿œ per forza 
una conversione, e in questo caso la conversione comporta anche 
l'ingresso in campo del problema della globalizzazione: come voglio che 
venga convertito un numero non interno in una stringa? quanti decimali? 
quale separatore dei decimali? etc...
 
Non sapendo che db utilizzi ti passo un articolo che parla di parametri 
in un contesto leggermente diverso ma riassume bene le cose da fare:
http://msdn.microsoft.com/it-it/library/57hkzhy5(v=vs.90).aspx
 
 
.m
 
-- 
blog @ //
milestone.topics.it
 
 
 

premesso che l'esempio da te postato ï¿œ sql ed io sono solo ad access
 
quindi come dici scrivere in un stringa sql  una data in questo modo ed 
inviarla per la scrittura non serve a niente????
#03/02/2012 01:03:59 PM#
comunque a me sembra, ma sicuramente sto dicendo una sciocchezza che access 
non accetti i parametri
e quindi devo risolvere il problema differentemente
 
ma ora ti faccio una domanda molto terra terra
se il mio campo contiene ï¿œ 12,00
dim value1 as double= double.parse(miocampo)
 
value1 contiene 12.0
perche non va in errore e non cambia in 12,0 ???
comunque al di la di tutto speravo in una risoluzione del problema e non in 
una critica
 
 
"Mauro Servienti [MVP]"  ha scritto nel messaggio 
news:mn.24977dd56...@online.nospam...



 
te l'ho data eccome la soluzione, di certo non ti puoi aspettare il 
codice bello e pronto, per quello ci sono i consulenti a pagamento, non 
i newsgroup "a gratis".


Forse bastava semplicemente dire
 
str(value1)
str(value2)
 
senza pagare nessuno
comunque grazie
 
"Mauro Servienti [MVP]"  ha scritto nel messaggio 
news:mn.2a797dd5e...@online.nospam...


 comunque grazie
 
che infatti ï¿œ la soluzione sbagliata al tuo problema, ma del resto ï¿œ un 
tuo problema.
Basterebbe aver voglia fi leggere gli articoli che ti ho postato, 
impareresti qualche cosa, non pagheresti nessuno e risolveresti anche 
il tuo problema, pensa quante cose puoi fare gratis con l'aiuto di chi 
c'ï¿œ qua (che per inciso lo fa gratis) invece pretendi.
 
Stammi bene,


 comunque grazie
 
Str è sbagliata per mille motivi, non ultimo il fatto che esiste solo come funzione di compatibilità a VB6, visto che le alternative native del framework sono migliori
 
Se proprio non ti garbano i parametri e vuoi proseguire con le query fatte a quel modo, almeno fallo con criterio: datti una bella occhiata ai metodi String.Format e soprattutto al metodo .ToString di tutti i tipi primitivi... 
 
Non solo puoi rendere il codice molto più leggibile evitando tutte quelle concatenazioni, ma, come nel discorso dell'altro thread, ti offrono gli strumenti per poter fare formattazione di dati verso culture esplicite dove, nel caso del dialetto SQL (penso senza eccezioni, qualunque RDBMS), per i numeri viene sempre seguita quella "en-US"