Hej, Jo det gör det. Du kan inte förlita dig på att använda två olika datakällor med samma kod till 100%. Jag trodde bara det var sql:en som skiljde och den(min här alltså) funkar mot båda databaserna. En gammal fråga som jag tidigare har missat. Jag skulle skrivit på följande sätt: Jag hade samma problem när jag gick från Access till MySQL. Paging och cursortype?
Har ett problem med paging. När jag utvecklat min applikation lokalt fungerar min paging fint utan problem.
När jag sedan flyttar över filerna till mitt webhotell får jag följande felmeddelande:
<i>Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.
/inspiration/monter.asp, line 50</i>
Lokalt använder jag Access databas och på hotellet använder jag MySql, men det borde väl inte spela någon roll i detta läget?
Så här ser det ut på rad 50:
<code>
rs.AbsolutePage = currentPage
</code>
rs.PageSize,rs.PageCount fungerar men alltså inte AbsolutePage.....
Här är lite mer kod i fall det hjälper:
<code>
<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = 3
sql = "select * from MONTRAR as M,KATEGORIER as K "
sql = sql & "where M.KATEGORI_ID = K.KATEGORI_ID "
sql = sql & "and M.KATEGORI_ID = " & katID & " "
sql = sql & "order by MONTER_NUMMER asc"
rs.Open sql,connect
rs.PageSize = 1
NoOfPages = rs.PageCount
If page = "" Then
currentPage = 1
Else
currentPage = page
End If
If NoOfPages = 0 Then
Response.Write("Inga montrar hittade")
Else
rs.AbsolutePage = currentPage ' <-- RAD 50
End If
While Not rs.eof
'loopar resultatet....
rs.MoveNext
Wend
%>
</code>
Någon som hjälpa mig att hitta felet??
/JockeSv: Paging och cursortype?
Sv: Paging och cursortype?
Men okej, någon som har förslag på vad jag ska göra?
/JockeSv: Paging och cursortype?
Om du inte har löst detta, med paging och ADODB.Recordset mot MySQL så får du en här:
<code>
<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = 3
sql = "select * from MONTRAR as M,KATEGORIER as K "
sql = sql & "where M.KATEGORI_ID = K.KATEGORI_ID "
sql = sql & "and M.KATEGORI_ID = " & katID & " "
sql = sql & "order by MONTER_NUMMER asc"
rs.Open sql,connect, 1, 3
rs.PageSize = 1
NoOfPages = rs.PageCount
If page = "" Then
currentPage = 1
Else
currentPage = page
End If
If NoOfPages = 0 Then
Response.Write("Inga montrar hittade")
Else
rs.AbsolutePage = currentPage ' <-- RAD 50
End If
While Not rs.eof
'loopar resultatet....
rs.MoveNext
Wend
%>
</code>
det enda jag har gjort är att ändra själva öppningen av recordsetet. rs.Open sql, connect, 1, 3
dvs, ändrat LockType och CursorType
Det du gjorde var att öppna recordsetet default vilket gör att du inte kan "stega" i recordsetet som behövs för att få fram RecordCount t ex.
cya,
/PatrikBSv: Paging och cursortype?
<code>
<%
Dim Position
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adUseClient = 3
Const MyPageSize = 5
strSQL = "SELECT *" & vbCrLf & _
"FROM MONTRAR as M INNER JOIN KATEGORIER as K ON M.KATEGORI_ID = K.KATEGORI_ID" & vbCrLf & _
"WHERE M.KATEGORI_ID = " & katID & vbCrLf & _
"ORDER BY MONTER_NUMMER asc"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.PageSize = MyPageSize
rs.CursorLocation = adUseClient
rs.Open strSQL, connect, adOpenStatic, adLockReadOnly
If rs.EOF Then
Response.Write("Inga montrar hittade")
Else
NoOfPages = rs.PageCount
If IsNumeric(page) Then
currentPage = CLng(page)
If currentPage > NoOfPages Then
rs.AbsolutePage = NoOfPages
ElseIf currentPage > 1 Then
rs.AbsolutePage = currentPage
End If
End If
currentPage = rs.AbsolutePage
For Position = 1 to MyPageSize
'loopar resultatet....
rs.MoveNext
If rs.eof Then Exit For
Next
End If
rs.Close
Set rs = Nothing
%>
</code>
Se om det hjälper.Sv: Paging och cursortype?
Hur som helst så löste jag det genom att använda LIMIT funktionen i MySQL när jag gör urvalet ur databasen.
T ex.
<code>
sSQLs = "SELECT * FROM tblNamn ORDER BY lastname ASC LIMIT 0, 10"
</code>
Se även [Mysql hur mycket behöver jag ändra??]