webForumDet fria alternativet

Undantag inträffade...

ASP

8 svar · 222 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Frågan#1

Efter att jag stängt eller öppnat en tråd i ett forum jag gör så ska man skickas vidare till tråden, man skickas vidare men varje gång man kommer dit så får jag ett felmeddelande.

Feltyp:
(0x80020009)
Undantag inträffade.

If Session("user") = rsCheckModerators("mod1") OR Session("user") = rsCheckModerators("mod2") OR Session("user") = rsCheckModerators("mod3") OR Session("user") = rsCheckModerators("mod4") OR Session("user") = rsCheckModerators("mod5") OR Session("user") = rs("namn") OR typ = "Forumledare" Then

Den här koden fungerar utmärkt annars när man kollar på sidan man inte när man skickas dit efter att ha stängt eller öppnat en tråd. :l
Jag har även testat med att sätta ( och ) runt...

Please help!

/Mika3l

Medlem sedan juni 20003 076 inlägg
#2

Du använder access va?
Det blir nog för många anrop till databasen, jag tycker jag känner igen felet, tyvärr!
(men jag kan ha fel förståss) :)

Medlem sedan nov. 20018 492 inlägg
#3

Jag använder Access(2000).
Jag kan inte tänka mig att det blir för många anrop till databasen med tanke på att det fungerar annars, fast det är ju möjligt... :l

Medlem sedan nov. 20018 492 inlägg
#4

Hmm, testade att ta bort det, fungerade... :l
Finns det något sätt man kan lösa det på?

Medlem sedan juni 20003 076 inlägg
#5

om du hämtar och listar många poster på den sidan så kan du ju prova att hämta med getrows istället.
försök att optimera sql-strängarna, använda joins istället för att öppna separat m.m.
brukar kunna hjälpa med att skapa en "paging-variant" på sidan också.

men detta är ju OM det är för många anrop annars vete tusan!

Medlem sedan nov. 20018 492 inlägg
#6

Hmmm, jag kan inget om getrows och jag kan inget om join i SQL... :l
Men om man lägger allt i variabler så används ju bara databasen en gång för att ge värden, sedan så används ju bara variablerna...?
Fast frågan är ju om det är för många anrop, med tanke på att det fungerar annars så tror jag nog att så inte är fallet...

Medlem sedan juni 20003 076 inlägg
#7

visa sidan vetja så kanske man kan lista ut nått smart! :)

Medlem sedan nov. 20018 492 inlägg
#8

Den här koden visar tråden(inte svaren).

Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT IID, rubrik, namn, inlagg, datum, forum, stangd, senaste FROM inlagg WHERE IID = " & Request.QueryString("IID") & ""
rs.Open SQL, Connection
Set rsMemberInfo = Server.CreateObject("ADODB.Recordset")
SQLMemberInfo = "SELECT anvnamn, regdatum, typ, antalinlagg, email, ort, signatur FROM medlemar WHERE anvnamn = '" & rs("namn") & "'"
rsMemberInfo.Open SQLMemberInfo, Connection

Response.Write"<table align=""center"" valign=""top"" width=""600"" cellspacing=""0"" cellpadding=""2"">"
Response.Write"<tr valign=""middle""><td width=""370"" align=""left"" colspan=""1""><a href=""forum.asp?page=visaforum&forum=" & Request.QueryString("forum") & """ class=""rubrik"">" & Request.QueryString("forum") & "</a> - <a href=""forum_visatrad.asp?IID=" & rs("IID") & "&forum=" & Request.QueryString("forum") & """ class=""rubrik"">" & rs("rubrik") & "</a></td>"
If rs("stangd") = False Then
Response.Write"<td align=""right"" width=""230""><a href=""forum_svara.asp?IID=" & rs("IID") & "&forum=" & Request.QueryString("forum") & "&rubrik=" & rs("rubrik") & """><strong>Skriv inlägg</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
Else
Response.Write"<td align=""right"" width=""230""><strong><s>Skriv inlägg</s> - Tråd stängd</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
End If
Response.Write"</table><table align=""center"" valign=""top"" width=""600"" cellspacing=""0"" cellpadding=""2"">"
Response.Write"<tr height=""3""><td width=""140""></td><td width=""460""></tr>"
Response.Write"<tr valign=""top""><td width=""140"" bgcolor=""#E5E5E5"" align=""left"">"
Set rsCheckIfOnline = Connection.Execute("SELECT status FROM medlemar WHERE anvnamn = '" & rsMemberInfo("anvnamn") & "'")
If rsCheckIfOnline("status") = True Then
on_off = "#0AB60A"
on_off_text = "Online<br>"
Else
on_off = "#FF0000"
on_off_text  = "Offline<br>"
End If
rsCheckIfOnline.Close
Set rsCheckIfOnline = Nothing
Response.Write"<font style=""font-size: 12px; font-weight: bold;"">" & rsMemberInfo("anvnamn") & "</font>&nbsp;&nbsp;<font color=""" & on_off & """><b>" & on_off_text & "</b></font>"
If rsMemberInfo("typ") = "Moderator" OR rsMemberInfo("typ") = "Forumledare" Then
Response.Write"<i>" & rsMemberInfo("typ") & "</i><br><br>"
Else
Response.Write rsMemberInfo("typ") & "<br><br>"
End If
Response.Write"Registrerad: " & Left(rsMemberInfo("regdatum"),10) & "<br>"
If rsMemberInfo("ort") <> "" Then
Response.Write"Ort: " & rsMemberInfo("ort") & "<br>"
End If
Response.Write"Inlägg: " & rsMemberInfo("antalinlagg") & "<br><br>"

Response.Write"<a href=""mess_send.asp?till=" & rs("namn") & """><img src=""images/messa.gif"" width=""20"" height=""11"" border=""0"" alt=""Skicka meddelande till " & rs("namn") & """></a>"
If rsMemberInfo("email") <> "" Then
Response.Write"&nbsp;<a href=""mailto:" & rsMemberInfo("email") & """><img src=""images/maila.gif"" width=""14"" height=""9"" border=""0"" alt=""Maila " & rs("namn") & """></a>"
End If
SQLCheckModerators = "SELECT mod1, mod2, mod3, mod4, mod5 FROM underkats WHERE forum_namn = '" & Request.QueryString("forum") & "'"
Set rsCheckModerators = Connection.Execute(SQLCheckModerators)
If Session("user") = rsCheckModerators("mod1") OR Session("user") = rsCheckModerators("mod2") OR Session("user") = rsCheckModerators("mod3") OR Session("user") = rsCheckModerators("mod4") OR Session("user") = rsCheckModerators("mod5") OR Session("user") = rs("namn") OR typ = "Forumledare" Then
Response.Write"&nbsp;<a href=""forum_redigera.asp?IID=" & rs("IID") & """><img src=""images/redigera.gif"" width=""14"" height=""13"" border=""0"" alt=""Redigera inlägget""></a>"
Response.Write"&nbsp;<a href=""forum_tabort.asp?IID=" & rs("IID") & """><img src=""images/tabort.gif"" width=""11"" height=""13"" border=""0"" alt=""Ta bort inlägget""></a>"
If rs("stangd") = False Then
Response.Write"&nbsp;<a href=""forum_stangtrad.asp?page=stang&IID=" & rs("IID") & "&forum=" & Request.QueryString("forum") & """><img src=""images/stangtrad.gif"" width=""12"" height=""13"" border=""0"" alt=""Stäng tråden""></a>"
Else
Response.Write"&nbsp;<a href=""forum_stangtrad.asp?page=oppna&IID=" & rs("IID") & "&forum=" & Request.QueryString("forum") & """><img src=""images/oppnatrad.gif"" width=""12"" height=""17"" border=""0"" alt=""Öpnna tråden""></a>"
End If
End If
Response.Write"</td><td width=""460"" bgcolor=""#F5F5F5""><strong>" & rs("rubrik") & "</strong>&nbsp;&nbsp;&nbsp;<font color=""#783600"">" & rs("datum") & "</font><br><br>" & fixa(rs("inlagg")) & "</td></tr>"
Response.Write"<br><table width=""610"" cellspacing=""0"" cellpadding=""0""><tr><td width=""510"">"
Response.Write"</table><br><br>"

rsMemberInfo.Close
Set rsMemberInfo = Nothing

Finns väl säkert något bättre sätt att lösa det på... :p

Medlem sedan juni 20003 076 inlägg
#9

Kan det vara att du inte har med:

rsCheckModerators.Close
Set rsCheckModerators = Nothing

någonstans, eller finns det mer kod under?

Annars, det man kan se är väl att du har väldigt många kopplingar till databasen, du borde nog kunna minska med ett par, men det förutsätter ju så klart att man vet hur man ska göra också. ;)
t.ex. borde du kunna sätta ihop dessa till en: rsMemberInfo, rsCheckIfOnline

"SELECT anvnamn, regdatum, typ, antalinlagg, email, ort, signatur, status FROM medlemar WHERE anvnamn = '" & rs("namn") & "' "

'dessa rader borde väl funka ändå!
If rsMemberInfo("status") = True Then
on_off = "#0AB60A"
on_off_text = "Online<br>"
Else
on_off = "#FF0000"
on_off_text  = "Offline<br>"
End If

eventuellt kan du kanske också göra en join mellan inlagg och medlemar, förenklat så skulle det kunna se ut:

"SELECT m.anvnamn, m.regdatum, i.rubrik, i.inlagg FROM medlemar m LEFT JOIN inlagg i ON m.anvnamn = i.namn WHERE IID = " & Request.QueryString("IID") & ""

men det var bara en idé :)

384 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
248 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
249 ms — ändringar (db)