webForumDet fria alternativet

mera paging

8 svar · 459 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Jag använder PatrikB's paging ifrån http://cgi.webforum.nu/wf/Forum11/HTML/003221.html

Jag får följande fel:
ADODB.Recordset error '800a0cb3'

Object or provider is not capable of performing requested operation.

/en/user_guestbook.asp, line 59

på den raden finns
objRS.AbsolutePage = intPage

nån som vet vad som kan va fel?
Använder MySQL!

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "absolut"

eSQL="Select * From Users Where UserID="& Request.QueryString("show_user")
Set user=Conn.Execute(eSQL)
rSQL="Select * From User_Info Where Info_Bel="& user("UserID")
Set info=Conn.Execute(rSQL)
%>
html...
<%
intPageSize = 10
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1

strSQL = "SELECT * FROM Guestbook Where Gbook_Bel="& Cint(Request.QueryString("show_user")) &" ORDER BY Gbook_Date DESC"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, Conn, 3, 1

objRS.PageSize = intPageSize
objRS.AbsolutePage = intPage
intTotalPages = objRS.PageCount

If objRS.EOF Then
	If Right(user("Username"),1)="s" Then 
	Response.Write user("Username") &" guestbook is empty!"
	Else
	Response.Write user("Username") &"'s guestbook is empty!"
	End If

Else
Do Until objRS.EOF or intRecordCount >= intPageSize

intRecordCount = intRecordCount + 1
wSQL="Select * From Users Where UserID="& objRS("Gbook_Signer")
Set us=Conn.Execute(wSQL)
qSQL="Select * From User_Info Where Info_Bel="& user("UserID")
Set inh=Conn.Execute(qSQL)
%>
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td rowspan="2" width="60">&nbsp;</td>
          <td><a href="user_info.asp?show_user=<%=us("UserID")%>"><%=us("Username")%></a></td>
        </tr>
        <tr> 
          <td><%=Replace(Server.HTMLEncode(objRS("Gbook_Text")), vbcrlf, "<br>")%></td>
        </tr>
      </table>
<%
inh.Close
Set inh=Nothing
us.Close
Set us=Nothing

objRS.MoveNext
Loop
End If

objRS.Close
Set objRS = Nothing

'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --
Call PageNavigation(intPage, intTotalPages)

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

[Redigerat av aleborg den 02 dec 2001]

jorgenMedlem sedan feb. 20012 412 inlägg
#2

Hej, jag använder det paging scriptet tillsamans med mysql, och det funkar höjdens.

Jag känner inte igen så många rader i din kod som härstammar från orginalscriptet. Så det är svårt att hjälpa dig. Vet ju inte hur allt annat ser ut heller.

red: visste inte att han gjort 2 versioner, jag använder den andre. Det var någ därför jag inte kände igen det :(

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 02 dec 2001]

aleborgMedlem sedan jan. 20013 341 inlägg
#3

Var hittade du den Do loopen?
Jag har däremot lagt in annan kod för hämtning av data i andra tabeller! Tog även bort alla kommentarer! Och inkluderade inte subben här!

Vilket fall som helst gjorde jag om allt och la in orginal koden och ändrade ytterst lite

<%
Option Explicit
Dim objConn
Dim strConnString
Dim strSQL
Dim objRS
Dim strName
Dim strComment
Dim dteDate
Dim intPageSize
Dim intPage
Dim intTotalPages
Dim intRecordCount

'## -- connection string, vilken provider och db ska användas --
strConnString = "absolut"

'## -- hur många inlägg ska visas per sida --
intPageSize = 10

'## -- vilken sida ska visas --
intPage = Request.QueryString("page")

'## -- om ingen querystring med sidvärde hittas, visa då första sidan --
If intPage = "" Then intPage = 1
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConnString

strSQL = "SELECT * FROM Guestbook Where Gbook_Bel="& Cint(Request.QueryString("show_user")) &" ORDER BY Gbook_Date DESC"

'## -- skapa ett recordset --
Set objRS = Server.CreateObject("ADODB.Recordset")
'## -- hur många poster ska visas per sida --
objRS.PageSize = intPageSize

'## -- öppna och hämta alla records --
objRS.Open strSQL, objConn, 3, 1

'## -- vilken sida i recordset uppdelningen ska visas --
objRS.AbsolutePage = intPage

'## -- hur många sidor finns i recordset uppdelningen --
intTotalPages = objRS.PageCount

If objRS.EOF Then
Response.Write "Det finns inga inlägg."
Else
'## -- lista alla inlägg som finns i db --
Do Until objRS.EOF or intRecordCount >= intPageSize

intRecordCount = intRecordCount + 1

strName = objRS(1)
strComment = objRS(2)
dteDate = objRS(3)

Response.Write "<B>Namn:</B> " & strName & "<BR>" & _
"<B>Datum:</B> " & dteDate & "<BR>" & _
"<B>Kommentar:</B><BR>" & _
strComment & _
"<HR size=""1"" noshade>"

objRS.MoveNext
Loop
End If

'## -- clean up --
objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --
Call PageNavigation(intPage, intTotalPages)
%>
</BODY>
</HTML>
<%
'## -- skapa sid-navigering --
Sub PageNavigation(ByVal WichPage, ByVal HowManyPages)
Dim strScriptName
Dim I

'## -- vilken sida ska navigeringen länka till --
strScriptName = Request.ServerVariables("SCRIPT_NAME")

'## -- visa föregående, länkat eller olänkat beroende på vilken sida som visas --
If CInt(WichPage) > 1 Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & WichPage - 1 & "'><< Föregående</A> "
Else
Response.Write "<< Föregående "
End If

'## -- lista ut alla sidnummer --
For I = 1 To HowManyPages
If CInt(WichPage) <> I Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & I & "'>" & I & "</A> "
Else
Response.Write "[ <B>" & I & "</B> ] "
End If
Next

'## -- visa Nästa, länkad eller olänkad beroende på vilken sida som visas --
If CInt(WichPage) < CInt(HowManyPages) Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & WichPage + 1 & "'>Nästa >>"
Else
Response.Write "Nästa >>"
End If

End Sub
%>

Nu får jag:
ADODB.Recordset error '800a0cb3'

Object or provider is not capable of performing requested operation.

/en/user_guestbook.asp, line 47

vilket är:
objRS.AbsolutePage = intPage

Jag har använt koden flera gånger innan och då har den alltid fungerat, men då har jag använt Access 2000 eller SQL server, nu är det MySQL!

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

jorgenMedlem sedan feb. 20012 412 inlägg
#4

Hej!

En databaskoppling i MySQL ser ut enligt följande:

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Mysql};Server=mysql.server.com;Database=databasnamn;UID=användarnamn;PWD=lösenord"

Här hittade jag do-loopen:

Do Until objRS.EOF or intRecordCount >= intPageSize

intRecordCount = intRecordCount + 1

strName = objRS(1)
strComment = objRS(2)
dteDate = objRS(3)

Response.Write "<B>Namn:</B> " & strName & "<BR>" & _
"<B>Datum:</B> " & dteDate & "<BR>" & _
"<B>Kommentar:</B><BR>" & _
strComment & _
"<HR size=""1"" noshade>"

objRS.MoveNext
Loop

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

aleborgMedlem sedan jan. 20013 341 inlägg
#5

men den finns ju i orginal koden, inget jag har lagt dit :)

Får fortfarande samma fel och på samma rad :(

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

aleborgMedlem sedan jan. 20013 341 inlägg
#6

fick det att funka, hittade ett tips i en annan tråd!

men jag vet inte vad det gör,
objRS.cursorlocation = 3
att läggas till innan öppnandet av recordsetet. Vad gör raden?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Det innebär att innehållet i recordsetet lagras på klienten och inte på databasservern.

------------------
essentitia preter non sans multiplicandum

aleborgMedlem sedan jan. 20013 341 inlägg
#8

bra/dåligt? Vad gör det för hastighet mm? Vad är det som krävt att jag var tvungen att använda det?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Det är bra för prestandan då det blir färre anrop till databasen.

Det är sämre då du använder mer minne på webservern för att lagra data. Så om du har stora datamängder är det inte så bra.

Vad är det som krävt att jag var tvungen att använda det?

brister i Myodbc.

------------------
essentitia preter non sans multiplicandum

145 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)