webForumDet fria alternativet

Lista alla poster hur?

ASP

24 svar · 572 visningar · startad av tank82

Medlem sedan feb. 2003210 inlägg
Frågan#1

Hej hej! :birp
Jag skulle vilja ändra denna kod så att den "listar" alla poster istället för att bara visa den senaste,
jag har börjat mixtra med koden med får den inte att fungera, kan någon snäll person hjälpa mig... :r


<%
Response.Buffer = "True"

bredd   = "110"
breddF   = "100"
breddR   = "10"

db = Server.MapPath("db.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

Storlek = breddF/100

If Request.Querystring("page") = "" Then
%>
<html>
<body leftmargin="1" topmargin="1" marginwidth="1" marginheight="1">
<table>
<%
  Set RecSet = Conn.Execute("SELECT Top 1 fraga, pollid From poll_rosta Order by PollId desc")

  Response.Write("    <table border=""0"" cellpadding=""0"" cellspacing=""1"" align=""center"" width=""" & Bredd & """>" & vbCrLf)

  If RecSet.EOF Then
    Response.Write("      <tr>" & vbCrLf)
    Response.Write("        <td colspan=""2""><b>Här var det tomt..</b></td>" & vbCrLf)
    Response.Write("      </tr>" & vbCrLf)
  Else
    strFraga = RecSet("fraga")
    intPollID = RecSet("pollid")
    Set RecSet = Nothing

    Response.Write("  <tr>" & vbCrLf) 
    Response.Write("    <td colspan=""3""><b>" & strFraga & "</b></td>" & vbCrLf)
    Response.Write("  </tr>" & vbCrLf)

    Set Svar = Conn.Execute("SELECT svar From poll_svar Where pollID=" & intPollID)
    totalt = Conn.Execute("SELECT COUNT(svar) From poll_svar Where pollID=" & intPollID)(0)

    If Svar.EOF Then    
      intSvarEtt = 0
      intSvarTva = 0
      intSvarTre = 0
      intSvarFyra = 0

      intProc1 = 0
      intProc2 = 0
      intProc3 = 0
      intProc4 = 0
    Else
      Do Until Svar.EOF
        stat = CInt(Svar("svar"))

        If stat = 1 Then
          intSvarEtt = intSvarEtt + 1
        ElseIf stat = 2 Then
          intSvarTva = intSvarTva + 1
        ElseIf stat = 3 Then
          intSvarTre = intSvarTre + 1
        ElseIf stat = 4 Then
          intSvarFyra = intSvarFyra + 1
        End If

        Svar.MoveNext
      Loop

      intProc1 = Round(intSvarEtt / totalt * 100, 0)
      intProc2 = Round(intSvarTva / totalt * 100, 0)
      intProc3 = Round(intSvarTre / totalt * 100, 0)
      intProc4 = Round(intSvarFyra / totalt * 100, 0)
    End If

    Set Svar = Conn.Execute("SELECT TOP 1 svar1, svar2, svar3, svar4 FROM poll_rosta ORDER BY pollid DESC")

    If Request.Querystring("page") = "" Then
      Response.Write("       <tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar1") & " l " & intProc1 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#7090B8"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc1 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar2") & " l " & intProc2 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#7090B8"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc2 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar3") & " l " & intProc3 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#7090B8"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc3 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar4") & " l " & intProc4 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#7090B8"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc4 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td rowspan=""2"" width=""" & breddR & """ valign=""bottom"" align=""right""></td>" & vbCrLf)
      Response.Write("        </tr>" & vbCrLf)
    End If

    Response.Write("        <tr>" & vbCrLf)
    Response.Write("          <td colspan=""2""></td>" & vbCrLf)
    Response.Write("        </tr>" & vbCrLf)

    Svar.Close
    Set Svar = nothing
  End If

  Response.Write("        <tr>" & vbCrLf)
  Response.Write("          <td colspan=""2""></td>" & vbCrLf)
  Response.Write("        </tr>" & vbCrLf)
  Response.Write("        <tr>" & vbCrLf)
  Response.Write("          <td colspan=""2""></td>" & vbCrLf)
  Response.Write("        </tr>" & vbCrLf)
  Response.Write(" </table>" & vbCrLf)
%>
</body>
</html>

<%
End If

Conn.Close
Set Conn = nothing
%>
Medlem sedan nov. 200364 inlägg
#2
 Set RecSet = Conn.Execute("SELECT Top fraga, pollid From poll_rosta Order by PollId desc")

sen måste du lägga in en RecSet.MoveNext o Loop nån stans men det orkar jag inte titta efter

Medlem sedan feb. 2003210 inlägg
#3

hmm ok kan någon annan hjälpa mig då kanske... :q


Microsoft JET Database Engine error '80040e14' 
The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect. 

rosta.asp, line 42
Medlem sedan feb. 2003210 inlägg
#4

panik! snälla hjälp mig någon :r

Medlem sedan juni 200032 967 inlägg
#5

Ta bort Top ur SQl-frågan. Det används för att begränsa antalet poster.

mvh

Medlem sedan feb. 2003210 inlägg
#6

ok?

Nu har jag denna kod, med fortfarande bara den senaste "omröstningen" ? hjälp =/

<%
Response.Buffer = "True"

bredd   = "110"
breddF   = "100"
breddR   = "10"

db = Server.MapPath("db.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

Storlek = breddF/100

If Request.Querystring("page") = "" Then
%>
<html>
<body leftmargin="1" topmargin="1" marginwidth="1" marginheight="1">
<table>
<%
  Set RecSet = Conn.Execute("SELECT fraga, pollid From poll_rosta Order by PollId desc")

  Response.Write("    <table border=""0"" cellpadding=""0"" cellspacing=""1"" align=""center"" width=""" & Bredd & """>" & vbCrLf)

  If RecSet.EOF Then
    Response.Write("      <tr>" & vbCrLf)
    Response.Write("        <td colspan=""2""><b>Här var det tomt..</b></td>" & vbCrLf)
    Response.Write("      </tr>" & vbCrLf)
  Else
    strFraga = RecSet("fraga")
    intPollID = RecSet("pollid")
    Set RecSet = Nothing

    Response.Write("  <tr>" & vbCrLf) 
    Response.Write("    <td colspan=""3""><b>" & strFraga & "</b></td>" & vbCrLf)
    Response.Write("  </tr>" & vbCrLf)

    Set Svar = Conn.Execute("SELECT svar From poll_svar Where pollID=" & intPollID)
    totalt = Conn.Execute("SELECT COUNT(svar) From poll_svar Where pollID=" & intPollID)(0)

    If Svar.EOF Then    
      intSvarEtt = 0
      intSvarTva = 0
      intSvarTre = 0
      intSvarFyra = 0

      intProc1 = 0
      intProc2 = 0
      intProc3 = 0
      intProc4 = 0
    Else
      Do Until Svar.EOF
        stat = CInt(Svar("svar"))

        If stat = 1 Then
          intSvarEtt = intSvarEtt + 1
        ElseIf stat = 2 Then
          intSvarTva = intSvarTva + 1
        ElseIf stat = 3 Then
          intSvarTre = intSvarTre + 1
        ElseIf stat = 4 Then
          intSvarFyra = intSvarFyra + 1
        End If

        Svar.MoveNext
      Loop

      intProc1 = Round(intSvarEtt / totalt * 100, 0)
      intProc2 = Round(intSvarTva / totalt * 100, 0)
      intProc3 = Round(intSvarTre / totalt * 100, 0)
      intProc4 = Round(intSvarFyra / totalt * 100, 0)
    End If

    Set Svar = Conn.Execute("SELECT TOP 1 svar1, svar2, svar3, svar4 FROM poll_rosta ORDER BY pollid DESC")

    If Request.Querystring("page") = "" Then
      Response.Write("       <tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar1") & " l " & intProc1 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc1 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar2") & " l " & intProc2 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc2 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar3") & " l " & intProc3 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc3 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar4") & " l " & intProc4 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc4 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td rowspan=""2"" width=""" & breddR & """ valign=""bottom"" align=""right""></td>" & vbCrLf)
      Response.Write("        </tr>" & vbCrLf)
    End If

    Response.Write("        <tr>" & vbCrLf)
    Response.Write("          <td colspan=""2""></td>" & vbCrLf)
    Response.Write("        </tr>" & vbCrLf)

    Svar.Close
    Set Svar = nothing
  End If

  Response.Write("        <tr>" & vbCrLf)
  Response.Write("          <td colspan=""2""></td>" & vbCrLf)
  Response.Write("        </tr>" & vbCrLf)
  Response.Write("        <tr>" & vbCrLf)
  Response.Write("          <td colspan=""2""></td>" & vbCrLf)
  Response.Write("        </tr>" & vbCrLf)
  Response.Write(" </table>" & vbCrLf)
%>
</body>
</html>

<%
End If

Conn.Close
Set Conn = nothing
%>
Medlem sedan juni 200032 967 inlägg
#7

Du får slänga in en loop efter det att du öppnat recordsetet.

while not RecSet.eof
      ' här lägger du all kod som ska köras för varje post i recordsetet.
      RecSet.movenext
wend

mvh

Medlem sedan feb. 2003210 inlägg
#8

:( jag förstår inte, kan du lägga in koden åt mig så det blir rätt... snälla

Medlem sedan feb. 2003210 inlägg
#9

vill fortfarande ha hjälp.. :r

Medlem sedan feb. 2003210 inlägg
#10

^^

Medlem sedan juni 200032 967 inlägg
#11

Där var det en massa kod ja.
Jag vill ju helst att du löser det själv, så hur ser ditt försök ut?

Mvh

Medlem sedan feb. 2003210 inlägg
#12

Nja jag har testat lite dock utan resultat.. jag är inte så hajj på detta :OO

Medlem sedan juni 200032 967 inlägg
#13

Jag slängde in loop-kod lite snabbt, och ändrade en sql-fråga (fetmarkerad). Vi börjar där och ser vad som händer.

<%
Response.Buffer = "True"

bredd   = "110"
breddF   = "100"
breddR   = "10"

db = Server.MapPath("db.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

Storlek = breddF/100

If Request.Querystring("page") = "" Then
%>
<html>
<body leftmargin="1" topmargin="1" marginwidth="1" marginheight="1">
<table>
<%
  Set RecSet = Conn.Execute("SELECT fraga, pollid From poll_rosta Order by PollId desc")
  Response.Write("    <table border=""0"" cellpadding=""0"" cellspacing=""1"" align=""center"" width=""" & Bredd & """>" & vbCrLf)

  If RecSet.EOF Then
    Response.Write("      <tr>" & vbCrLf)
    Response.Write("        <td colspan=""2""><b>Här var det tomt..</b></td>" & vbCrLf)
    Response.Write("      </tr>" & vbCrLf)
  Else
  [b]while not RecSet.EOF[/b]
    strFraga = RecSet("fraga")
    intPollID = RecSet("pollid")

    Response.Write("  <tr>" & vbCrLf) 
    Response.Write("    <td colspan=""3""><b>" & strFraga & "</b></td>" & vbCrLf)
    Response.Write("  </tr>" & vbCrLf)

    Set Svar = Conn.Execute("SELECT svar From poll_svar Where pollID=" & intPollID)
    totalt = Conn.Execute("SELECT COUNT(svar) From poll_svar Where pollID=" & intPollID)(0)

    If Svar.EOF Then    
      intSvarEtt = 0
      intSvarTva = 0
      intSvarTre = 0
      intSvarFyra = 0

      intProc1 = 0
      intProc2 = 0
      intProc3 = 0
      intProc4 = 0
    Else
      Do Until Svar.EOF
        stat = CInt(Svar("svar"))

        If stat = 1 Then
          intSvarEtt = intSvarEtt + 1
        ElseIf stat = 2 Then
          intSvarTva = intSvarTva + 1
        ElseIf stat = 3 Then
          intSvarTre = intSvarTre + 1
        ElseIf stat = 4 Then
          intSvarFyra = intSvarFyra + 1
        End If

        Svar.MoveNext
      Loop

      intProc1 = Round(intSvarEtt / totalt * 100, 0)
      intProc2 = Round(intSvarTva / totalt * 100, 0)
      intProc3 = Round(intSvarTre / totalt * 100, 0)
      intProc4 = Round(intSvarFyra / totalt * 100, 0)
    End If

    [b]Set Svar = Conn.Execute("SELECT svar1, svar2, svar3, svar4 FROM poll_rosta WHERE pollID=" & intPollID)[/b]

    If Request.Querystring("page") = "" Then
      Response.Write("       <tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar1") & " l " & intProc1 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc1 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar2") & " l " & intProc2 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc2 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar3") & " l " & intProc3 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc3 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & bredd & """>" & Svar("svar4") & " l " & intProc4 & "%</td></tr>" & vbCrLf)
      Response.Write("          <td width=""" & BreddF & """ bgcolor=""#838995"" height=""10""><img src=""rosta/bild.gif"" width=""" & intProc4 & "%"" height=""10"" border=""1""></td></tr>" & vbCrLf)
      Response.Write("          <td rowspan=""2"" width=""" & breddR & """ valign=""bottom"" align=""right""></td>" & vbCrLf)
      Response.Write("        </tr>" & vbCrLf)
    End If

    Response.Write("        <tr>" & vbCrLf)
    Response.Write("          <td colspan=""2""></td>" & vbCrLf)
    Response.Write("        </tr>" & vbCrLf)

    Svar.Close
    Set Svar = nothing
    [b]RecSet.MoveNext[/b]
   [b]wend[/b]
  End If

  Response.Write("        <tr>" & vbCrLf)
  Response.Write("          <td colspan=""2""></td>" & vbCrLf)
  Response.Write("        </tr>" & vbCrLf)
  Response.Write("        <tr>" & vbCrLf)
  Response.Write("          <td colspan=""2""></td>" & vbCrLf)
  Response.Write("        </tr>" & vbCrLf)
  Response.Write(" </table>" & vbCrLf)
%>
</body>
</html>

<%
End If

Conn.Close
Set Conn = nothing
%>

mvh

Medlem sedan feb. 2003210 inlägg
#14

Microsoft VBScript runtime error '800a01a8'
Object required

arkiv.asp, line 117

rad 117 = RecSet.MoveNext

Medlem sedan juni 200032 967 inlägg
#15

Du har ett set RecSet = nothing tidigare i koden. Ta bort det.

mvh

Medlem sedan feb. 2003210 inlägg
#16

Fungerar kanon, tack så mycket :birp

Medlem sedan feb. 2003210 inlägg
#17

Hmm skit också, det fungerade inte riktigt som det ska med uträkningen av procenten, jag får så konstiga uträkningar typ Svar 1 = 234% svar 2 = 112% osv... ?

Medlem sedan juni 200032 967 inlägg
#18

Du får försöka isolera problemet. Skriv ut testutskrifter av allt du använder, så du kan se vad det är som strular till det.

mvh

Medlem sedan feb. 2003210 inlägg
#19

uhh ? hmm.. hjälp typ :r

Medlem sedan juni 200032 967 inlägg
#20

Vilka variabler är det som felar? Skriv ut dess värden med response.write vid olika tillfällen.

- - - - - - -

jag skulle dock tro att det är nollställningen av variablerna som ligger fel. Ändra till följande, så kanske det fungerar bättre:

      intSvarEtt = 0
      intSvarTva = 0
      intSvarTre = 0
      intSvarFyra = 0

      intProc1 = 0
      intProc2 = 0
      intProc3 = 0
      intProc4 = 0
    If not Svar.EOF Then
      Do Until Svar.EOF
        stat = CInt(Svar("svar"))

        If stat = 1 Then
          intSvarEtt = intSvarEtt + 1
        ElseIf stat = 2 Then
          intSvarTva = intSvarTva + 1
        ElseIf stat = 3 Then
          intSvarTre = intSvarTre + 1
        ElseIf stat = 4 Then
          intSvarFyra = intSvarFyra + 1
        End If

        Svar.MoveNext
      Loop

      intProc1 = Round(intSvarEtt / totalt * 100, 0)
      intProc2 = Round(intSvarTva / totalt * 100, 0)
      intProc3 = Round(intSvarTre / totalt * 100, 0)
      intProc4 = Round(intSvarFyra / totalt * 100, 0)
    End If

Mvh Loop

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