Ir para conteúdo

POWERED BY:

Arquivado

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

bill100vergonha

Mostrar o id do Próximo Registro

Recommended Posts

Como você faz seu Select? Ele pega somente 1 registro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Selecionando dessa forma não poderá mesmo exibir outro ID, o que você pode fazer é mandar selecionar com TOP 1 e com um "=>" na sua SQL, ai sim poderá exibir o ID seguinte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem você pode selecoionar o menor MIN(Id) que seja maior que o Id, se seu bd estiver organizado assim funcionará...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem você pode selecoionar o menor MIN(Id) que seja maior que o Id, se seu bd estiver organizado assim funcionará...

marioufpa como seria a sintaxe da expressão SQL....to apanhando faz horas.... e eu to cumencando agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara fiz algo assim recentemente...

 

Pra recuperar uma id usando outra Id

 

o menu de navegação ficou assim neste estilo

 

« Anterior | Notícias | Próxima  »

o codigo dele assim, passo o id atual e a acao

 

[tr][/tr][tr][/tr]
ASP « <%IF Id <> MenorId THEN %><a href="exibir.asp?id=<%=Id%>&acao=anterior">Anterior</a><%ELSE%>Anterior<%END IF%>

| <a href="index.asp">Notícias</a>

| <%IF Id <> MaiorId THEN %>Próxima <a href="exibir.asp?id=<%=Id%>&acao=proxima">Próxima</a><%ELSE%><%END IF%> »

 

note que nele faço um teste pra ver se é o primeiro ou o ultimo e dependendo do que for poe o link ou não

 

no topo da page que você testa se é pra mostrar o id, o proximo id ou o id anterior, além do teste pra ver se é o ultimo ou o primeiro...

 

[tr][/tr][tr][/tr]
ASP

RS.Source = STRSQL = "SELECT MAX(Id) AS MaiorId, MIN(.Id) AS MenorId FROM Tabela"

RS.Open()

 

IF NOT RS.EOF THEN

MaiorId = RS("MaiorId")

MenorId = RS("MenorId")

END IF

 

RS.Close()

 

SELECT CASE Request("acao")

 

CASE "anterior"

RS.Source = "SELECT MAX(Id) AS Id FROM Tabela WHERE Id < " & Id

RS.Open()

IF NOT RS.EOF THEN

Id = RS("Id")

END IF

RS.Close()

 

CASE "proxima"

 

RS.Source = "SELECT MIN(Id) AS Id FROM Tabela WHERE Id > " & Id

RS.Open()

IF NOT RS.EOF THEN

Id = RS("Id")

END IF

RS.Close()

 

END SELECT

 

RS.Source = "SELECT * FROM Tabela WHERE Id = " & Id

RS.Open()

 

 

Bem no codigo acima uso o mesmo RS e tento pegar a Id que vou selecionar, se não tiver nenhuma acao vai pegar a Id passado, mas se tiver alguma acao, vai tentar encontrar a id, se não tiver, com os teste de menor e maior id nem terá os links, enão também não dá pau...

 

Espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara fiz algo assim recentemente...

 

Pra recuperar uma id usando outra Id

 

o menu de navegação ficou assim neste estilo

 

« Anterior | Notícias | Próxima  »

o codigo dele assim, passo o id atual e a acao

 

ASP [/tr][tr]« <%IF Id <> MenorId THEN %><a href="exibir.asp?id=<%=Id%>&acao=anterior">Anterior</a><%ELSE%>Anterior<%END IF%>

| <a href="index.asp">Notícias</a>

| <%IF Id <> MaiorId THEN %>Próxima <a href="exibir.asp?id=<%=Id%>&acao=proxima">Próxima</a><%ELSE%><%END IF%> »

[/tr]

 

note que nele faço um teste pra ver se é o primeiro ou o ultimo e dependendo do que for poe o link ou não

 

no topo da page que você testa se é pra mostrar o id, o proximo id ou o id anterior, além do teste pra ver se é o ultimo ou o primeiro...

 

ASP [/tr][tr]

RS.Source = STRSQL = "SELECT MAX(Id) AS MaiorId, MIN(.Id) AS MenorId FROM Tabela"

RS.Open()

 

IF NOT RS.EOF THEN

MaiorId = RS("MaiorId")

MenorId = RS("MenorId")

END IF

 

RS.Close()

 

SELECT CASE Request("acao")

 

CASE "anterior"

RS.Source = "SELECT MAX(Id) AS Id FROM Tabela WHERE Id < " & Id

RS.Open()

IF NOT RS.EOF THEN

Id = RS("Id")

END IF

RS.Close()

 

CASE "proxima"

 

RS.Source = "SELECT MIN(Id) AS Id FROM Tabela WHERE Id > " & Id

RS.Open()

IF NOT RS.EOF THEN

Id = RS("Id")

END IF

RS.Close()

 

END SELECT

 

RS.Source = "SELECT * FROM Tabela WHERE Id = " & Id

RS.Open()

 

[/tr]

 

Bem no codigo acima uso o mesmo RS e tento pegar a Id que vou selecionar, se não tiver nenhuma acao vai pegar a Id passado, mas se tiver alguma acao, vai tentar encontrar a id, se não tiver, com os teste de menor e maior id nem terá os links, enão também não dá pau...

 

Espero ter ajudado...

marioufpa .... Cara valeu mesmo .... agora consegui resolver meu problema.....

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza bill, que bom que pude ajudá-lo, fiz isto na tentativa de simular o que acontece aqui no forum, nesta pagina mesmo que tem lá em baixo anterior | ASP | proximo, não vejo o codigo mas no link é passado o id do topico e uma acao, acreditei que pe usado isso ou algo parecido...

Compartilhar este post


Link para o post
Compartilhar em outros sites

GALERA,sobre selecionar ÚLTIMO ID-------------------------------------------------É o seguinte: Estou no Formulário acabando de cadastrar um produtoque tenho que cadastrar ele e depois pegar o ID desse produtos q acabo de cadastrar para adicionar em outra Tabela com sua categoria..================Como faço para pegar o último ID q acabei de cadastrar para relacionar em outra Tabela?O q eu fiz foi essa função ai em baixo, mas ele pega o último ID que já está cadastrado no BD e ai eu somo +1, mas acontece que se houver algum errona hora de cadastrar ou remover um produto, aquele ID não é mais contado e a numeração continua no próximo, pulando o numero... se eu fizer como a função abaixo ele não cadastra na outra tabela correto.... pois se pular um número no ID e somar +1 não será relacionado o produto correto..me ajudem!Luis Carlos================================Function ultimo_id() Set TbCod = Server.CreateObject("ADODB.RECORDSET") TbCod.Open "select top 1 PRODUTOS_ID from PRODUTOS order by PRODUTOS_ID desc", cn if TbCod.eof = true then ultimo_id = 1 else ultimo_id = Cint(TbCod.fields("produtos_id")) +1 end if end function

Compartilhar este post


Link para o post
Compartilhar em outros sites

EU por preguiça de pensar mesmo, em um mural de fotos que fiz, cadastro os dados em uma pagina, na seguinte, cadastro as fotos... e pra cadastrar as fotos preciso saber a id do mural... po qeu fiz ?SQL="SELECT TOP * FROM mural ORDER BY id DESC"assim ele vai me retornar o ultimo registro... funciona perfeitamente, mas o problema vai ser, imagina uma aplicação que tem umas 50 pessoas inserindo coisas simulataneas, a muita chance de alguem cadastrar alguma coisa simulataneamente contigo, o que pode acarretar de você pegar o ID errado e cadastrar os dados errado... ou seja isso funciona se for para algo seguro que poucas pessoas vão usar simulataneo... ainda não parei pra pensar uma forma de retornar o ID cadastrado recentemente, sem ter chances de erro... mas se alguem tiver alguma ideia seria legal passar pra galera =)Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu acho q isso ae de:

ASP [/tr][tr]SQL="SELECT TOP * FROM mural ORDER BY id DESC"[/tr]

 

é pra pegar o último registro cadastrado até aquele momento. acho q as chances d você pegar lixo de outra pesso, é muito baixo...

 

flws... :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu acho q isso ae de:

ASP [/tr][tr]SQL="SELECT TOP * FROM mural ORDER BY id DESC"[/tr]

 

é pra pegar o último registro cadastrado até aquele momento. acho q as chances d você pegar lixo de outra pesso, é muito baixo...

 

flws... :D

foi o que eu falei... se por exemplo só um usuario estiver mexendo e cadastrando, impossivel ele pegar ID errado, mas imagine em um sistema que tem umas 40 pessoas fazendo cadastramentos simulataneos... imagina se eu e você cadastramos algo ao mesmo tempo e na hora de pegaroID eu pego o seu ID ao inves de pegar o meu, pq o sistema processou o seu cadastramento antes...

 

isso de fazer um select e pegar o ultimo id pra uma aplicação individual funciona perfeitamente, mas para algum sistema com multiplos usuarios é arriscado na minha opinião...

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra não ter chance alguma de dar pau, eu uso um campo extra de controle que insiro já sabendo seu valor, depois seleciono a Id a partir deste campo, nunca dá pau, mas gera informações desnecessárias(controle), mas não posso correr riscos, quem pode usa TOP 1 mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O uso do Top 1 realmente é perigoso em aplicações que tenham um grande numero simultâneo de acessos/cadastramentos.

Se for numa área administrativa onde somente um ou 2 terão acesso, as chances diminuem (mas não elimina).

 

O Ideal é usar como o Mário disse, só que creio não precisar usar um campo extra, só armazenar todos os dados anteriores e fazer o seu select por exatamante tudo o que foi inserido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fazia assim tb salgado, e sei que é comum, mas teve uma vez, uma unica vez que aconteceu de inserir exatamente, tudo mesmo, a mesma coisa de outro registro anterior, ai já viu quando tentei selecionar pelo conteudo armazenado buscava o id errado, dai pra frente uso um campo de controle.É que não pode haver erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, quanto mais controle tiver é até melhor, pode-se até usar o Top 1, junto com o Select que indiquei, mais o Order By ID Desc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque nao fazem assim, eu fazia no clipper assim...pega o maior IDenquanto existir este ID, soma mais um e refaz a pesquisa até nao existir, ai sim grava.... e voce ja tera o ID que voce cadastrou numa variavel...ok?

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.