webForumDet fria alternativet

vaddå "overflow"?

24 svar · 594 visningar · startad av Mira

MiraMedlem sedan maj 2001966 inlägg
#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?

crisse6Medlem sedan dec. 20002 526 inlägg
#2

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

MiraMedlem sedan maj 2001966 inlägg
#3

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

MiraMedlem 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...?

crisse6Medlem sedan dec. 20002 526 inlägg
#5
If rs.eof then
proc = ""
else
proc    = Round(stat/roster*100)
'resten av koden
End IF
MiraMedlem 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?

MiraMedlem 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å...

solbulleMedlem 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%>
MiraMedlem sedan maj 2001966 inlägg
#9

en fråga till:

vad står EOF för?

solbulleMedlem sedan mars 20015 287 inlägg
#10

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

MiraMedlem sedan maj 2001966 inlägg
#11

istället för crisses kod menar du?

solbulleMedlem 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.

MiraMedlem 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...?

solbulleMedlem sedan mars 20015 287 inlägg
#14

Har du testat?

Jesper TMedlem 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.

MiraMedlem 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!

solbulleMedlem sedan mars 20015 287 inlägg
#17

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

Engine^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
MiraMedlem 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

Engine^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
%>
132 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)