Descobrir número faltando na sequencia

12 respostas
C

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

12 Respostas

S

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.

F

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

C

CERTO MAS COMO COMPARAR O VALORES ?

M

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,

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.

C

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

S

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

C

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

E

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

F

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…

T

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

J

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

Criado 24 de março de 2009
Ultima resposta 30 de jul. de 2014
Respostas 12
Participantes 8