RickyGtz
asked on
Overflow Division by Zero
I am trying to figure out why is that my code gets an overflow, I know somehow is dividing by a null or zero value , but I want it to actually get the value from a variable.
I think the error is whitin line 163 , so I commented out
I think the error is whitin line 163 , so I commented out
set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from Scores WHERE SSN = '" & session("username") & "'"
rs.Open sql,conSQL,3,3
if rs.recordcount = 0 then trigger = 2
'---------------------------------------
if trigger <> 2 then
dim eagleCount, birdieCount, parCount, bogeyCount, doubleCount, otherCount, totalCount
'right here...............dim avg18, low18, high18
eagleCount = 0
birdieCount = 0
parCount = 0
bogeyCount = 0
doubleCount = 0
otherCount = 0
totalCount = 0
rs.movefirst
while not rs.eof
call breakdown
rs.movenext
wend
dim numRecords18
dim numRecords9
dim average18
dim average9
dim lowRound18
dim lowRound9
dim highRound18
dim highRound9
call findCount("Full", "Full", numRecords18)
call findAverage("Full", "Full", numRecords18, average18)
call findLowest("Full", "Full", lowRound18)
call findHighest("Full", "Full", highRound18)
call findCount("Front", "Back", numRecords9)
call findAverage("Front", "Back", numRecords9, average9)
call findLowest("Front", "Back", lowRound9)
call findHighest("Front", "Back", highRound9)
dim average3
dim average4
dim average5
call findAllTHIS(3, finalAverage)
average3 = finalAverage
call findAllTHIS(4, finalAverage)
average4 = finalAverage
call findAllTHIS(5, finalAverage)
average5 = finalAverage
end if '---------------------------------------
sub breakdown()
dim startHere
dim endHere
dim difference
dim hole
if rs("Round") = "Full" then
startHere = 1
endHere = 18
elseif rs("Round") = "Front" then
startHere = 1
endHERE = 9
else
startHERE = 10
endHERE = 18
end if
set rs2 = Server.CreateObject("ADODB.Recordset")
sql2 = "SELECT * from CourseHoles WHERE CourseID =" & rs("CourseID") & " AND Difficulty = 'Par'"
rs2.Open sql2, conSQL
for hole = startHere to endHere
difference = cint(rs("H" & hole)) - cint(rs2("h" & hole))
select case difference
case -2
eagleCount = eagleCount + 1
case -1
birdieCount = birdieCount + 1
case 0
parCount = parCount + 1
case 1
bogeyCount = bogeyCount + 1
case 2
doubleCount = doubleCount + 1
case else
otherCount = otherCount + 1
end select
next
totalCount = eagleCount + birdieCount + parCount + bogeyCount + doubleCount + otherCount
rs2.close
set rs2 = nothing
end sub
sub findCount(theCase1, theCase2, byref numRecords)
numRecords = 0
rs.movefirst
while not rs.eof
if rs("Round") = theCase1 or rs("Round") = theCase2 then numRecords = numRecords + 1
rs.movenext
wend
end sub
sub findAverage(theCase1, theCase2, theCount, byref theAverage)
dim total
total = 0
rs.movefirst
while not rs.EOF
if rs("Round") = theCase1 or rs("Round") = theCase2 then total = total + cint(rs("Total"))
rs.movenext
wend
if thecount = 0 then theAverage = 0 else theAverage = total/theCount
end sub
sub findLowest(theCase1, theCase2, byref theLowest)
dim lowest
rs.movefirst
lowest = 1000
while not rs.eof
if rs("Total") < lowest and (rs("Round") = theCase1 or rs("Round") = theCase2) then lowest = rs("Total")
rs.movenext
wend
if lowest = 1000 then theLowest = "-" else theLowest = lowest
end sub
sub findHighest(theCase1, theCase2, byref theHighest)
dim highest
rs.movefirst
highest = -1000
while not rs.eof
if rs("Total") > highest and (rs("Round") = theCase1 or rs("Round") = theCase2) then highest = rs("Total")
rs.movenext
wend
if highest = "-1000" then theHighest = "-" else theHighest = highest
end sub
sub findAllTHIS(findTHIS, finalAverage)
dim grandTotal
dim totalCountTHIS
grandTotal = 0
totalCountTHIS = 0
rs.movefirst
while not rs.eof
recordTotal = 0
countTHIS = 0
call findTHISaverage(findTHIS, recordTotal, countTHIS)
grandTotal = grandTotal + recordTotal
totalCountTHIS = totalCountTHIS + countTHIS
rs.movenext
wend
'I have to look at here to see why in dividing by a zero value
finalAverage = grandTotal/totalCountTHIS
end sub
sub findTHISaverage(findTHIS, recordTotal, countTHIS)
dim startHere
dim endHere
if rs("Round") = "Full" then
startHere = 1
endHere = 18
elseif rs("Round") = "Front" then
startHere = 1
endHERE = 9
else
startHERE = 10
endHERE = 18
end if
set rs2 = Server.CreateObject("ADODB.Recordset")
sql2 = "SELECT * from CourseHoles WHERE CourseID =" & rs("CourseID") & " AND Difficulty = 'Par'"
rs2.Open sql2, conSQL
for hole = startHere to endHere
if rs2("h" & hole) = findTHIS then
recordTotal = recordTotal + rs("H" & hole)
countTHIS = countTHIS + 1
end if
next
'response.write(recordTotal & "." & count3 & "..." )
rs2.close
set rs2 = nothing
end sub
rs.close
set rs = nothing
%>
ASKER
I dont think vbasic has try catch statments. I am using classic asp and visual basic
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Try something like this code:
Open in new window