webForumDet fria alternativet

röstnings mojs...

ASP

18 svar · 363 visningar · startad av Rodan

Medlem sedan juli 20021 523 inlägg
Frågan#1

Hej

jag har problem med en röstnings funktion till ett community med ca 2000 medlemmar

felmeddelandet är
Feltyp:
Körningsfel i Microsoft VBScript (0x800A005E)
Ogiltig användning av Null: 'Round'
/whois.asp, line 341

det meddelandet får jag hos medlemmar som inte har några röster.

men dom som har röster får jag inget fel meddelande...

här e där den visar hur många röster man har.

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("databas")&";pwd=lååångt lösenord" 
SQL = "SELECT * FROM members WHERE id = " &Request.QueryString("checkid")
Set RecSet = Conn.Execute(SQL) 

TotalaRoster = RecSet("TotalaRoster") 
Poang = RecSet("Poang2") 

Poang = 0 + Poang
TotalaRoster = 0 + TotalaRoster

    Snitt = Round(Poang / TotalaRoster,2)

RecSet.Close 
Conn.Close 

Response.Write "<b>Genomsnittligt betyg:</b> "&Snitt&" (på "&TotalaRoster&" röster)"

hoppas nån som kan hjälpa mig..

H/rodan

Medlem sedan jan. 20032 285 inlägg
#2
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("databas")&";pwd=lååångt lösenord" 
SQL = "SELECT * FROM members WHERE id = " &Request.QueryString("checkid")
Set RecSet = Conn.Execute(SQL) 

TotalaRoster = RecSet("TotalaRoster") 
Poang = RecSet("Poang2") 

Poang = 0 + Poang
TotalaRoster = 0 + TotalaRoster

If NOT IsNull(Poang) Then
    Snitt = Round(Poang / TotalaRoster,2)
End If

RecSet.Close 
Conn.Close 

Response.Write "<b>Genomsnittligt betyg:</b> "&Snitt&" (på "&TotalaRoster&" röster)"
Medlem sedan juli 20021 523 inlägg
#3

nej... det funkar inte

för att spill det fixar decimal teckent

typ man får 1 röst

vanligt vis= 1
me spill = 1,00

Medlem sedan juli 20021 523 inlägg
#4

ingen ?

Medlem sedan mars 20015 287 inlägg
#5

Rodan skrev:

nej... det funkar inte

för att spill det fixar decimal teckent

typ man får 1 röst

vanligt vis= 1
me spill = 1,00

Jag fattar inte...

Spill?

Medlem sedan juli 20021 523 inlägg
#6

va säger jag :P

snitt mena jag :P

Snitt = Round(Poang / TotalaRoster,2)

Medlem sedan mars 20015 287 inlägg
#7

Kanske:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("databas")&";pwd=lååångt lösenord" 
SQL = "SELECT * FROM members WHERE id = " &Request.QueryString("checkid")
Set RecSet = Conn.Execute(SQL) 

TotalaRoster = RecSet("TotalaRoster") 
Poang = RecSet("Poang2") 

Poang = 0 + Poang
TotalaRoster = 0 + TotalaRoster

If TotalaRoster > 0 Then
    Snitt = Round(Poang / TotalaRoster,2)
	Response.Write "<b>Genomsnittligt betyg:</b> "&Snitt&" (på "&TotalaRoster&" röster)"
Else
	Response.Write "<b>Genomsnittligt betyg:</b> Du får inget betyg eftersom ingen röstat på dig!"
End If

RecSet.Close 
Conn.Close
Medlem sedan juli 20021 523 inlägg
#8

nu funkar det nästan :(
jag får inget felmeddelande.. men problemet är att när jag röstar på nån som inte har några poäng... så händer det inget... alltså jag skickas vidare som den ska göra men personen får inga poäng...

Medlem sedan mars 20015 287 inlägg
#9

Hur ser koden som lägger till rösten ut då?

Medlem sedan juli 20021 523 inlägg
#10

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("databasen")&";pwd=lååååånngg lösenord"
SQL = "UPDATE members SET Poang2 = Poang2+"&Request.Form("betyg")&", TotalaRoster = TotalaRoster+1 WHERE ID = "&Request.Querystring("checkid")&"" 
Conn.Execute(SQL) 

Conn.Close 

Response.Redirect "whois.asp?checkid=" &session("id")
Medlem sedan jan. 20032 285 inlägg
#11
strSQL = "SELECT * FROM members WHERE ID = " & Request.QueryString("checkid")
Set Koll = Conn.Execute(strSQL)
If Koll("Poang2") = 0 OR IsNull(Koll("Poang2")) Then
  strSQL = "UPDATE members SET Poang2 = " & Request.Form("betyg") & ", TotalaRoster = 1 WHERE ID = " & Request.Querystring("checkid")
Else
  strSQL = "UPDATE members SET Poang2 = Poang2 + " & Request.Form("betyg") & ", TotalaRoster = TotalaRoster + 1 WHERE ID = " & Request.Querystring("checkid")
End If
Set Koll = Nothing
Conn.Execute(strSQL)
Medlem sedan juli 20021 523 inlägg
#12

nepp, funkar inte :(

Medlem sedan mars 20015 287 inlägg
#13

Hur var det nu? Tar för givet att Poäng2 samt TotalaRoster är av typen tal i databasen?
Tror nog att du ska ha 0 som standardvärde.

Medlem sedan mars 20015 287 inlägg
#14

kanske:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("databasen")&";pwd=lååååånngg lösenord"
SQL = "UPDATE members SET Poang2 = Poang2+" & cint(Request.Form("betyg")) & ", TotalaRoster = TotalaRoster+1 WHERE ID = "&Request.Querystring("checkid")&"" 
Conn.Execute(SQL) 

Conn.Close 

Response.Redirect "whois.asp?checkid=" &session("id")
Medlem sedan juli 20021 523 inlägg
#15

nope.. men jag märkte nyss att förut så hade jag satt 0 på poäng,totaltröster men eftersom communityn växte..så har andra (nya )halvan inte en nolla så det är tomt... där ligger problemet

Medlem sedan juni 200032 967 inlägg
#16

Om jag vore du hade jag sett till att det inte fanns några nullvärden i poäng-fältet (och ev. andra fält du gör liknande beräkningar / uppdateringar på).

UPDATE members SET Poang2 = 0 WHERE Poang2 IS NULL

Sedan är det bara att köra update-satser som räknar upp.

Mvh,

Medlem sedan mars 20015 287 inlägg
#17

Men @nders... om man sätter 0 som defaultvärde i access så måste det väl gå utan en sån modifikation? Eller?

Medlem sedan juni 200032 967 inlägg
#18

Jo, om man sätter 0 som defaultvärde så gäller det för alla nya poster. Men om man har en drös poster som redan har nullvärde, så förändras inte de i och med att man sätter defaultvärdet, utan dessa måste uppdateras till 0 med en SQL-fråga.

Mvh,

Medlem sedan mars 20015 287 inlägg
#19

Ah, det var så du menade. Jo det förstår jag iofs att det blir så.
Jag hakade iofs upp mig på att Rodan skrev att den nya halvan inte hade en nolla.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)