Descobrir número faltando na sequencia

Bom tenho um programa feito em java para desktop para a minha empresa,ele emite notas fiscais e tal,
mas agora estou com uma dificuldade por onde nem sei onde começar para resolver.

A minha empresa trabalha com notas que têm uma sequência numérica tipo:
1,2,3,4,5,6,7,8,9,10

Só que às vezes alguma pessoa deixa de registrar alguma nota,eu gostaria de saber que numero esta faltando na sequecia
é claro que no meu caso existe um banco de dados em mysql, são muitas notas

Olha, acho difícil que tal problema consiga fugir de um loop, tente procurar por algoritmos de busca, talvez te dê uma luz, e coloque flags indicando em qual posição parou a busca da última vez, evitando assim que tenha que navegar tudo denovo.

Calma,

Nada é tão ruim que não possa piorar!!! :lol: :lol:

A primeira coisa a ser feita é ver como você faria isso manualmente. Após saber como fazer manualmente, coloque isso em linguagem de máquina, em código. Não entendi como é essa numeração. Se for numeração para TODAS as notas, percorra toda a base, ordenando por número, e jogue em um arquivo texto os números que estão faltando. Se for ordenado TODAS as notas por CLIENTE, faça um select group by cliente, order by numero, e percorra buscando os números que faltam…

Fernando

CERTO MAS COMO COMPARAR O VALORES ?

Ola cerebelo!
Por favor não duplique post e tenha calma.

O GUJ não disponibiliza planos médicos em caso de ataques, AVCs, etc.
Vamos incluir na lista de features (brincadeirinha).

[ ]s,

Olha, tive uma idéia, mas não sei se pode ajudar, primeiro faça um select na sua tabela, depois de um left join numa sequencia que vá de 1 até o ultimo id da sua tabela. Em seguida pegue todos os valores que tiverem codigo nulo.

Até tentei fazer a query, mas não sei como pegar uma sequencia de numeros no sql.

SAMUEL PEGO TODOS OS NUMEROS DA MINHA TABELA NOTAFISCAL ASSIM
“SELECT NUMERONF AS TOTAL FROM NOTAFISCAL”
MAS AGORA COMO COMPARAR E DESCOBRIR VALORES NULOS DE UMA SEQUENCIA

cerebelo, coloque a solução que eu te falei aqui, quem sabe num aparece alguem que saiba concluir a query.

SELECT NUMERONF AS TOTAL, max(NUMERONF) as num FROM NOTAFISCAL
right join [select que retorna sequencia numerica entre 1 e o num]
on NOTAFISCAL.NUMEROONF = [contador]
where NOTAFISCAL.NUMERONF=null

O PROBLEMA É ESTE SELECT

Imagino que você deve ter que fazer algo como:

SELECT CAMPO1 + 1 FROM (SELECT T1.NUMERONF AS CAMPO1, T2.NUMERONF AS CAMPO2 FROM NOTAFISCAL T1 LEFT OUTER JOIN NOTAFISCAL T2 ON T1.NUMERONF = T2.NUMERONF - 1) WHERE CAMPO2 IS NULL;

O detalhe é que a última linha do resultado vai trazer o próximo numero de NF, que ainda não está no banco

Uma possibilidade seria gerar as notas fiscais da seguinte forma:

1 - pegar proximo número disponivel para nota fiscal, marcar como “pegado”
2 - erro = gerar nota fiscar
3 - se ! erro -> marcar numero da nota fiscar como utilizado.

o menor números marcado como “pegado” e não utilizados pode ser utilizado novamente.

Obs1: cuidado que mais de um usuário pode pegar o numero ao mesmo tempo.

Obs2: se vc alterar o programa só precisará percorer a tabela uma vez para saber quais notas não foram utilizadas.

A idéia é ± esse. é só implementar.

Abraço…

Eu faria um SELECT em todas as notas ondenando pelo numero,
e criaria duas variaveis inteitas,
em um while pegaria o valor da nota e atribuia a primeira variavel,
e no próximo registro atribuiria a segunda variavel, nesse
momento diminuiria as variaveis se a diferença fosse maior que 1, guardava em algum lugar, vector, array, banco ou etc…

Tony

Reativando -

Pessoal me perdoe por reativar algo antigo, mas estou quase que com o mesmo problema do amigo, mas o meu seria da seguinte forma, eu tenho uma sequencia de números em mysql em um único campo, inicia do 1 e vai até quase mil, o problema é que nessa sequencia alguns números foram pulados, seria da seguinte forma: 1-2-3-4-5-7-10-16-21-22-23-26-28-32-41… e por ai vai. EU precisaria de uma query que me passasse os números que estão faltando para completar a sequencia correta. Seria possível? lembrando que é um único campo chamado números e mais nada, não tem ligação com outra tabela e nem precisa misturar com outro canco, seria apenas para exibir os número que faltam para completar a sequencia correta. Obrigado pessoal