Ir para conteúdo

POWERED BY:

Arquivado

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

zanarole

Botão PRÓXIMO e ANTERIOR não Sequencial

Recommended Posts

Boa tarde pessoal. Estou fazendo um Site, que por sinal faz um tempão que não faço e por isto preciso gentilmente da ajuda de vocês, mas estou encontrando uma imensa dificuldade em um item.

 

Tenho uma página onde são exibidos todos os meus clientes e nela tenho um botão ANTERIOR e outro PRÓXIMO, que percorrem os registros pelo número de cada um cadastrado automaticamente em uma variável no BD num campo com numeração automática. O código que estou usando nos botões é este:

 

<a href='consulta.asp?codigocliente=<%=tba("IDOrcamento")-1%>'><img src="proximo.gif"></a>

 

<a href='consulta.asp?codigocliente=<%=tba("IDOrcamento")+1%>'><img src="anterior.gif"></a>

 

Porém, existem clientes que ao longo do tempo excluí, e ficaram lacunas nas numerações, por exemplo, exclui hoje o cliente número 49, quando vou navegar pelos botões ANTERIOR e PRÓXIMO, ele mostra o 47, 48, mas não pula para o 50, o sistema finaliza a consulta, pois meu botão soma (+1) um aos números.

 

Pessoal, não desejo fazer páginas, ou exibir a numeração de quantos registros tenho, desejo apenas um script que funcione neste dois botões, que pule os números que não existam e ao final .eof me diga que não há mais cliente.

 

O problema também acontece quando eu faço uma busca no BD, por exemplo, apenas pelos clientes que estão com o status de “Aguardando Retorno”, o problema é que os números de cada um são aleatórios e aí os botões ANTERIOR e PRÓXIMO não navegam nele, vejam o código:

 

 

ARQUIVO INDEX.ASP
<%
SUB onBanco()
SET banco = Server.CreateObject("ADODB.Connection")
banco.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=banco.mdb;Persist Security Info=False"
end SUB
%>
DIM codigocliente, tba, sql
DIM banco : onBanco
sql = "" & "SELECT * FROM ORCAMENTO WHERE StatusCliente = 'Aguardando RETORNO do Cliente' ORDER By idOrcamento DESC"
SET tba = Server.CreateObject("ADODB.RecordSet")
SET tba = banco.execute(sql)

<select name="Menu" onchange="window.location.href=this.options[this.selectedIndex].value">

<option value="selecao.asp" selected="selected">Aguardando RETORNO do CLIENTE</option>

<%do while not tba.eof%>

<option value="consulta.asp?codigocliente=<%=tba("IDOrcamento")%>"><%=tba("NomeContato")%></option>

<%tba.movenext : loop%>

</select>

 

ARQUIVO CONSULTA.ASP (onde tem os botões)

 

<%
DIM codigocliente : codigocliente = Request.QueryString("codigocliente")
DIM banco : onBanco
DIM sql : sql = ""
sql = sql & "SELECT * FROM ORCAMENTO WHERE IDOrcamento = "
sql = sql & codigocliente
DIM tba
SET tba = Server.CreateObject("ADODB.RecordSet")
SET tba = banco.execute(sql)
%>

 

Muitíssimo obrigado a TODOS! Um abraço!



Pessoal, apenas para complementar com a resposta que postei no tópico antigo, o sistema não gera nenhum número ou mensagem de erro, apenas não exibe o próximo registro. Como estou usando <%=tba("IDOrcamento")+1%>'> para apenas somar ou subtrair 1 no registro atual, se, por exemplo, estou no registro 20 e o 21 foi excluído, ou estou pesquisando por um assunto especifico, onde os números não são sequenciais, o navegador cria o link "consulta.asp?codigocliente=21", mas não exibe nada, não sei como fazer ele, primeiro, reconhecer há determinado registro, tanto próximo, quanto anterior, foi excluído, e segundo, quando pesquiso por assunto, e neste assunto apenas os registros, por exemplo, 3, 7, 28, são o que preciso selecionar, que o sistema entenda e siga ou retroceda apenas neles.

 

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um code que verifique o ID no bd, tendo o ID vc cria o link para informações detalhadas ou qualquer outra informação que queira nele, caso não exista o ID, vc deixa ele tipo "desabilitado", ou seja, deixa ele com uma cor cinza. Tipo criar um método booleano que executa com um select no banco com algum parâmetro, e retornando true se existe ou false se não.

 

"SELECT IDUSUARIO FROM USUARIOS WHERE IDUSUARIO = @IDUSUARIO";

Ai você verifica assim:

            if (VerificarUsuario(1) = true)                            'Usuário existe.                  else                            'Usuário não existe.            

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Xanburzum, obrigado pela resposta, contudo, ainda não é isto.

 

Tenho, por exemplo, 80 clientes cadastrados e o IDClientes é numeração sequencial, sendo que por algum motivo, apaguei o 59, quando estou navegando entre eles com o <%=tba("IDClientes ")+1%> e <%=tba("IDClientes ")-1%>, ao chegar no 58 e clico para ir para o próximo, ele não pula para o 60, ele simplesmente não faz nada. Preciso de algo que veja que o registro X não existe mais e passe para o próximo após aquele excluído.

 

Valeu Xanburzum, obrigado mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então você fazendo esse criar método booleano que citei acima ele executa com um select no banco com parâmetro, e retornando true se existe ou false se não. Dae você saberá se ele existe ou não, caso não exista você pode até na hora de listar os id´s dos clientes, esses que não possuem mais vc deixa eles da cor cinza, tipo desabilitado, entendeu.

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.