webForumDet fria alternativet
Logga in / Bli medlem

CInt?

ASP

13 svar · 244 visningar · startad av Inferis

Medlem sedan sep. 2000667 inlägg
Trådstart#1

Hur gör man för att kunna använda tex
1,5 + 3 + 4?

Heltal går bra, men har man komma med så skiter det sig!

summa=CInt(rs("Value1"))+CInt(rs("Value2"))+CInt(rs("Value3"))
Medlem sedan juni 200032 967 inlägg
#2

integer är heltal. om du ska ha decimaler får du använda någon annan subtyp, till exempel double eller single.

prova därför cdbl() istället.

det ska vara bra att veta också att det spelar roll om du har komma eller decimalpunkt. det beror på vad du har för regional settings på servern om du ska ha komma eller punkt.

mvh,

Medlem sedan sep. 2000667 inlägg
#3

Tack för ett ruggigt snabbt svar!
:-)

Ska genast prova!

*redigerat*
Funkade ju perfekt!
Tack igen!!

[Redigerat av Inferis den 19 jul 2001]

Medlem sedan sep. 2000667 inlägg
#4

Om man nu ska göra det hela lite krångligare...

Idag så kan man fylla i talen, men jag skulle vilja att man kunde välja tex
A, Ac, A1,C, D, D1 etc.

Det hela ska ju då passas in på följande kod om det går.

<td>
<%=rs("Value1")%><%=rs("Value2")%><%=rs("Value3")%></td>
<td>
<%
summa=cdbl(rs("Value1"))+cdbl(rs("Value2"))+cdbl(rs("Value3))   
%>
<%=summa%>

</td><td><%=FormatNumber(summa/222)*100%></td>

Det ska ju även presenteras som bokstäver, men procent och summa ska vara tal.

Medlem sedan dec. 200012 464 inlägg
#5

Tja, i så fall måste du in och titta på värdet om det innehåller någon siffra

 s = rs("value1")
 for i = 1 to len(s)
   if isNumeric(mid(s,i,1)) then
      summa = summa + cdbl(mid(s,i))
      exit for
   end if
 next
'
 s = rs("value2")
' på samma sätt
Medlem sedan sep. 2000667 inlägg
#6

Ska man fortsätta plussa på efterhand?
Typ
if isNumeric(mid(s,i,2)) then

Hur fattar scriptet att en A=8 och att A1=5,5 tex?

Medlem sedan dec. 200012 464 inlägg
#7

Jag tänkte mig att om du fick upp värdet "A12" från databasen så skulle man plocka ut värdet 12 och plussa på det. Och nu menar du att jag har missförstått allt eller?

Om du vill att värdet "A" tolkas som 8 och så vidare, så får du lägga in en mappningsfunktion.


function map(str)
if str = "A" then
   map = 8
elseif str = "A1"
   map = 5.5
...
else
   map = cdbl(str)
end if
end function
...
summa = summa + map(rs("value1")

Det går ju bra om det är få värden.

Medlem sedan sep. 2000667 inlägg
#8

Jag får bara syntax error?
Den klagar på
function map(str)

<td>
<% 

function map(str)
if str = "A" then
map = 8
elseif str = "A1"
map = 5.5

else
map = cdbl(str)
end if
end function

dim summa
summa= map(rs("Value1"))+map(rs("Value2"))+map(rs("Value3"))
%>
<%=summa%>

</td><td><%=FormatNumber(summa/222)*100%></td>

Det ska vara så förresten, att A=8, A1=5,5 och Ae=3,5
Finns några till. Det är jobbturer, så jag vill ju se antalet timmar och vad det blir i procent.

Medlem sedan dec. 200012 464 inlägg
#9

Glömde ett then där i all brådska.

function map(str)
if str = "A" then
map = 8
elseif str = "A1" [b]then [/b]
map = 5.5

else
map = cdbl(str)
end if
end function
Medlem sedan sep. 2000667 inlägg
#10

Får tyvärr fortfarande ett syntax error.

Ska det förresten vara

summa = summa + map(rs("value1")) + map(rs("value2")) osv

istället för


summa = map(rs("value1")) + map osv
Medlem sedan dec. 200012 464 inlägg
#11

Testade funktionen här hos mig och det gick bra.

Det stämmer att det skall stå

summa = summa + map(rs("value1")

Du får väl visa vad du har och vilken rad du får fel på.

Medlem sedan sep. 2000667 inlägg
#12

Jag har kapat lite kod som bara är onödig, men den klagar på line 281 som är markerad med blå fet stil.

<td>
<% 
dim summa
[b]function map(str)[/b]
if str = "A" then
map = 8
elseif str = "A1" then
map = 5.5

else
map = cdbl(str)
end if
end function

summa = summa + map(rs("Value1"))+map(rs("Value2"))+map(rs("Value3"))
%>
<%=summa%>

</td><td><%=FormatNumber(summa/222)*100%></td>
Medlem sedan dec. 200012 464 inlägg
#13

kan det vara så att funktionen ligger inuti en loop eller så

dvs

do until rs.eof
...
function map(str)
...
end function
...
loop

I så fall så får du flytta ut funktionskoden så att den ligger utanför loopar och dylikt.

Medlem sedan sep. 2000667 inlägg
#14

Tröga jag!

Visst låg den i en loop.

Kunde dock inte använda
summa = summa + map(rs("
utan fick använda
summa = map(rs("

Annars räknade den fel.

Tack ska du ha!!

260 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)