ViaPocket Posted November 14, 2012 Report Share Posted November 14, 2012 Seguinte. Quero saber qual o caminho para que devo seguir para que eu faça uma "paginação" de registro único.Imagine que estou visualizando determinado registro cujo ID foi capturado da URL.Quero que, ao clicar num elemento, o regsitro atual salte para o próximo ou anterior.To tentando me virar aqui com algo como rs.Movenext...mas ainda nada de funcionar.Um help por caridade. Quote Link to comment Share on other sites More sharing options...
0 bareta Posted November 16, 2012 Report Share Posted November 16, 2012 Você pode usar uma paginação mesmo exibir de 1 em 1 registro (verifique os tópicos fixos ai em cima que tem exemplos ótimos), ou use sempre top 1 registros...exemploid atual=950, o anterior dele é 900 e o próximo é 1000botão anterior manda um id=949, o sql fica algo do tipo top 1 id from tabela where id<=949ou ainda usar os 3 ultimos registros sempre... onde você sabera qual o anterior e qual o proximo Quote Link to comment Share on other sites More sharing options...
0 ViaPocket Posted December 18, 2012 Author Report Share Posted December 18, 2012 (edited) Ok Bareta. Obrigado pelas sugestões. No meu caso o ID não é ordenado...então não posso "confiar" em colocar para Anterior algo como ID atual-1 e Próximo o ID atual +1. Achei que fosse só colocar um rs.Next e rs.Previous (ou algo equivalente). Para movimentar, o recordset tem que estar com vários registros Isso não acontece porque o select trás somente um registro (tem um WHERE na query).Vou dar uma fuçada no fórum. Se tiver algo na agulha posta ai.valeu! Edited December 19, 2012 by ViaPocket Quote Link to comment Share on other sites More sharing options...
0 bareta Posted December 27, 2012 Report Share Posted December 27, 2012 use a propriedade PageSize do recordeset definido para 1 registroabaixo link do tópico com uma paginação http://scriptbrasil.com.br/forum/index.php?showtopic=12549 Quote Link to comment Share on other sites More sharing options...
0 1980coelho Posted January 27, 2013 Report Share Posted January 27, 2013 use a propriedade PageSize do recordeset definido para 1 registroabaixo link do tópico com uma paginação http://scriptbrasil.com.br/forum/index.php?showtopic=12549estou com o mesmo problema.. uma pagina ue estou fazendo sobre videogames, me lista o top10 games e ao clicar em um dos 10 da lista que me vem as informacoes do ID correspondente da lista queria avancar para o proximo ou voltar ao anterior e ficar entre os 10 itens somente.. não estou conseguindo, pelo que estou vendo paginacao que falam e diferente se pega todos itens da tabela, nesse caso pelo que entendo e tipo so avancar ou retroceder pelo ID chamado como foi citado acima, +1 ou -1 no ID.. Quote Link to comment Share on other sites More sharing options...
0 ViaPocket Posted January 31, 2013 Author Report Share Posted January 31, 2013 (edited) Olá amigos. Testei a paginação do link acima. Perfeita! Mas minha necessidade é de navegar por um registros por vez. Se eu usar o código o código do link acima para navegar por um registro por vez as opções Prox, Anterior, Primeiro, Último e etc ficam desabilitadas. Isso ocorre porque no meu caso usa um WHERE na consulta. Então o recordset sempre será igual 1 (um). E sendo assim o código entendo que não faz sentido exibir os links de navegação. Entendo que a lógica esteja correta.No meu caso o id do registro não tem ordem, é aleatório no BD. Então não dá pra usar a lógica "mova para rs +1 ou rs -1. Pois se meu id for igual a 5 talvez não exista no banco o item 6 nem o item 4.Por outro lado, se eu usar WHERE Campo <= '"&meu_id&"' também não funciona porque deste modo a consulta não trará o item que eu quero.Se alguém puder dar uma luz ficarei muito grato. Edited January 31, 2013 by ViaPocket Quote Link to comment Share on other sites More sharing options...
0 1980coelho Posted January 31, 2013 Report Share Posted January 31, 2013 (edited) Olá amigos. Testei a paginação do link acima. Perfeita! Mas minha necessidade é de navegar por um registros por vez. Se eu usar o código o código do link acima para navegar por um registro por vez as opções Prox, Anterior, Primeiro, Último e etc ficam desabilitadas. Isso ocorre porque no meu caso usa um WHERE na consulta. Então o recordset sempre será igual 1 (um). E sendo assim o código entendo que não faz sentido exibir os links de navegação. Entendo que a lógica esteja correta.No meu caso o id do registro não tem ordem, é aleatório no BD. Então não dá pra usar a lógica "mova para rs +1 ou rs -1. Pois se meu id for igual a 5 talvez não exista no banco o item 6 nem o item 4.Por outro lado, se eu usar WHERE Campo <= '"&meu_id&"' também não funciona porque deste modo a consulta não trará o item que eu quero.Se alguém puder dar uma luz ficarei muito grato.ve se entendi e se esse codigo te resolve:<% Set adoCon = Server.CreateObject("ADODB.Connection")src = Server.MapPath("produtos.mdb")sConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & srcadoCon.Open sConnStrstrID = Clng(Request.Querystring("ID"))Set rs = Server.CreateObject("ADODB.Recordset")strSQL = "SELECT [iD], [category], [name], [info] FROM tblGames"rs.open strSQL, adoCon, 3, 3rs.PageSize = 1If rs.EOF Then Mensagem = "Nenhum Registro Encontrado"Response.End ElseIf Request.QueryString("pagina")="" Then intpagina = 1ElseIf cint(Request.QueryString("pagina"))<1 Thenintpagina = 1ElseIf cint(Request.QueryString("pagina"))>rs.PageCount Then intpagina = rs.PageCountElseintpagina = Request.QueryString("pagina")End IfEnd If End If End If rs.AbsolutePage = intpagina intrec = 0While intrec<rs.PageSize And NOT rs.EOF Response.Write ("<font size='3'>")Response.Write (rs("Name"))Response.Write ("<br>")Response.Write ("<font size='2'>")Response.Write (rs("Info"))Response.Write ("</font>")Response.Write ("<br>")rs.MoveNextintrec = intrec + 1If rs.EOF Then response.write " " End If Wend If intpagina>1 Then %> <a href="_paging.asp?pagina=<%=intpagina-1%>">Anterior</a> <% End IfIf StrComp(intpagina,rsViewTop10game.PageCount)<>0 Then %><a href="_paging.asp?pagina=<%=intpagina + 1%>">Próximo</a> <%End IfSet rs = NothingSet adoCon = Nothing %>se tiver duvidas fale.. abraco Edited January 31, 2013 by 1980coelho Quote Link to comment Share on other sites More sharing options...
0 ViaPocket Posted February 2, 2013 Author Report Share Posted February 2, 2013 (edited) Olá 1980coelho! Primeiramente agradeço pela ajuda.Olha, é quase isso. Imagina o cenário. O cara clica num item da página A (página que lista os itens) e vai para a página B (página que trás os detalhes do item). O parâmetro é passado pela URL. Imagine que o ID passado pela URL seja 20. Então ao carregar a página B será exibido detalhes do item com ID igual a 20. Certo?Até aqui nada de novidade.O que preciso é que na página B tenha os botões (ou links) de navegação para navegar para outros itens na página B. Então tem que ser um esquema que passe o parâmetro (ID) para a própria página B. Ai tem que pegar no recordset o ID do item anterior e item posterior para servir como parâmetro para mandar para a URL.Outra possibilidade seria assim.Ter uma condição que, se o parâmetro da URL for null ele roda a consulta (sem parâmetro). O código que postou está perfeito para isso, caso contrário roda a consulta usando um WHERE CampoID= var_da_URL, ou seja, com parâmetro da URL.Isso eu montei. Desativei O IF do os links de navegação. Até que funcionou, dá pra navegar do jeito que preciso (com ou sem parâmetro na URL).Mas tem um pequeno inconveniente. Como desativei o IF dos navegadores o link Próximo fica aparecendo mesmo quando é o último registro e o link Anterior fica aparecendo mesmo quando é o primeiro registro.Como faço para contornar isso?valeu. Edited February 2, 2013 by ViaPocket Quote Link to comment Share on other sites More sharing options...
0 1980coelho Posted February 2, 2013 Report Share Posted February 2, 2013 bom vamos ver se entendi e consigo ajudar, na linha:strSQL = "SELECT [iD], [category], [name], [info] FROM tblGames"você tem então que definir aonde sera sua paginacao no caso exemplo;strID = Clng(Request.Querystring("ID"))strSQL = "SELECT [iD], [category], [name], [info] FROM tblGames WHERE = ID =" & strIDoustrSQL = "SELECT [iD], [category], [name], [info] FROM tblGames WHERE = ID =" & rs("NOME_DA_COLUNA")---aguardo contato.. Quote Link to comment Share on other sites More sharing options...
0 bareta Posted February 4, 2013 Report Share Posted February 4, 2013 a solução já foi postada o uso de pagesize e AbsolutePage resolve o problema Quote Link to comment Share on other sites More sharing options...
0 ViaPocket Posted February 5, 2013 Author Report Share Posted February 5, 2013 (edited) Olá Bareta. Perdão, mas não consigo entender como o Pagesize vai atender.Vejam este tela. Talvez ajude a expor melhor minha necessidade Edited February 5, 2013 by ViaPocket Quote Link to comment Share on other sites More sharing options...
0 bareta Posted February 5, 2013 Report Share Posted February 5, 2013 certo... retirei a oaginação fixa ali em cima... http://scriptbrasil.com.br/forum/index.php...ost&p=60707bom uma paginação consiste na exibição de x registros e em controles de navegação entre eles certo?temos a exibição de 1 registro por páginaRS.PageSize = 1 logo a quantidade de registros é a quantidade de páginas, e logo a ultima página é também a quantidade de registros e a primeira página é 1 independente so o id do primeiro item for 5000000 TotalPages = RS.PageCount o registro atual é numero da página atual... logo a página 10 pode equivaler ao registro id 200 RS.AbsolutePage = PagAtual isso é definido no inicio da paginação... registros próximo e anterior são pagina atual +1 e -1, logo deve ser tratado no caso de a pagina atual for a primeira ou a ultima Agora é so montar a navegação IF PagAtual > 1 THEN Response.Write("<a href='pagina.asp?PagAtual=" & 1 & "'>") Response.Write("Primeira") Response.Write("</a> ") Response.Write("<a href='pagina.asp?PagAtual=" & PagAtual - 1 & "'>") Response.Write("Anterior") Response.Write("</a> ") Else Response.Write("Primeira ") Response.Write("Anterior ") End If IF PagAtual <> TotalPages THEN Response.Write("<a href='pagina.asp?PagAtual=" & PagAtual + 1 & "'>") Response.Write("Próxima") Response.Write("</a> ") Response.Write("<a href='pagina.asp?PagAtual=" & TotalPages & "'>") Response.Write("Ultima") Response.Write("</a> ") Else Response.Write("Próxima ") Response.Write("Ultima ") End Ifbasicamente isso... a orden dos registros você define na SQL Quote Link to comment Share on other sites More sharing options...
0 ViaPocket Posted February 5, 2013 Author Report Share Posted February 5, 2013 Hmmm...bom, vou testar. Mas ainda estou meio cético porque a página roda uma consulta assim:SELECT [sisMunCod], [sisMunCodEstado], [sisMunDesc] FROM SIS_MUNICIPIOS WHERE SisMunCod = '"&strID&"'Este WHERE é quem diz qual registro será selecionado. Se eu pressionar o link Próximo não haverá um valor para passar pela URL para satisfazer consulta. E é justamente a partir deste ponto que a coisa pega porque se não houver parâmetro haverá erro. Não?Então você pode pensar "bom, basta informar o parâmetro no link de navegação...algo como<a href='pagina.asp?PagAtual=" & TotalPages & "' &ID='"&rs("campo_pk")&"'>Creio que não funcionará porque rs("campo_pk") será resultado da consulta acima. Então se o select foi feito tendo como parâmetro o ID 100 o valor da variável do link ( o recordset rs("campo_pk) ) será exatamente o mesmo e a navegação não sairá do lugar.Mas vou reler seus comentários para ver se não estou escrevendo bobagem e fazer mais testes.Obrigado meu caro! Quote Link to comment Share on other sites More sharing options...
0 1980coelho Posted February 5, 2013 Report Share Posted February 5, 2013 tenta algo assim:RS.AbsolutePage = "&rs("campo_pk")&" Quote Link to comment Share on other sites More sharing options...
0 bareta Posted February 6, 2013 Report Share Posted February 6, 2013 Hmmm...bom, vou testar. Mas ainda estou meio cético porque a página roda uma consulta assim:SELECT [sisMunCod], [sisMunCodEstado], [sisMunDesc] FROM SIS_MUNICIPIOS WHERE SisMunCod = '"&strID&"'Este WHERE é quem diz qual registro será selecionado. Se eu pressionar o link Próximo não haverá um valor para passar pela URL para satisfazer consulta. E é justamente a partir deste ponto que a coisa pega porque se não houver parâmetro haverá erro. Não?Então você pode pensar "bom, basta informar o parâmetro no link de navegação...algo como<a href='pagina.asp?PagAtual=" & TotalPages & "' &ID='"&rs("campo_pk")&"'>Creio que não funcionará porque rs("campo_pk") será resultado da consulta acima. Então se o select foi feito tendo como parâmetro o ID 100 o valor da variável do link ( o recordset rs("campo_pk) ) será exatamente o mesmo e a navegação não sairá do lugar.Mas vou reler seus comentários para ver se não estou escrevendo bobagem e fazer mais testes.Obrigado meu caro!Pelo que eu entendi do que vi e do que tu falou eu usaria o q postei... lógico que pode ter falhas ... heheehhehehe..mais vamos por partes... num primeiro ponto destaco que se existe uma navegação de registros existem vários registros, logo existe um próximo e um anterior.O AbsolutePage não tem nada a ver com chave primária... se você exibe 10 registros por página e registro de ID 100 vai estar na página 10 e não na 100, isso sem falar dos registros que já não fazem parte desse mundo...Se SisMunCod for uma categoria que pode contemplar mais de um registro, irá funcionar... se for o ID do registro ai vai ter que mudar... ai pode ser criada uma solução baseada em MoveFirst e MoveNext, Tava digitando aqui lembrei de uma outra solução no caso da navegação baseada no registro atual, você pode informar no link o id atual e uma informação de para onde ir (anterior ou proximo) e usar select top pegando o 1 registro antes ou depois do atual... Quote Link to comment Share on other sites More sharing options...
0 1980coelho Posted February 8, 2013 Report Share Posted February 8, 2013 Hmmm...bom, vou testar. Mas ainda estou meio cético porque a página roda uma consulta assim:SELECT [sisMunCod], [sisMunCodEstado], [sisMunDesc] FROM SIS_MUNICIPIOS WHERE SisMunCod = '"&strID&"'Este WHERE é quem diz qual registro será selecionado. Se eu pressionar o link Próximo não haverá um valor para passar pela URL para satisfazer consulta. E é justamente a partir deste ponto que a coisa pega porque se não houver parâmetro haverá erro. Não?Então você pode pensar "bom, basta informar o parâmetro no link de navegação...algo como<a href='pagina.asp?PagAtual=" & TotalPages & "' &ID='"&rs("campo_pk")&"'>Creio que não funcionará porque rs("campo_pk") será resultado da consulta acima. Então se o select foi feito tendo como parâmetro o ID 100 o valor da variável do link ( o recordset rs("campo_pk) ) será exatamente o mesmo e a navegação não sairá do lugar.Mas vou reler seus comentários para ver se não estou escrevendo bobagem e fazer mais testes.Obrigado meu caro!Pelo que eu entendi do que vi e do que tu falou eu usaria o q postei... lógico que pode ter falhas ... heheehhehehe..mais vamos por partes... num primeiro ponto destaco que se existe uma navegação de registros existem vários registros, logo existe um próximo e um anterior.O AbsolutePage não tem nada a ver com chave primária... se você exibe 10 registros por página e registro de ID 100 vai estar na página 10 e não na 100, isso sem falar dos registros que já não fazem parte desse mundo...Se SisMunCod for uma categoria que pode contemplar mais de um registro, irá funcionar... se for o ID do registro ai vai ter que mudar... ai pode ser criada uma solução baseada em MoveFirst e MoveNext, Tava digitando aqui lembrei de uma outra solução no caso da navegação baseada no registro atual, você pode informar no link o id atual e uma informação de para onde ir (anterior ou proximo) e usar select top pegando o 1 registro antes ou depois do atual...me tira uma duvida os registros que você quer passar para o proximo ou voltar um, você quer movimentar pelo ID deles ou outro RS?se for pelo id e facil e so:<a href="main.asp?ID=<%= strID - 1 %>">Anterior</a> Quote Link to comment Share on other sites More sharing options...
Question
ViaPocket
Seguinte. Quero saber qual o caminho para que devo seguir para que eu faça uma "paginação" de registro único.
Imagine que estou visualizando determinado registro cujo ID foi capturado da URL.
Quero que, ao clicar num elemento, o regsitro atual salte para o próximo ou anterior.
To tentando me virar aqui com algo como rs.Movenext...mas ainda nada de funcionar.
Um help por caridade.
Link to comment
Share on other sites
15 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.