Página 1 de 1
Verificar se há falhas em uma sequencia de números
Enviado: 14 Fev 2015 11:11
por rubens
Bom dia...
Tenho um arquivo com as notas fiscais emitidas e tenho um campo numero. Daí preciso gerar um relatório que me mostre os números que faltam na sequencia.
Tipo
numero
1
2
3
5
6
7
8
10
Daí preciso de um relatório que me informe que falta o número 4,9 e assim por diante até chegar ao final do arquivo.
Alguém tem alguma sugestão do algoritimo/rotina para esse relatório...
Obrigado
Rubens
Verificar se há falhas em uma sequencia de números
Enviado: 14 Fev 2015 12:24
por Jairo Maia
Olá Rubens,
Não sei se é a melhor forma, mas funcionou. Veja:
Código: Selecionar todos
/*
Usar a lib xhb
*/
#include "InKey.Ch"
REQUEST Hb_CodePage_PT850
Function Main()
Local nInicial := 1, nFinal, nVerifica, aFaltantes:={}, nRecords
Hb_SetCodePage( "PT850" )
DBCreate( "DBFTeste", { {"codigo", "N", 8, 0} } )
Use "DBFTeste" Shared New
For x=1 To 20 Step 2
Append Blank
Replace codigo With x
Next
Index On codigo To Index1
Go Bott
nFinal := codigo
Go Top
Clear Screen
While .T.
@ 05, 10 Say "Entre com o Número Inicial:" Get nInicial Picture "99999999" Valid nInicial > 0
Read
If LastKey() = K_ESC
Return Nil
ElseIf !DbSeek( nInicial )
Alert( "Número Inicial Não Encontrado!" )
Loop
EndIf
nVerifica := nInicial + 1
Exit
EndDo
While nVerifica < nFinal
If !DbSeek( nVerifica )
AaDd( aFaltantes, Hb_NToS( nVerifica ) )
EndIf
nVerifica++
EndDo
If Len( aFaltantes ) > 0
Clear Screen
DispOutAt( 1, 5, "Lacunas Entre as Notas: "+Hb_NToS( nInicial ) + " e " + Hb_NToS( nFinal ) )
AChoice( 3, 5, 20, 15, aFaltantes, .T., Nil , 0 )
EndIf
Return Nil
Verificar se há falhas em uma sequencia de números
Enviado: 14 Fev 2015 15:10
por Itamar M. Lins Jr.
Ola!
Código: Selecionar todos
Function lacunas(nComecoNFE,nFimNFE) // Acredito que neste caso o correto é usar data Inicial e final.
LOCAL nProximaNFE
fVaiPara(nComecoNFE)
Do While ...
nProximaNFE := field->Numero_NFE + 1
dbskip()
If nProxima_NFE < field->Numero_NFE
for n:=nProxima_NFE to field->Numero_NFE
jogue na array o intervalo faltante, pode ser 1 ou vários.
next
endif
If nFim == field->Numero_NFE //pode usar final do mês ou data final.
? "já fui !!!"
exit
endif
EndDo
Saudações,
Itamar M. Lins Jr.