Newsgroup: it.comp.www.asp
Titolo: Solo voi potete aiutarmi!

Come ho già avuto modo di scrivere, sto revisionando un sito purtroppo non
scritto da me, e questo problema me lo porto dietro da un pò...
Spero nel vostro aiuto o in quello di San Daniele (santo perché mi ha sempre
aiutato!).
Ho un file 'carrello.asp' che funziona come qualsiasi carrello di siti che
vendono online, e con la possibilità di aumentare il numero di prodotti
acquistati. Quando aumento il numero parte una query di aggiornamento
('carrelli' è la tabella dove sono memorizzati i prodotti nel carrello
legati all'utente).
I controlli inseriti all'inizio li ho messi per vedere i valori:
 response.write(prezzocd)                    // stampa 10.33
 response.write(quantitacd)                    // stampa 2 (prodotti
richiesti)
 response.write(round(prezzocd,2))        // stampa 10.33
 response.write(clng(quantitacd))            // stampa 2
 fp_sQry = "UPDATE carrelli SET carrelli.quantita =
'"&quantitacd&"',carrelli.prezzo = '"& round(prezzocd,2)*clng(quantitacd)&"'
WHERE (((Carrelli.utente)="& clng(session("utente")) &") AND  
carrelli.id
 =
"&clng(request.querystring("id"))&");"
dopo la query il valore in carrelli.prezzo è 2066 (duemilasessantasei),
stessa cosa se scrivo il prodotto in questo modo:
'"&round(prezzocd,2)" * "&quantitacd&"'
Vi prego datemi un consiglio!
Nel DB il campo è Valuta con 2 cifre decimali, comunque se viene memorizzato
10.33 non vedo perché no 20.66... dov'è il problema? nella moltiplicazione?
nella virgola o nel punto?
Grazie.

 '"&round(prezzocd,2)" * "&quantitacd&"'
Hai provato a stampare a video la stringa Sql prima di eseguirla?
Che impostazioni internazionali hai?
--
Filippo Di Blasi 
fil...@puntoinformatico.it
http://puntoinformatico.it
 <-- E-shop informatico
http://puntoinformatico.it/usato
 <-- Usato
http://puntoinformatico.it/servizi
 <-- Servizi web

Beh innanzitutto controlla il valore di  round(prezzocd,2)*clng(quantitacd).
Se questo da 20.66 (come dovrebbe dare) allora il problema è nell'update. Se
non da 20.66 allora il problema è da qualche altra parte ma mi sembra
veramente strano :)
se il problema è nell'update, fai questa prova: associa la moltiplicazione
ad una variabile (es: cPrezzo = round(prezzocd,2)*clng(quantitacd) ) e dopo
fai la replace in cPrezzo del punto con la virgola. Dopo prova a fare
l'update mettendo in carrelli.prezzo il valore di cPrezzo con la virgola al
posto del punto. Se ora ti interisce il valore correttamente (cioe se
inserisce 20.66) allora probabilmente devi fare una cast nell'inserimento.
prova con
" .....CAST('" & round(prezzocd,2)*clng(quantitacd) & "' AS Money)
Dovrebbe funzionare :)
Ciao
--
Alessandro
UGIdotNET - 
http://www.ugidotnet.org

 Che impostazioni internazionali hai?
Se stampo l'operazione mi da 20.66... il problema probabilmente è che dovrei
inserire il valore nel DB come 20,66...
Che intendi per impostazione internazionali?
Scusa ma sono autodidatta!
CiAO, David.

> " .....CAST('" & round(prezzocd,2)*clng(quantitacd) & "' AS Money)
Se scrivo questa espressione mi da:
[Microsoft][ODBC Microsoft Access 97 Driver] Syntax error (missing operator)
in query expression 'CAST('20.66' AS Money)'.
Grazie ancora.

> Beh innanzitutto controlla il valore di
round(prezzocd,2)*clng(quantitacd).
Credo che il problema sia nella virgola o punto:
se scrivo nella query " carrelli.prezzo = '"&prezzcd&"' " mi da:
[Microsoft][ODBC Microsoft Access 97 Driver] Data type mismatch in criteria
expression.
Forse allora devo configurare dopo la moltiplicazione 2066 come 20,66
(virgola)... perché sapete come me che se in vb faccio 10,33*2 deve essere
10.33*2 (con il punto)...
Ora il problema è che non so cosa sia il CAST, e come si faccia il REPLACE
del punto con la virgola...
Puoi aiutarmi?
Grazie, David.

Argh non avevo capito che usavi access..
allora con access il cast te lo freghi, non c'e' molto da fare....
allora prova a fare cosi': tu hai la variabile cPrezzo che contiene 20.66
per fare la replace basta fare replace(cstr(cPrezzo),".",",")
cosi' in teoria dovrebbe funzionare!


 per fare la replace basta fare replace(cstr(cPrezzo),".",",")
Sembra funzionare... non hai idea di che aiuto mi hai dato!
Grazie molte!
CiAO, David.

 Grazie molte!
Di niente!
