Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edson L. Zimmermann

Paginação com Colunas

Recommended Posts

Boa tarde A todos.

 

Estou tentando alterar esse código para exibir o resultado em colunas, mais não estou conseguindo, se alguém puder analizar o código e ver onde estou errando eu agradeço.

 

O erro é esse:

 

Tipo de erro:
Objeto Response, ASP 0104 (0x80070057)
Operação não permitida

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% 
'Efetuando a conexão com a base de dados criada -----------------------
Set Conn = Server.CreateObject("AdoDb.Connection") 
Conn.provider="Microsoft.Jet.OLEDB.4.0" 
Conn.connectionstring=Server.Mappath("dados/banco.mdb") 
Conn.open 
'--------------------------------------------------------------------------

'Vamos criar o objeto Record Set -> neste caso é necessário declará-lo,
'pois vamos utilizar algumas funções deste objeto 
Set RS = Server.CreateObject("adodb.recordset")

RS.PageSize = 12 'quantidade de registros por página. Você pode alterar sem conforme precise.

'Vamos fazer a busca na tabela contatos
SQL = "select * from produtos" 
RS.Open SQL,Conn,3,3

'Vamos agora verificar exceções do tipo “fim de arquivo” (EOF), se a página atual é menor 
'que zero, se é maior que o número total de páginas, etc.
IF RS.EOF then 
   Response.Write "nenhum registro encontrado"
   Response.End 'paramos o programa
ELSE
   'Definindo em qual pagina o visitante está
   IF Request.QueryString("pagina")="" then 
      intpagina=1 
   ELSE
      IF cint(Request.QueryString("pagina"))<1 then
         intpagina=1 
      ELSE
         IF cint(Request.QueryString("pagina"))> RS.PageCount then 
            intpagina=RS.PageCount 
         ELSE
            intpagina=Request.QueryString("pagina")
         END IF
      END IF
   END IF
END IF
'Fim das verificações de exceções

'Usamos a propriedade AbsolutePage para dizer ao RS que página ele esta 
RS.AbsolutePage=intpagina

' Inicia o contador que vai controlar os registros mostrados
intrec=0

'Enquanto o contador for menor que a quantidade de registros mostrados ou
' não for o final do arquivo 
While intrec < RS.PageSize and not RS.EOF %>
<%'------------------- AQUI VEM TUDO O QUE SEÁ PAGINADO -----------------------%>
  
  <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
a:link {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	font-weight: bold;
	color: #333333;
	text-decoration: none;
}
a:link:hover {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	font-weight: bold;
	color: #333333;
	text-decoration: underline;
}
a:visited {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	font-weight: bold;
	color: #333333;
	text-decoration: none;
}
a:visited:hover {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	font-weight: bold;
	color: #333333;
	text-decoration: underline;
}
.style1 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #333333;
}
-->
</style>
</head>

<body>

<table width="900" border="0" cellpadding="0" cellspacing="0" align="center">
  <!--DWLayoutTable-->
  <tr bgcolor="#CCCCCC">
       <%
	     i = 1
		 while not RS.Eof
         %> 
     <td><% =RS("PROD_NOME") %></td>   
         <%
         If i>=2 Then
		 i=1
		 Response.Write("</tr><tr> ")
		 Else
		 i=i+1
		 End If
		 Wend
	     %>   
  </tr
></table>
</body>
</html>
  
<%'---------------------------------------------------------------------------------------------%>
  <%   RS.MoveNext

   ' Acrescenta +1 ao contador
   intrec=intrec+1 
   'Se for EOF (fim de arquivo), imprimir branco na tela
   IF RS.EOF then 
      response.write " " 
   END IF
Wend 'fim do loop

'Vamos verificar se não é a página 1, para podermos colocar o link “anterior”. 
IF intpagina > 1 then 
%> 
   <a href="paginacao.asp?pagina=<%=intpagina-1%>">Anterior</a> 
<% 
END IF

'Se não estivermos no último registro contado, então é mostrado o link p/ a próxima página 
IF strcomp(intpagina,RS.PageCount) <> 0 then 
%> 
   <a href="paginacao.asp?pagina=<%=intpagina + 1%>">Proxima</a> 
<% 
END IF
%>


Compartilhar este post


Link para o post
Compartilhar em outros sites

existem alguns exemplos , no forum, sobre esse assunto, pode te ajudar

Esse erro geralmente ocorre quando criamos um loop infinito,caso o loop seja muito grande, você pode acabar travando o servidor ou até mesmo gerar algum problema na memória.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existem alguns exemplos , no forum, sobre esse assunto, pode te ajudar

Esse erro geralmente ocorre quando criamos um loop infinito,caso o loop seja muito grande, você pode acabar travando o servidor ou até mesmo gerar algum problema na memória.

 

Então eu pesquisei bastante, até o exemplo que usei como base é do imasters. Ontem a noite achei um aqui no forum com mysql, como usa access alterei o "limit" por "Between", a primeira página dá certo, não. Vou postar o código caso alguém possa me ajuadar.

 

<%

' Abre a Conexão com o Banco de Dados
set Conexao = server.CreateObject("adodb.connection")
Conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("dados/banco.mdb")

'Set Conexao = Server.CreateObject("ADODB.Connection")
'Conexao.ConnectionString = "DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=127.0.0.1;DATABASE=paginacao;UID=root;PWD=;"
'Conexao.Open

' Select para obter o total de registros da tabela
Set rs = Conexao.Execute("SELECT COUNT(prod_id) As total_registros FROM produtos")
total_registros = rs("total_registros")
rs.Close
Set rs = Nothing

' Variával com o total de registros listados por página.
registros_pg = 12

' Variável com o número de colunas a ser mostrado.
numero_colunas = 3

' Obtem o número total de paginas.
total_paginas = total_registros / registros_pg
If (Instr(total_paginas, ",") > 0) Then total_paginas = Int(total_paginas + 1)

' Verifica a página atual
pagina = Request.QueryString("pagina")
If (Not IsNumeric(pagina)) Then
pagina = 1
ElseIf IsEmpty(pagina) Or pagina < 1 Then
pagina = 1
ElseIf Int(pagina) > Int(total_paginas) Then
pagina = Int(total_paginas)
End If

' Pega o número do primeiro registro a obter na sql
reg_inicio = pagina * registros_pg - registros_pg

Response.Write "<table width='100%' border='1' cellspacing='0' cellpadding='0'>"

' SQL para pegar os registros.
'Set rs = Conexao.Execute("SELECT * FROM produtos order by prod_id desc LIMIT" & reg_inicio &","&registros_pg&"")
Set rs = Conexao.Execute("SELECT * FROM produtos where prod_id between " & reg_inicio &" and "&registros_pg&" order by prod_id desc")
If rs.EOF Then
Response.Write "Nenhum registros encontrado"
Else
While Not rs.EOF
  Response.Write "<tr>" & VbCrLf
  For i = 1 To numero_colunas
   Response.Write "<td>"
   If Not rs.EOF Then
    Response.Write "Registro: "& rs("PROD_id") &"<br>" & VbCrLf
    rs.MoveNext
   Else
    Response.Write " "
   End If
   Response.Write "</td>"
  Next
  Response.Write "</tr>" & VbCrLf
Wend
End If
rs.Close
Set rs = Nothing

Response.Write "</table>"

Response.Write "<hr>"

' Fecha a conexão com o banco de dados
Conexao.Close
Set Conexao = Nothing

'INÍCIO DOS LINKS DA PAGINAÇÃO.
If Int(total_paginas) > 1 Then
Response.Write "<b>Páginas:</b> "

' Aqui você define quantos links mostrará antes e depois da pagina atual.
links = 5

' Aqui é criado os links antes da página atual.
For i = (pagina - links) To (pagina - 1)
  If i > 0 Then
   Response.Write " <a href='?pagina="& i &"'>"& i &"</a> "
  End If
Next

'Imprime o número da página atual
Response.Write " <b>"& pagina &"</b> "

' Aqui é criado os links após a página atual.
For i = (pagina + 1) To (pagina + links)
  If i > total_paginas Then Exit For
  Response.Write " <a href='?pagina="& i &"'>"& i &"</a> "
Next
End If

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.