55 messaggi dal 12 settembre 2003
problema logico con somma di valori contenuti in variabili

pippo=1.5
paperino=1.5

se io do
somma=1.5+1.5
response.write somma

ok, a video esce 3

ma se io do

somma=pippo+paperino
response.write somma

a video mi ese 1.51.5

me li accoda....

11.886 messaggi dal 09 febbraio 2002
Contributi
il problema che hai non è esattamente uguale all'esempio che hai postato. Se fai così:

pippo=1.5
paperino=1.5
Response.write(pippo+paperino)

ricevi come risultato 3.

molto probabilmente tu stai ricevendo i valori da un form o dalla querystring. Per cui hai:

pippo = Request.Form("pippo")

non è la stessa cosa perchè attraverso Form e QueryString tutti i valori vengono trattati come stringhe.
Il + applicato a delle stringhe si comporta come l'operatore di concatenazione &
Devi eseguire un casting esplicito se vuoi che le tue stringhe numeriche vengano interpretate come numeri. Cioè fai:

pippo = CDbl(Request.Form("pippo"))

a questo indirizzo:
http://perl.nease.net/tech/vbsguide/38.htm
puoi trovare una spiegazione per ognuna delle funzioni di casting del vbscript.
ciao

Enjoy learning and just keep making
55 messaggi dal 12 settembre 2003
ho letto...ma non ho capito....

in pratica ho un recordo cosi composto

1giornata 2giornata 3 giornata ecc.... totale

in 1giornata e co. invio dei valori travite un form , per i numeri interi nn c'è problema ma per i numeri con la virgola si...allora, partendo dal presupposto che asp accetta il punto come separatore tra interi e decimali, io devo riprendere tutti i valori contenuti in essi, pulirli(se invece di contenere 1.5 contiene 1,5) sommarli e aggiornare il campo totale

Dim SQL1,Rec1
SQL1="SELECT * from classifica where id="&id                                                  
Set Rec1 = Server.CreateObject("ADODB.Recordset")
Set Rec1=Conn.Execute(SQL1)
tot1=replace(rec1("1giornata"),",",".")
tot2=replace(rec1("2giornata"),",",".")
tot3=replace(rec1("3giornata"),",",".")
tot4=replace(rec1("4giornata"),",",".")
tot5=replace(rec1("5giornata"),",",".")
tot5=replace(rec1("5giornata"),",",".")
tot6=replace(rec1("6giornata"),",",".")
tot7=replace(rec1("7giornata"),",",".")
tot8=replace(rec1("8giornata"),",",".")
tot9=replace(rec1("9giornata"),",",".")
tot10=replace(rec1("10giornata"),",",".")
tot11=replace(rec1("11giornata"),",",".")
tot12=replace(rec1("12giornata"),",",".")
tot13=replace(rec1("13giornata"),",",".")
tot14=replace(rec1("14giornata"),",",".")
tot15=replace(rec1("15giornata"),",",".")
tot16=replace(rec1("16giornata"),",",".")
tot17=replace(rec1("17giornata"),",",".")
tot18=replace(rec1("18giornata"),",",".")
tot19=replace(rec1("19giornata"),",",".")
tot20=replace(rec1("20giornata"),",",".")
tot21=replace(rec1("21giornata"),",",".")
tot22=replace(rec1("22giornata"),",",".")
tot23=replace(rec1("23giornata"),",",".")
tot24=replace(rec1("24giornata"),",",".")
tot25=replace(rec1("25giornata"),",",".")
tot26=replace(rec1("26giornata"),",",".")
tot27=replace(rec1("27giornata"),",",".")
tot28=replace(rec1("28giornata"),",",".")
tot29=replace(rec1("29giornata"),",",".")
tot30=replace(rec1("30giornata"),",",".")
tot31=replace(rec1("31giornata"),",",".")
tot32=replace(rec1("32giornata"),",",".")
tot33=replace(rec1("33giornata"),",",".")
tot34=replace(rec1("34giornata"),",",".")
tot35=replace(rec1("35giornata"),",",".")
tot36=replace(rec1("36giornata"),",",".")
tot37=replace(rec1("37giornata"),",",".")
tot38=replace(rec1("38giornata"),",",".")
somma=tot1+tot2+tot3+tot4+tot5+tot6+tot7+tot8+tot9+tot10+tot11+tot12+tot13+tot14+tot15+tot16+tot17+tot18+tot19+tot20+tot21+tot22+tot23+tot24+tot25+tot26+tot27+tot28+tot29+tot30+tot31+tot32+tot33+tot34+tot35+tot36+tot37+tot38
SQL2="Update classifica set totale="&somma&" where id="&id
Conn.Execute(SQL2)


ma mi da sempre errore nella stringa di upload perke i valori invece di sommarli li incolla...es

1giornata = 1.5
2giornata = 1.5
somma = 1.51.5 invece di 3....

help
3.122 messaggi dal 16 maggio 2002
Come ti ha detto Brightsoul, i valori vengono accodati perché sono trattati come stringhe.
Applicagli un CDbl prima di fare la somma e vedrai che funzionerà (occhio che la CDbl genera un errore se il parametro che gli passi non può essere convertito in numero).

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
55 messaggi dal 12 settembre 2003
ho provato con

CDbl(tot1=replace(rec1("1giornata"),",","."))

ma se 1giornata e 2giornata sono 1.5 la somma è 30 e non 3...

ps: che tipo di campo mi consigli, testo o numerico....no perke se metto numerico 1,5 me lo scrive 2 nel database...

3.122 messaggi dal 16 maggio 2002
Ovviamente numerico, ma di tipo float, non di certo int.
Il fatto che 1.5+1.5 ti restituisca 30 dipende evidentemente dal fatto che il server usa come carattere di separazione dei decimali la virgola e non il punto. Fai la replace inversa.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.