webForumDet fria alternativet

vaddå "overflow"?

ASP

24 svar · 598 visningar · startad av Mira

Medlem sedan maj 2001966 inlägg
Frågan#1

Så här ser min kod ut:

<%Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& PollId)
  roster = RS("tot")
RS.Close
Set RS = nothing
Set RS = Conn.Execute("Select * From svar Where PollID = " & PollId &" Order By svarnr")

Do Until RS.EOF
stat     = RS("klick")
proc    = Round(stat/roster*100)
If stat <> 0 Then
   res      = (stat/roster) * BreddF / Storlek
Else
   res = "0"
End If%>

och då får jag error "overflow" på denna rad:

proc    = Round(stat/roster*100)

Vad är fel?

Medlem sedan dec. 20002 526 inlägg
#2

antar att det ar nagot av stat eller roster som inte innehaller nat...

Medlem sedan maj 2001966 inlägg
#3

Menar du att det står så så länge ingen har röstat?

Medlem sedan maj 2001966 inlägg
#4

Hur gör jag för att koden inte ska ge felmeddelande om ingen har röstat - för då kommer ju ingen åt att rösta...?

Medlem sedan dec. 20002 526 inlägg
#5
If rs.eof then
proc = ""
else
proc    = Round(stat/roster*100)
'resten av koden
End IF
Medlem sedan maj 2001966 inlägg
#6

Håller på att testa...
men om jag lägger in din kod ist. för proc = Round(stat/roster*100) så får jag fel: Object required: 'RS'
och om jag lägger den innan RS.close så får jag "overflow" igen...
Vad göra?

Medlem sedan maj 2001966 inlägg
#7

äsch, jag la det ju på fel ställe... så går det när man väntar så länge på att testa... får se imorron natt om det funkar då...

Medlem sedan mars 20015 287 inlägg
#8
Do Until RS.EOF
stat     = RS("klick")
If stat <> 0 Then
   proc    = Round(stat/roster*100)
   res      = (stat/roster) * BreddF / Storlek
Else
   res = "0"
End If%>
Medlem sedan maj 2001966 inlägg
#9

en fråga till:

vad står EOF för?

Medlem sedan mars 20015 287 inlägg
#10

End Of File eller något liknande, i alla fall den innebörden.

Medlem sedan maj 2001966 inlägg
#11

istället för crisses kod menar du?

Medlem sedan mars 20015 287 inlägg
#12

Min tanke var att du i din orginalkod bara flyttar in raden:
proc = Round(stat/roster*100)
innanför kollen av "stat" - innehåller den något så lär ju "roster" innehålla något och det är ok att köra din division.

Medlem sedan maj 2001966 inlägg
#13

men innan någon har röstat så innehåller inte "stat" (=antal röster på ett svarsalt.) något heller - och då blir det väl ändå error...?

Medlem sedan mars 20015 287 inlägg
#14

Har du testat?

Medlem sedan nov. 20017 144 inlägg
#15

Annars så finns det en färdig funktion för detta i vbscript.

Dim MyPercent
MyPercent =[b] FormatPercent[/b](2/32)  ' MyPercent contains 6.25%.

Läs mer här.

Medlem sedan maj 2001966 inlägg
#16

Solbulle: nu har jag testat (orkade inte ladda upp en ny poll, så jag var tvungen att vänta tills en ny fråga aktiverades) - och det funkade med din kod. Tack!

Medlem sedan mars 20015 287 inlägg
#17

He he, där ser man. Va bra då. :)

Medlem sedan dec. 20003 887 inlägg
#18

Vore jag du skulle jag kolla så att roster inte är noll. Division med 0 ger alltid overflow.

If Not roster = 0 Then
  proc = FormatPercent(stat / roster)
  res = (stat / roster) * BreddF / storlek
Else
  proc = 0
  res = 0
End If
Medlem sedan maj 2001966 inlägg
#19

Nu fattar jag...
Det såg ut att funka bra med Solbulles kod, men nu när det inkommit röster så ser jag att på dom alternativ som är "nollade" står det 100%.
Vad som saknas är alltså denna rad efter Else: proc = "0"

Engine: antar att man måste utgå från "stat" för att det ska bli rätt - för procenten ska skrivas ut för varje "stat"... eller nåt

Medlem sedan dec. 20003 887 inlägg
#20

Nja.. oavsett vad stat har för värde, så kan divisionen utföras. Problemet är väl att stat kan vara null.

Do Until RS.EOF
  stat = ""

  If Not IsNull(RS("klick")) Then stat = RS("klick")
  
  If Not roster = 0 And Not stat = "" Then
    proc = FormatPercent(stat / roster)
    res = (stat / roster) * BreddF / storlek
  Else
    proc = 0
    res = 0
  End If

  RS.MoveNext
%>
266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)