Ir para conteúdo

Arquivado

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

Bins

Paginação x MySQL

Recommended Posts

Saudações colegas!Estava usando um banco de dados access num sistema que fiz e migrei para MySQL. 99% funcionou perfeitamente, o 1% que deixou de funcionar é a paginação. A mensagem de erro que dá é:ADODB.Recordset error '800a0cb3' Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype. A conexao foi feita assimSet Conexao = Server.CreateObject("ADODB.Connection")banco_de_dadosStrSQL="SELECT * FROM clientes"Set Recset=Server.CreateObject("adodb.recordset")RecSet.Open StrSQL,Conexao,3,3O que eu preciso mudar para que rode com este banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ACHO que é isto da uma olhada

FLWWWWWWWWWW http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

<%

'Coloque aqui a quantidade de registros que você deseja por página

Const NumPerPage = 20

 

'Verifica qual a página solicitada

 

Dim CurPage

If Request.QueryString("CurPage") = "" then

CurPage = 1 'Primeira página

Else

CurPage = Request.QueryString("CurPage")

End If

 

'Cria conexão com o Banco de Dados

Dim conn

Set conn = Server.CreateObject("ADODB.Connection")

 

' Sem DNS

conn.Open "DBQ=" & Server.MapPath("teste.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

 

' Com DNS

conn.Open "teste"

 

'Cria o RecorSet

Dim rs

Set rs = Server.CreateObject("ADODB.Recordset")

 

'Acerta a posição do cursor

rs.CursorLocation = adUseClient

 

'Define o tamnho do Cache = para o número de registros

rs.CacheSize = NumPerPage

 

'Cria a String SQL

Dim strSQL

strSQL = "SELECT * FROM Jogos"

 

'Abre o RecordSet

rs.Open strSQL, Conn

 

'Move o RecorSet para o início

rs.MoveFirst

 

'Coloca a quantidade de páginas

rs.PageSize = NumPerPage

 

'Pega o número total de páginas

Dim TotalPages

TotalPages = rs.PageCount

 

'Configura a página atual

rs.AbsolutePage = CurPage

%>

 

Aqui ficará o LOOP

 

<%

'Zera o contador

Count = 0

 

'Inicia a Função DO, utilizando a quantidade de páginas especificadas

 

'Ou seja ele irá executar a ação até que o valor Count seja menor que "20" como está no nosso exemplo

 

Do While Not rs.EOF And Count < rs.PageSize

 

'Requisitamos o campo nome e o atribuimos a variável nome

nome=rs("nome")

%>

 

Aqui virá o resultado: <%=nome%>

 

<%

'Aumenta um número no Count para que a contagem de página funcione

Count = Count + 1

 

'Move o RecordSet para o próximo registro

rs.MoveNext

 

'Faz o Loop

Loop

%>

 

<br><br>

 

<%

'Coloca o número da página atual / total de páginas utilizando o Response.Write

 

Response.Write("<B><font color=""#003399"" size=""2"" face=""Arial""><strong> Página " & CurPage & " de " & TotalPages & " </strong></font></B><BR><BR> ")

 

'Mostra os botôes: Anterior e Próximo, utilizando da opção de IF

if CurPage > 1 then

 

'Se for a primeira página, Mostra apenas o botão Próximo

Response.Write("<B><font color=""#FF8040"">")

Response.Write("<a href='noticias.asp?curpage=" & curpage - 1 & "'>")

Response.Write(" Anterior ")

 

End If

 

if CInt(CurPage) <> CInt(TotalPages) then

 

'Se estiver na última página, mostra apenas o botão Anterior

Response.Write("<B><font color=""#FF8040"">")

Response.Write("<a href='noticias.asp?curpage=" & curpage + 1 & "'>")

Response.Write(" Próximo ")

 

End If

%>

 

Não alterei nada do codigoa apenas removi os espaços entre as linhas que estavam exagerados...

 

Mário Monteiro

Moderador ASP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bins só respondendo sua pergunta, tenta mudar o drive de conexao do bancocomo esta sua conexão??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salvo engano, os drivers atuais do MYSQL não dão um bom suporte ao ADODB.RecordSet. A paginação deverá ser diferente. Creio ter um exemplo de paginação com MySQL na Área de Códigos, vou dar uma olhada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salvo engano, os drivers atuais do MYSQL não dão um bom suporte ao ADODB.RecordSet. A paginação deverá ser diferente. Creio ter um exemplo de paginação com MySQL na Área de Códigos, vou dar uma olhada.

bem salgado se o recorset não funciona direito eu recomendo o cara a pagina a partir da SQL mesmoeu particularmente prefiro paginar assim pois so pego o que preciso e não tudo pra escolher depois com o lance das pagesFaz assim cria uma consulta só pra pegar a quantidade de registrostipo assim
SELECT COUNT(*) AS Quantidade FROM TABELA
beleza você já tem a quantidade de registrosdivide este valor entre as pages e passa como parametro na paginação apenas a pocição de origem do registro tipo assim
inicio = request("inicio")
so não esquece de verificar com if's se ta na primeira page ou na ultima pois isto vai ter que ser na unha mesmo, depois é só definir o numero de registro e criar sua consulta com LIMIT
registros = 10sql = "SELECT * FROM TABELA LIMIT "& inicio &", "&inicio+registros
bem espero ter ajudado, e os proprios gerenciadores do MySql (pelo menos o PHPMYAdmin) usam assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal pelas dicas! Essa última do SQL eu gostei, não sabia que tinha este parametro LIMIT (primeiro), (ultimo), vou testá-lo depois.Bom, a conexão fiz pegando um exemplo que eu perguntei aqui no Fórum. A paginação está perfeita, apenas usando o banco de dados access. Talvez seja algum bug do MyOBDC o driver que é utilizado para este tipo de conexão...De qualquer forma, valeu :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal pelas dicas! Essa última do SQL eu gostei, não sabia que tinha este parametro LIMIT (primeiro), (ultimo), vou testá-lo depois.Bom, a conexão fiz pegando um exemplo que eu perguntei aqui no Fórum. A paginação está perfeita, apenas usando o banco de dados access. Talvez seja algum bug do MyOBDC o driver que é utilizado para este tipo de conexão...De qualquer forma, valeu :D

beleza Bins acho que assim a paginação funciona pra qualquer bd... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Mario, o LIMIT, pelo que eu saiba, não rola em Access e SQLServer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Mario, o LIMIT, pelo que eu saiba, não rola em Access e SQLServer.

verdade salgado...

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.