webForumDet fria alternativet
Logga in / Bli medlem

Error Type: ADODB.Recordset (0x800A0CB3)

ASP

8 svar · 264 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Trådstart#1

Hej

Får detta felmeddelande när jag kör följande kod:

Error Type:
ADODB.Recordset (0x800A0CB3)
Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.
sidan.asp, line 62

Det är alltså "RS.AbsolutePage = IntSida" som framkallar detta felmeddelande. Är det någon som vet varför, kör MySQL nu och det funkade fin fint innan med Access97...

<%
' ##Kollar vilken sida som skall visas, om tomt visas sida 1:
IntSida = Trim(Request.QueryString("page"))
If IntSida = "" Then
IntSida = 1
Else
IntSida = Cint(IntSida) ' ##Gör om det till ett tal 
End If

'##här tar jag reda på vilket userid som personen har.
UID=session("userid")
if UID = "" then
MYMESSAGE = Server.URLEncode("You must be logged in to view this page.<p>Please wait...") 
Response.Redirect ("delay.asp?DELAY_TIME=2&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=default.asp") 
end if

set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databaskopplingen"
set rs = connection.execute("select count(*) from internpost WHERE internpost.mottagare="&UID&"")
antalmedlemmar = rs(0)
stm = "Select Users.ID as Userid, Users.Nick, Internpost.ID, Internpost.Datum, Internpost.Mottagare, 
Internpost.Rubrik, Internpost.Avsandare, Internpost.Last FROM Internpost INNER JOIN Users ON Users.ID = Internpost.Avsandare WHERE 
Internpost.Mottagare="&UID&" ORDER BY Internpost.Datum desc LIMIT 100"
set rs = connection.execute(stm)
if rs.eof then%>
<tr bgcolor="#FFFFFF"> 
                                  <td height="14" colspan="5"><div align="center"> 
                                      <%
								response.write ("Your inbox is empty.")%>
                                    </div></td>
                                </tr>
								                              </table>
<%else
RS.PageSize = 30
' ##Visar önskad sida
[B]RS.AbsolutePage = IntSida[/B] 
	count = 0
Do until RS.EOF OR IntAntal+1 > RS.PageSize
'##Räknare***
IntAntal = IntAntal + 1
'##Byter bakgrundsfärg i tabellen
  	count2 = count2 + 1
	If count2 Mod 2 = 0 then
	color = "#9AACBE"
	else
	color = "#BDC9D5"
	End If
%>
                    <tr>
                      
                <td align="center" bgcolor="<%=color%>">
<%if NOT rs("last")=0 then%> <img src="images/mail_read.gif" width="11" height="12"> 
                                    <%else%><img src="images/mail_unread.gif" width="11" height="12"> 
                                    <%end if%>
                </td>
                      <td bgcolor="<%=color%>">_<a href="info.asp?UID=<%=rs("avsandare")%>"><%=Rs("nick")%></a></td>
                      <td bgcolor="<%=color%>">_<b><a href="visapost.asp?PID=<%=rs("ID")%>"><%=Rs("rubrik")%></a></b></td>
                      
                <td align="center" bgcolor="<%=color%>"><%=Rs("datum")%></td>
                      
                <td align="center" bgcolor="<%=color%>"><a href="deletemessage.asp?PID=<%=rs("ID")%>">
<img src="images/icon_trashcan.gif" width="12" height="12" border="0" alt="Delete message"></a></td>
                    </tr>
					<%
rs.movenext
loop%>
                  </table> 
                  <p>
				  <%
'##Visa sidlänkar
If RS.PageCount > 1 Then '##Kollar så det finns fler sidor 
Response.Write("Go to page ") 
For I = 1 To RS.PageCount '##Startar en loop som ska fixa alla sidnummer
                        If I <> IntSida Then '##Kollar så att vi ej länkar aktuellt sidnummer
                          Response.Write("<A href='inbox.asp?page=" & I & "'>" & I & "</A> ")
                        Else '##Om det är sidan som är aktiv, gör ingen länk.
                          Response.Write(I & " ")
                        End If
next
end if
end if
rs.close
connection.close
set connection = nothing%>

Tacksam för hjälp

//G8

Medlem sedan dec. 200012 464 inlägg
#2

Om du använder Mysql så är det enklast att hantera paging direkt i sql-frågan med hjälp av limit.

Medlem sedan jan. 20011 213 inlägg
#3

LarsG, killen som alltid är vaken! (nästan iaf) :)

Ehh, hur menar du då, paging i mysql?

Medlem sedan jan. 20011 213 inlägg
#4

hmm, tror jag har hittat det nu, ska testa och se om jag får ihop det..

:)

Medlem sedan dec. 200012 464 inlägg
#5
pagesize = 5
IntSida = Trim(Request.QueryString("page"))
If IntSida = "" Then
IntSida = 1
Else
IntSida = Cint(IntSida) ' ##Gör om det till ett tal 
End If
q = "Select count(*) FROM Internpost INNER JOIN Users ON Users.ID = Internpost.Avsandare WHERE Internpost.Mottagare="&UID
set rs = connection.execute(q)
pages = (cdbl(rs(0))-1)/pagesize + 1
stm = "Select Users.ID as Userid, Users.Nick, Internpost.ID, Internpost.Datum, Internpost.Mottagare, " & _
" Internpost.Rubrik, Internpost.Avsandare, Internpost.Last " &_
" FROM Internpost INNER JOIN Users " &_
" ON Users.ID = Internpost.Avsandare " &_
" WHERE Internpost.Mottagare="&UID&_
" ORDER BY Internpost.Datum desc " &_
" LIMIT " & offset  & "," & pagesize
set rs = connection.execute(stm)

och sedan

Do until RS.EOF OR IntAntal+1 > RS.PageSize

blir

Do until RS.EOF

och

For I = 1 To RS.PageCount

blir

For I = 1 To pages

Kan du dela upp ditt sql-statement i första inlägget så att det kommer på flera rader? Det är för att slippa scrolla i sidled.

Medlem sedan jan. 20011 213 inlägg
#6

Ok LarsG

Nu ser koden ut så här:

<%
'##här tar jag reda på vilket userid som personen har.
UID=session("userid")
if UID = "" then
MYMESSAGE = Server.URLEncode("You must be logged in to view this page.<p>Please wait...") 
Response.Redirect ("delay.asp?DELAY_TIME=2&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=default.asp") 
end if
set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databaskopplingen"
pagesize = 5
IntSida = Trim(Request.QueryString("page"))
If IntSida = "" Then
IntSida = 1
Else
IntSida = Cint(IntSida) ' ##Gör om det till ett tal 
End If
q = "Select count(*) FROM Internpost INNER JOIN Users ON Users.ID = Internpost.Avsandare WHERE Internpost.Mottagare="&UID
set rs = connection.execute(q)
pages = (cdbl(rs(0))-1)/pagesize + 1
stm = "Select Users.ID as Userid, Users.Nick AS Nick, Internpost.ID, Internpost.Datum, Internpost.Mottagare, " & _
" Internpost.Rubrik, Internpost.Avsandare, Internpost.Last " &_
" FROM Internpost INNER JOIN Users " &_
" ON Users.ID = Internpost.Avsandare " &_
" WHERE Internpost.Mottagare="&UID&_
" ORDER BY Internpost.Datum desc " &_
" LIMIT " & offset  & "," & pagesize
set rs = connection.execute(stm)
if rs.eof then%>
<tr bgcolor="#FFFFFF"> 
                                  <td height="14" colspan="5"><div align="center"> 
                                      <%
								response.write ("Your inbox is empty.")%>
                                    </div></td>
                                </tr>
								                              </table>
<%else
	count = 0
Do until RS.EOF 
'##Räknare
IntAntal = IntAntal + 1
'##Byter bakgrundsfärg i tabellen
  	count2 = count2 + 1
	If count2 Mod 2 = 0 then
	color = "#9AACBE"
	else
	color = "#BDC9D5"
	End If
%>
                    <tr>
                      
                <td align="center" bgcolor="<%=color%>">
<%if NOT rs("last")=0 then%> <img src="images/mail_read.gif" width="11" height="12"> 
                                    <%else%><img src="images/mail_unread.gif" width="11" height="12"> 
                                    <%end if%>
                </td>
                      <td bgcolor="<%=color%>">&nbsp;<a href="info.asp?UID=<%=rs("avsandare")%>"><%=Rs("nick")%></a></td>
                      <td bgcolor="<%=color%>">&nbsp;<b><a href="visapost.asp?PID=<%=rs("ID")%>"><%=Rs("rubrik")%></a></b></td>
                      
                <td align="center" bgcolor="<%=color%>"><%=Rs("datum")%></td>
                      
                <td align="center" bgcolor="<%=color%>"><a href="tabortpost.asp?PID=<%=rs("ID")%>">
<img src="images/icon_trashcan.gif" width="12" height="12" border="0" alt="Ta bort meddelande"></a></td>
                    </tr>
<%rs.movenext
loop%>
                  </table> 
                  <p>
				  <%
'##Visa sidlänkar:
If RS.PageCount > 1 Then '##kollar så det finns fler sidor
Response.Write("Go to page ") 
For I = 1 To pages '##Startar en loop som ska fixa alla sidnummer
                        If I <> IntSida Then '##Kollar så att vi ej länkar aktuellt sidnummer
                          Response.Write("<A href='inbox.asp?page=" & I & "'>" & I & "</A> ")
                        Else '##Om det är sidan som är aktiv, gör ingen länk.
                          Response.Write(I & " ")
                        End If
next
end if
end if
rs.close
connection.close
set connection = nothing%>

Får då:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near '5' at line 1
sidan.asp, line 55

Tar jag bort

& offset  & ",

så visar den sidan, dock utan att page-a. Jag förstår inte riktigt vart du får värdet för offset ifrån?

Lade till

offset = 0

innan

pagesize = 5

och då funkar den, fast utan att page-a...

Testade nu att byta ut

If RS.PageCount > 1 Then '##kollar så det finns fler sidor

mot

If pages > 1 Then '##kollar så det finns fler sidor

fast jag får samma 5 resultat hela tiden... :(

Vad bör jag sätta offset till för att den ska hoppa till nästa fem poster?

Känns nästan som om det hade vart enklare att gör pagingen med asp istället för SQL, men man lär ju sig nått nytt iaf :)

Blev lite rörigt det här nu... hoppas du hänger med iaf i vad jag har gjort...

Tack för hjälpen än en gång

//G8

Medlem sedan jan. 20011 213 inlägg
#7

Hittade den här som jag ska kolla igenom på jobbet imorgon, när jag ändå inte gör nånting ;)

Medlem sedan dec. 200012 464 inlägg
#8

Jag glömde offset ....

offset = (intSida-1)*pagesize
Medlem sedan jan. 20011 213 inlägg
#9

Om jag fick bestämma vem som skulle bli årets medlem på WF så skulle det helt klart blivit LarsG, vilken klippa!

:birp

//G8

274 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)