webForumDet fria alternativet

Paging problem

17 svar · 379 visningar · startad av Gimbo

GimboMedlem sedan dec. 20001 626 inlägg
#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 %>
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Om du byter

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

till

If  page < TotalPages Then
GimboMedlem 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...

LarsGMedlem 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
GimboMedlem 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'
LarsGMedlem 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

GimboMedlem 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
LarsGMedlem sedan dec. 200012 464 inlägg
#8

Den raden måste ligga innan rs.open

GimboMedlem 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
LarsGMedlem 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.

GimboMedlem sedan dec. 20001 626 inlägg
#11

mmm men det fungerar fortfarande inte...

NyedalDesignMedlem 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..

GimboMedlem 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'
LarsGMedlem sedan dec. 200012 464 inlägg
#14

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

GimboMedlem 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å?

solbulleMedlem 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)

GimboMedlem sedan dec. 20001 626 inlägg
#17

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

GimboMedlem 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?

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