webForumDet fria alternativet
Logga in / Bli medlem

Paging problem

ASP

17 svar · 381 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Trådstart#1

Hejsan!

Håller på och skriver ut poster från databasen då jag tänkte använda mej av paging...
Men har ett problem, paging scriptet skriver inte ut antalet sidor som den delat in posterna på, och min forward länk dyker upp men när jag klickar på den visas inte fortsätningen av posterna så här ser koden ut:

anslutning till databas och min sql kod här
.
.

Set RS = Conn.Execute(sql)
		
		Const perSida = 4 
		If Request.QueryString("page") = "" then 
		page = 1 
		Else 
		page = Request.QueryString("page") 
		End If 

		RS.CursorLocation = 3
		RS.CacheSize = perSida
		
		if (RS.eof or RS.BOF) then
		response.write " No match found"
		end if

%>

<%
RS.MoveFirst 
RS.PageSize = perSida

TotalPages = RS.PageCount 
RS.AbsolutePage = page 

Count = 0 
Do While Not RS.EOF And Count < RS.PageSize 
%>
      <tr>
      <td width="81" bgcolor="#CFD4E1"><%=RS("ID") %></td>
      <td width="76" bgcolor="#CFD4E1"><%
                              if (RS.Fields("country") = "US") Then
%>
        <a target="blank" href="<%=locateLink %>"><% Response.Write RS.Fields("country")%> <img border="0" src="/images/map.gif"> </a>
        <%
  else 
Response.Write RS.Fields("country")
end if
 %>
</td>

      <td width="123" bgcolor="#CFD4E1"><%=RS("address1") %></td>

      <%
	Count = Count + 1 
	RS.movenext
	'Loop
	Loop

%>

      </tr>   
       <% 
          If TotalPages <> 1 Then
          If (Int(page)) <> 1 Then
          %>
        <a href="infor.asp?page=<%=(Int(page)-1)%>" onfocus="this.blur()"><b>« Bakåt</b></a>
          <%Else%>
          
          <%End If%>
          <%
          For Pages = 1 To TotalPages 
          %> 
          <%If (Int(Pages)) = (Int(page)) Then%><b><font color="#000000"><%=Pages%></font></b> <%Else%><a href="display.asp?page=<%=Pages%>" onfocus="this.blur()"><b><%=Pages%></b></a> <%End If%><%Next%> 
          <%End If%> 

          <%
          If (Int(page)) <> (Int(TotalPages)) AND Count > 0 Then
          %>
          <a href="display.asp?page=<%=(Int(page)+1)%>" onfocus="this.blur()"><b>Forward »</b></a>
          <%Else%>
          
 <% END IF %>
Medlem sedan dec. 200012 464 inlägg
#2

Om du byter

 If (Int(page)) <> (Int(TotalPages)) AND Count > 0 Then

till

If  page < TotalPages Then
Medlem sedan dec. 20001 626 inlägg
#3

nope samma problem, alltså forward länken dyker upp men den ska ju räkna ut hur många sidor alla poster kommer att delas in på och skriva ut antelet sidor, men det gör den inte...

Medlem sedan dec. 200012 464 inlägg
#4

Jag läste lite för fort.
Om du flyttar om koden i början lite då så att cursorlocation sätts innan du gör execute.

		
Const perSida = 4 
If Request.QueryString("page") = "" then 
		page = 1 
Else 
		page = Request.QueryString("page") 
End If 

RS.CursorLocation = 3
RS.CacheSize = perSida
		
Set RS = Conn.Execute(sql)
if (RS.eof or RS.BOF) then
		response.write " No match found"
                response.end
end if
Medlem sedan dec. 20001 626 inlägg
#5

den vill fortfarande inte LarsG :(

glömde nämna felmeddelandet efter att jag gjorde som du sist sa.

Microsoft VBScript runtime error '800a01a8' 
Object required: 'RS'
Medlem sedan dec. 200012 464 inlägg
#6

Ja visst ja

Du måste använda

set rs = server.createobject("adodb.recordset")

och

rs.open sql,conn

istället för conn.execute

Medlem sedan dec. 20001 626 inlägg
#7

ohhhh... nu rfår jag detta felmeddelande:

ADODB.Recordset error '800a0e79' 
Operation is not allowed when the object is open.

på denna rad:

RS.CursorLocation = 3
Medlem sedan dec. 200012 464 inlägg
#8

Den raden måste ligga innan rs.open

Medlem sedan dec. 20001 626 inlägg
#9

nur ser det ut så här:

		Set Conn = Server.CreateObject("ADODB.Connection")
		Set RS = Server.CreateObject("ADODB.Recordset")
       Conn.Open "......"
                
       
       Const perSida = 4 
		If Request.QueryString("page") = "" then 
		page = 1 
		Else 
		page = Request.QueryString("page") 
		End If 

		RS.CursorLocation = 3
		RS.CacheSize = perSida

		RS.Open sql,conn
		
		sql=....

och jag får felmeddelandet:

Item cannot be found in the collection corresponding to the requested name or ordinal.

får fel på denna rad:

TotalPages = RS.PageCount 
RS.AbsolutePage = page
Medlem sedan dec. 200012 464 inlägg
#10

Hmm

Stämmer detta?

RS.Open sql,conn
		
		sql=....

Dom raderna borde väl ligga i omvänd ordning.

Medlem sedan dec. 20001 626 inlägg
#11

mmm men det fungerar fortfarande inte...

Medlem sedan apr. 200274 inlägg
#12

varför kör du 3st Conn.Open "ProdInfo" ??

Sql-satsen måste ligga innan du öppnar den med
RecordSet..

hur ser koden ut nu då?

den säger att fältet inte går att hitta i databasen..

Medlem sedan dec. 20001 626 inlägg
#13

så här ser det ut nu :

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

       
Const perSida = 4 
If Request.QueryString("page") = "" then 
page = 1 
Else 
page = Request.QueryString("page") 
End If 
RS.CursorLocation = 3
RS.CacheSize = perSida
		
sql="...."
RS.Open sql,conn

och jag får detta felmeddelande:

Microsoft VBScript runtime error '800a005b' 
Object variable not set: 'RS'
Medlem sedan dec. 200012 464 inlägg
#14

Hur ser hela koden ut och på vilken rad får du felet?

Medlem sedan dec. 20001 626 inlägg
#15

hela koden...

Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")
Conn.Open "....","....","...."
' RS.Open sql,conn          
       
Const perSida = 4 
If Request.QueryString("page") = "" then 
page = 1 
Else 
page = Request.QueryString("page") 
End If 
RS.CursorLocation = 3
RS.CacheSize = perSida
'RS.Open sql,conn
sql="...." 
			
'Response.Write sql
 RS.Open sql,conn          
'Set RS = Conn.Execute(sql)
if (RS.eof or RS.BOF) then
response.write " No match found"
end if

%>

<%
RS.MoveFirst 
RS.PageSize = perSida

TotalPages = RS.PageCount 
RS.AbsolutePage = page 

Count = 0 
Do While Not RS.EOF And Count < RS.PageSize 
%>
<tr>
<td width="81" bgcolor="#CFD4E1"><%=RS("Id")%> </td>
<td width="76" bgcolor="#CFD4E1"><%
 if (RS.Fields("country") = "SWE") Then
%>
 <a target="blank" href="swe.html"><% Response.Write RS.Fields("country")%> <img border="0" src="/images/map.gif"> </a>
<%
else 
Response.Write RS.Fields("country")
 end if
%>
</td>

      <td width="123" bgcolor="#CFD4E1"><%=RS("address1") %></td>

      <%
Count = Count + 1 
RS.movenext
'Loop
Loop
RS.Close
RS = nothing
Conn.Close
Conn = nothing
%>

      </tr>   
       <% 
      If TotalPages <> 1 Then
      If (Int(page)) <> 1 Then
          %>
        <a href="display.asp?page=<%=(Int(page)-1)%>" onfocus="this.blur()"><b>« Bakåt</b></a>
          <%Else%>
          
          <%End If%>
          <%
          For Pages = 1 To TotalPages 
          %> 
          <%If (Int(Pages)) = (Int(page)) Then%>
          <b><font color="#000000"><%=Pages%></font></b> 
          <%Else%>
          <a href="display.asp?page=<%=Pages%>" onfocus="this.blur()"><b><%=Pages%></b></a> 
          <%End If%>
          <%Next%> 
          <%End If%> 

          <%
          'If  page > TotalPages Then
          If (Int(page)) <> (Int(TotalPages)) AND Count > 0 Then
          %>
          <a href="display.asp?page=<%=(Int(page)+1)%>" onfocus="this.blur()"><b>Forward »</b></a>
          <%Else%>
          
 <% END IF %>

nu får jag inget felmeddelande längre pagingen verkar fungera, dvs den skriver ut antalet sidor och framåt knappen dyker upp MEN, på sidan två, tre, fyra osv så skriver den inte ut ngt, den skriver bara ut på första sidan, vad kan felet bero på?

Medlem sedan mars 20015 287 inlägg
#16

Hur ser din sql ut? Får du med dig hela den i länkningen i din paging?
(Tänkte alltså om den var uppbyggd mha querystring)

Medlem sedan dec. 20001 626 inlägg
#17

har en helt vanlig sql, fast där jag i where kör en if satts

Medlem sedan dec. 20001 626 inlägg
#18

kan problemet ligga i att det är en ms sql databas vi använder, och att cursor inte stödjer det eller ngt sånt?

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