webForumDet fria alternativet

Funktion för paging

ASP

6 svar · 247 visningar · startad av andreasw

Medlem sedan sep. 20028 inlägg
Frågan#1

Jag försöker göra en pagingfunktion men får inte till det riktigt. Antar att det är något jag missförstått.

' Hämta Recordset med Paging ========================================================
Dim objRs, intPageId, intCurrentPost, intPages
Public Function getPagedRs(strSql, intPageSize)
Dim objConn
Set objConn = getConn()
Set objRs = Server.CreateObject("ADODB.RecordSet")
	
intPageId = request.querystring("page_id")
if intPageId = "" then intPageId = 1
	
With objRs
   .cursorlocation = 3   		
   .open strSql, objConn   		
   If Not objRs.EOF Then
     .pagesize = intPageSize 
     .absolutepage = intPageId 
  End If
End With
	
intPages = CInt(objRs.pagecount) 	
intCurrentPost = 0 	

Set getPagedRs = objRs
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
End Function

Jag försöker hämta recsetet med

strSql = "SELECT id, name, city FROM retailers WHERE " & strMethod & " LIKE '" & sqlFix(Request.Querystring("q")) & "%' ORDER BY " & strMethod
						
Set rs = getPagedRs(strSql, 10)

[B]If rs.EOF Then 'Line 132[/B]

Jag får felmeddelandet

ADODB.Recordset error '800a0e78'
Operation is not allowed when the object is closed.
/admin/retailers.asp, line 132

Medlem sedan okt. 20005 273 inlägg
#2

Felmedelandet du får beror på att du har stängt ditt connection-object.

Medlem sedan sep. 20028 inlägg
#3

Är du säker på det? Jag trodde att jag kunde förstöra det när jag lagt över obj Rs i rs.
Har sett flera exempel på att man kan göra så här på wf. T ex http://www.webforum.nu/showthread.php?s=&postid=484811#post484811

Medlem sedan feb. 200112 078 inlägg
#4

andreasw skrev:

Är du säker på det? Jag trodde att jag kunde förstöra det när jag lagt över obj Rs i rs.
Har sett flera exempel på att man kan göra så här på wf. T ex http://www.webforum.nu/showthread.php?s=&postid=484811#post484811

Redigering) Jag skrev fel, men jag såg även vad som var problemet.

Du får inte använda metoden .close innan när du returnerar från en funktion på det sättet. Tilldela bara objektet 'nothing' så kommer det fungera. Att använda close och sätta nothing är inte samma sak.

Medlem sedan sep. 20028 inlägg
#5

Betyder det att jag inte skall förstöra connection-objektet i funktionen utan efter att jag använt det utanför funktionen?

Jag lägger ju över RecordSet-objektet i variabeln rs innan jag förstör det. Eller?

[b]Set getPagedRs = objRs[/b]
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
Medlem sedan sep. 20028 inlägg
#6

Du han före mig med redigeringen OveRRidE. Skall genast testa. Tack.

Medlem sedan sep. 20028 inlägg
#7

Nu fungerar det. Tack för hjälpen.

265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)