Fórum SQL, como descobrir o numero ausente entre valores? #370915

01/06/2009

0

Boa tarde amigos,

Preciso descobrir os códigos livres entre dois valores sem ter que percorrer o banco.

No meu banco tenho o campo NF.

Preciso descobrir quais notas não existem num valor entre 1 e 100 por exemplo:

1 - Nota Existente
2 - Nota Existente
4 - Nota Existente

O SQL teria que me retornar, nesse caso, que a NF nro 3 não consta no DB.

Tem como?

att
Mario


Aldus

Aldus

Responder

Posts

01/06/2009

.lg.

Dei a solução pra isso neste tópico:
http://forum.devmedia.com.br/viewtopic.php?t=100549

O meu código te retorna o numero que falta no intervalo. Dê uma lida que você vai entender.


Responder

Gostei + 0

01/06/2009

Aldus

Olá,
ainda não seria isso que queria, pois dessa forma teria que ler o banco a procura do código inexistente, e isso dependendo do número de registro torna-se lento.


Responder

Gostei + 0

02/06/2009

.lg.

Pelo que eu sei nenhuma db retorna quais numeros ´inexistentes´ existem num meio intervalo.

Está solução que lhe dei serve para quando vc abre uma tabela no seu programa... acredito que vc n va trazer um milhão de registros num dbgrid para o usuário, neh!? O usuário vai lhe xingar até....

A minha logica se aplica neste caso. Vc abre uma tabela no dbgrid... ( é claro que vc ja tratou o select para amenisar que tipo de info vc quer trazer ) e então quer adicionar um registro de acordo com essa informação que você pegou.

Esse meu código lhe traria o próximo incremento.
É claro que se vc quiser uma rotina que traga todos os itens faltando... essa lógica vai demorar. (a não ser se alguem tenha achado uma maneira rápida. Se achar também quero!!!) O jeito é fazer um procedimento que lhe mostra um progresso.

Desculpe se não pude lhe ajudar. A maneira que achei foi essa. Espero que alguem tenha essa solução. Se tiver, também vou querer. xD

Abraços,
.lg.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar