Estou usando LETODB 2.17b (deamon) com xHarbour 1.2.1. Um arquivo do sistema, somente um, em determinada rotina está corrompendo o índice, ou seja, o lançamento do registro no banco de dados é feito corretamente, todavia no relatório não aparece as informações.
O grande problema deste mistério é que acontece esporadicamente, talvez uma vez por mês, no máximo duas vezes por mês e todos os dias é feito lançamento no banco de dados e na maioria das vezes tudo ocorre perfeitamente, sem erros.
É muito estranho a fato ocorrido, visto que todos os dias são emitidas muitas notas fiscais com vários itens e o sistema é grande com muitos arquivos e só este arquivo corrompe o CDX.
A maioria dos lançamentos do caixa não é feito por esta rotina, e nunca deu problema. Esta rotina contempla um processamento de carga e faz automaticamente o lançamento do caixa, evitando retrabalho do usuário.
Quando faço a reindexação do arquivo, tudo volta ao normal.
Segue onde ocorre a gravação no banco de dados.
O arquivo corrompido é o alias AL_CXLAN
sele AL_DEBIT
DBSETORDER(1)
DBSEEK(AL_ACERT->codigo)
do whil (!EOF() .and. codigo=AL_ACERT->codigo)
vLan=STRZERO(VAL(vLan)+1,8)
sele AL_CXLAN
ADDREC(10)
repl codigo with AL_CAIXA->codigo
repl nomeca with AL_CAIXA->nomeca
repl datala with vDat
repl saldod with AL_CAIXA->saldod
repl lancam with vLan
repl tipodo with "01"
repl classi with "01"
repl valord with AL_DEBIT->valorc
repl tipomo with "M"
repl operac with "C"
repl contan with AL_DEBIT->contan
repl codhis with AL_DEBIT->codhis
repl texto1 with AL_DEBIT->texto1
repl texto2 with AL_DEBIT->texto2
repl texto3 with AL_DEBIT->texto3
DBCOMMIT()
DBUNLOCK()
sele AL_DEBIT
skip
end
Saudações,
Júlio.