Problema com DBF danificado apos queda de energia!
Moderador: Moderadores
Problema com DBF danificado apos queda de energia!
Ola pessoal!
Tenho um cliente que esta tendo este problema constantemente pois tem muita queda de energia no local. Embora já solicitei que arrumem um NO-BREAK gostaria de saber se tem uma forma de previnir ou corrigir o dbf danificado. Os IDXs tambem ficam com problemas porem basta apaga-los e reindexa-los novamente.
Estou testando uma funcao postada pelo rochinha sobre INTEGRIDADE DE DBF se alguem souber de outro aplicativo por favor me comunique!
Abraços!
Tenho um cliente que esta tendo este problema constantemente pois tem muita queda de energia no local. Embora já solicitei que arrumem um NO-BREAK gostaria de saber se tem uma forma de previnir ou corrigir o dbf danificado. Os IDXs tambem ficam com problemas porem basta apaga-los e reindexa-los novamente.
Estou testando uma funcao postada pelo rochinha sobre INTEGRIDADE DE DBF se alguem souber de outro aplicativo por favor me comunique!
Abraços!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Andril a única prevenção é vc colocar o no-break.
Agora para automatizar o serviço de correção do problema, é melhor criar ou usar uma rotina de tratamento de erro tem uma na seção downloads do fórum.
O que vc faria se ocorresse o erro de corruption, como o run time seria inteceptado por essa função de tratamento, vc poderia verificar o erro que aconteceu o dbf que estava aberto corrente, e executar uma rotina de reindexação desse arquivo.
Agora para automatizar o serviço de correção do problema, é melhor criar ou usar uma rotina de tratamento de erro tem uma na seção downloads do fórum.
O que vc faria se ocorresse o erro de corruption, como o run time seria inteceptado por essa função de tratamento, vc poderia verificar o erro que aconteceu o dbf que estava aberto corrente, e executar uma rotina de reindexação desse arquivo.
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
Dudu,
Obrigado pela sua resposta. Já utilizo a ideia citada mais o problema ocorre no DBF dado ERRO DE LEITURA. Gostaria de uma funcao que tentasse corrigir a estrutura do dbf sem perder suas informações.
Quanto ao arquivo de indice eu excluo o arquivo danificado e reconstruo somente o indice corrompido.
Continuo no aguardo...
Obrigado pela sua resposta. Já utilizo a ideia citada mais o problema ocorre no DBF dado ERRO DE LEITURA. Gostaria de uma funcao que tentasse corrigir a estrutura do dbf sem perder suas informações.
Quanto ao arquivo de indice eu excluo o arquivo danificado e reconstruo somente o indice corrompido.
Continuo no aguardo...
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Vc esta falando do DBFNTX/1010 Read Error.
Não conheço uma rotina especifica para isso.
Qdo acontece essa bucha uso um programa chamado FileFix
// Filefix
http://www.fabionamiuti.com/ff.exe
E ou abro o dbf no foxbase executo um copy stru depois um append from.
Andril faz anos que não vejo esse erro vc poderia me enviar um dbf corrompido para eu fazer um teste aki para ver se consigo montar algo semelhante ao que o filefix faz.
Não conheço uma rotina especifica para isso.
Qdo acontece essa bucha uso um programa chamado FileFix
// Filefix
http://www.fabionamiuti.com/ff.exe
E ou abro o dbf no foxbase executo um copy stru depois um append from.
Andril faz anos que não vejo esse erro vc poderia me enviar um dbf corrompido para eu fazer um teste aki para ver se consigo montar algo semelhante ao que o filefix faz.
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
idem
Eu dou um pack no arquivo e depois um recall all. E resolve!
E para evitar futuros problemas, a cada 30 minutos fecho todos os arquivos e depois os reabro.
E a cada venda ou recebimento (como são rotinas que mexem com muitos arquivos). fecho todos os arquivos e os reabro.
Abraços
E para evitar futuros problemas, a cada 30 minutos fecho todos os arquivos e depois os reabro.
E a cada venda ou recebimento (como são rotinas que mexem com muitos arquivos). fecho todos os arquivos e os reabro.
Abraços
Ola Pessoal,
Dudu eu estou solicitando ao cliente q envie-me o arquivo danificado, assim que receber envio a vc.
Mario,
Sua dica é boa, porem, qdo ocorre o erro de abertura/leitura READ ERROR não consigo abrir o DBF e tb não posso apagar os dados do cliente, se não poderia simplesmete substituí-lo.
Vou testar o filefix.exe citado pelo Dudu depois comunico o resultado!
Abracos
Dudu eu estou solicitando ao cliente q envie-me o arquivo danificado, assim que receber envio a vc.
Mario,
Sua dica é boa, porem, qdo ocorre o erro de abertura/leitura READ ERROR não consigo abrir o DBF e tb não posso apagar os dados do cliente, se não poderia simplesmete substituí-lo.
Vou testar o filefix.exe citado pelo Dudu depois comunico o resultado!
Abracos
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Re: idem
Andril escreveu:Gostaria de uma funcao que tentasse corrigir a estrutura do dbf sem perder suas informações.
Olá a todos,Mário Isa escreveu:Eu dou um pack no arquivo e depois um recall all. E resolve!
Até onde eu saiba, o comando PACK remove fisicamente o registro do DBF, sendo portanto impossível recuperá-lo com RECALL ALL... pelo menos é isso que está escrito no NG, vejamos o NG:
É isto mesmo, ou estou errado?Observe que se foi usado o comando PACK num arquivo de dados, todos os registros marcados são fisicamente removidos do arquivo e NÃO PODEM SER RECUPERADOS
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Desculpem-me se não fui muito claro.
Dar um comando pack não significa que registros serão removidos.
Aqueles q estão marcados para tal sim é que serão.
Ocorre que o comando pack seguido do recall all consegue, na maioria das vezes, remover o bug da queda.
O comando PACK remove os arquivos previamente marcados com o comando DELETE para serem eliminados posteriormente.
Dar um PACK removerá os marcados apenas.
E seguido de um recall all resolverá o problema do arquivo.
Recall all, aqui neste momento, não seria para recuperar nenhum dado.
Ocorre que, certa vez, eu tinha um arquivo desses (paulado) na minha mão. Fiz um recall all e o registro fantasma sumiu. Por precaução dou um pack primeiro pois se der recall all primeiro poderão ser recuperados registros que já haviam sido marcados para deleção.
envie o arquivo para mim, ainda no estado de "pau". Eu gostaria de vê-lo.
Mário
Dar um comando pack não significa que registros serão removidos.
Aqueles q estão marcados para tal sim é que serão.
Ocorre que o comando pack seguido do recall all consegue, na maioria das vezes, remover o bug da queda.
O comando PACK remove os arquivos previamente marcados com o comando DELETE para serem eliminados posteriormente.
Dar um PACK removerá os marcados apenas.
E seguido de um recall all resolverá o problema do arquivo.
Recall all, aqui neste momento, não seria para recuperar nenhum dado.
Ocorre que, certa vez, eu tinha um arquivo desses (paulado) na minha mão. Fiz um recall all e o registro fantasma sumiu. Por precaução dou um pack primeiro pois se der recall all primeiro poderão ser recuperados registros que já haviam sido marcados para deleção.
envie o arquivo para mim, ainda no estado de "pau". Eu gostaria de vê-lo.
Mário
aaahhhh, SIM!
Agora ficou CLARO.
Um Abraço,
Janio
Agora ficou CLARO.
Um Abraço,
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Vou passar umas dicas que já usei aqui nestes casos que até ajoelhei nos pês do servidor clamando o Sangue de Jesus.
1 - Se o banco de dados estiver ainda sendo aberto pelo DBU (Compile o DBU com o RTLINK e o Clipper 5.2 pois senão ele fica instável), crie um campo novo, feche o banco de dados depois abra novamente e apague o campo, procure no final do arquivo o que pode ser dados com erros ou no meio dele ou durante a indexação se der algum erro com dados incorretos.
2 - Se isto não resolver, possivelmente o banco de dados teve sua estrutura estourada, ai vai outra dica. usando o Edit do DOS com o parâ /<N> onde <N> é um valor numerico, você abrirá o arquivo em mobo binário, onde você poderá fazer correçoes diretamente no arquivo, mas tem que tomar cuidado para não remover dados vitais do mesmo.
por exemplo:
EDIT /300 BANCO.DBF, você verá os dados do DBF, vai sempre reduzindo o valor tipo
EDIT /299 BANCO.DBF, EDIT /298 BANCO.DBF até chegar a um valor em que os valores dos campos ficarão alinhados no banco de dados, então ande no arquivo e procura algum ponto em que este alinhamento está sendo desfeito pois depois de um tranco de energia provavelmente algum ponto do banco de dados estará desordenado. Ai vá com muita calma dando alguns deles até os campos voltarem para o lugar, feche o arquivo, salve e faça de novo para ver como ficou agora.
Isto ai eu já usei quando achava que não tinha mais jeito, só mais uma fica. FAÇA COPIA DO BANCO DE DADOS ANTES DE FAZER ISTO.
As dicas anteriores também são válidas a algumas com os mesmos resultados da primeira dica que eu dei.
1 - Se o banco de dados estiver ainda sendo aberto pelo DBU (Compile o DBU com o RTLINK e o Clipper 5.2 pois senão ele fica instável), crie um campo novo, feche o banco de dados depois abra novamente e apague o campo, procure no final do arquivo o que pode ser dados com erros ou no meio dele ou durante a indexação se der algum erro com dados incorretos.
2 - Se isto não resolver, possivelmente o banco de dados teve sua estrutura estourada, ai vai outra dica. usando o Edit do DOS com o parâ /<N> onde <N> é um valor numerico, você abrirá o arquivo em mobo binário, onde você poderá fazer correçoes diretamente no arquivo, mas tem que tomar cuidado para não remover dados vitais do mesmo.
por exemplo:
EDIT /300 BANCO.DBF, você verá os dados do DBF, vai sempre reduzindo o valor tipo
EDIT /299 BANCO.DBF, EDIT /298 BANCO.DBF até chegar a um valor em que os valores dos campos ficarão alinhados no banco de dados, então ande no arquivo e procura algum ponto em que este alinhamento está sendo desfeito pois depois de um tranco de energia provavelmente algum ponto do banco de dados estará desordenado. Ai vá com muita calma dando alguns deles até os campos voltarem para o lugar, feche o arquivo, salve e faça de novo para ver como ficou agora.
Isto ai eu já usei quando achava que não tinha mais jeito, só mais uma fica. FAÇA COPIA DO BANCO DE DADOS ANTES DE FAZER ISTO.
As dicas anteriores também são válidas a algumas com os mesmos resultados da primeira dica que eu dei.
Boa tarde,
Tenho um arquivo que foi danificado também. No meio dos registros aparecem alguns com caracteres totalmente estranhos ... E o que está acontecendo ? Após dar um SEEK (indexado por numero de NF), ele não encontra o registro ... porém existe o registro que eu quero após essa sequência de registros danificados !!
Alguém já passou por isso ? Posso enviar o arquivo (zipado) para alguém que quiser (e tiver a paciência !!) de analisar...
Sds,
Zima
Tenho um arquivo que foi danificado também. No meio dos registros aparecem alguns com caracteres totalmente estranhos ... E o que está acontecendo ? Após dar um SEEK (indexado por numero de NF), ele não encontra o registro ... porém existe o registro que eu quero após essa sequência de registros danificados !!
Alguém já passou por isso ? Posso enviar o arquivo (zipado) para alguém que quiser (e tiver a paciência !!) de analisar...
Sds,
Zima
Problemas com DBT
Zima escreveu:Boa tarde,
Tenho um arquivo que foi danificado também. No meio dos registros aparecem alguns com caracteres totalmente estranhos ... E o que está acontecendo ? Após dar um SEEK (indexado por numero de NF), ele não encontra o registro ... porém existe o registro que eu quero após essa sequência de registros danificados !!
Alguém já passou por isso ? Posso enviar o arquivo (zipado) para alguém que quiser (e tiver a paciência !!) de analisar...
Sds,
Zima
Boa Tarde Pessoal,
Também estou com problemas com arquivos DBF's e DBT's. Tenho um arquivo memo que está com alguns de seus registros incorretos em que aparecem caracteres estranhos. Tentei utilizar alguns programas para correção como o dbtcheck e o filefix, porém sem resultado. Ou então posso ter utilizado-os de forma errada.
Alguém tem alguma dica de como organizar ou sincronizar esses arquivos? Ou algum roteiro que eu possa seguir para organizá-los?
Obrigada,
JCPrimo.
-
Irineu
- Usuário Nível 2

- Mensagens: 61
- Registrado em: 13 Ago 2003 22:01
- Localização: Curitia-PR
- Contato:
Se ainda não conseguiram resolver o problema dos arquivos, vcs podem enviar para : iklosowski@gmail.com
Se os dados não estão criptografados ou danificados posso recuperá-los pra vcs.
Obs : Por favor, enviem tambem estrutura dos arquivos, para o caso do header estar danificado .
Se os dados não estão criptografados ou danificados posso recuperá-los pra vcs.
Obs : Por favor, enviem tambem estrutura dos arquivos, para o caso do header estar danificado .
Irineu - < http://irineufotos.servehttp.com >
Caro amigo Andril, ja tive muito problema com queda de energia, tenho um sistema de supermercado e quem tem sistema para supermercado sabe como é, não pode parar, os caixa tem que funcionar independente do servidor e por isso de tanto ter problemas criei esta rotina.
Toda vez que o sistema é aberto gravo em um campo que o sistema esta aberto e quando finaliza o sistema gravo que foi finalizado corretamente. Mas quando o sistema é aberto também verifico se foi finalizado corretamente, se não foi o sistema entra nessa rotina.
Dessa forma o sistema, conserta o problema.
Toda vez que o sistema é aberto gravo em um campo que o sistema esta aberto e quando finaliza o sistema gravo que foi finalizado corretamente. Mas quando o sistema é aberto também verifico se foi finalizado corretamente, se não foi o sistema entra nessa rotina.
Código: Selecionar todos
//apaga todos os arquivos de indice
AEVAL(DIRECTORY("*.CDX"),{|AFILEL| FERASE(AFILEL[F_NAME])})
//abro o arquivo
AbreDbf("PDVI",{"STR(nrocupom,6)+STR(item,4)"},,"ItemVenda")
//
COPY TO ddbbuuuu.ext STRUCTURE EXTENDED
CLOSE ItemVenda
RENAME PDVI.DBF TO PDVI.TMP
CREATE PDVI.DBF FROM ddbbuuuu.ext ALIAS PDVI
USE PDVI.TMP
COPY TO ddbbuuuu.txt SDF
USE PDVI
APPEND FROM ddbbuuuu.txt SDF
ERASE ddbbuuuu.txt
ERASE ddbbuuuu.ext
ERASE PDVI.TMP
//abro novamente o arquivo e verifico no arquivo se tem campo
//chave em branco, porque geralmente quando cai a energia cria um
//registro em branco enquanto você não apagar esse registro o
//sistema não volta a funcionar
//
AbreDbf("PDVI",{"STR(nrocupom,6)+STR(item,4)"},,"ItemVenda")
//
SELECT ItemVenda
SET ORDE TO 1
GO TOP
//
DO WHILE !EOF()
IF ItemVenda->nrovenda = 0
IF BloqReg()
DELETE
DBCOMMIT()
DBUNLOCK()
ENDIF
ENDIF
SKIP
ENDDO
//
CLOSE ItemVenda
AEVAL(DIRECTORY("*.CDX"),{|AFILEL| FERASE(AFILEL[F_NAME])})
AbreDbf("PDVI",{"STR(nrocupom,6)+STR(item,4)"},,"ItemVenda")
//
-
esosoft
- Usuário Nível 1

- Mensagens: 1
- Registrado em: 16 Fev 2006 19:53
- Localização: Presidente Prudente
pessoal... alguém ja viu isso ?!
tenho um modulo no meu sistema que faço a emissão de cupom fiscal...
antes de emitir o cupom eu GRAVO as informações no arquivo NOTA
dpois em determinadas situações eu faço BUSCAS no arquivo NOTA,
isso tudo antes de emitir o cupom... até ai vai tudo ótimo!
ai dpois de emitir o cupom fiscal, eu chamo novamente o arquivo NOTA
para gravar o numero do cupom fiscal...
bem nesse momento aparece:
DOS ERROR 6
DBFNTX/1010 Read Error.
o problema é o seguinte... o arquivo nao esta corrompido, pois eu vou
em outra pasta crio ele novamente pelo DBU e dpois jogo ele novinho
na pasta onde o sistema esta, ai qdo faço a nota ele grava tudo lindo e
maravilhoso no arquivo novinho de NOTA, até qdo eu chamo novamente
para gravar (replace nota->cupom with mcupom) e o bentido erro aparece...
mas o estranho como disse o tempo todo eu uso esse arquivo e nao da erro d jeito nenhum... isso só acontece se eu emitir o cupom fiscal...
e c eu voltar no sistema dpois do erro, eu consigo consultar, alterar e emitir novas notas... o problema é só na hora da emissão do cupom fiscal...
mas nao para por ai nao...
o sistema roda em uns 10 lugares diferentes...
e só nesse cliente isso começou a acontecer...
alguém ja viu isso ?!!!
sera que a maquina de cupom esta deixando o clipper louco ?!!!
tenho um modulo no meu sistema que faço a emissão de cupom fiscal...
antes de emitir o cupom eu GRAVO as informações no arquivo NOTA
dpois em determinadas situações eu faço BUSCAS no arquivo NOTA,
isso tudo antes de emitir o cupom... até ai vai tudo ótimo!
ai dpois de emitir o cupom fiscal, eu chamo novamente o arquivo NOTA
para gravar o numero do cupom fiscal...
bem nesse momento aparece:
DOS ERROR 6
DBFNTX/1010 Read Error.
o problema é o seguinte... o arquivo nao esta corrompido, pois eu vou
em outra pasta crio ele novamente pelo DBU e dpois jogo ele novinho
na pasta onde o sistema esta, ai qdo faço a nota ele grava tudo lindo e
maravilhoso no arquivo novinho de NOTA, até qdo eu chamo novamente
para gravar (replace nota->cupom with mcupom) e o bentido erro aparece...
mas o estranho como disse o tempo todo eu uso esse arquivo e nao da erro d jeito nenhum... isso só acontece se eu emitir o cupom fiscal...
e c eu voltar no sistema dpois do erro, eu consigo consultar, alterar e emitir novas notas... o problema é só na hora da emissão do cupom fiscal...
mas nao para por ai nao...
o sistema roda em uns 10 lugares diferentes...
e só nesse cliente isso começou a acontecer...
alguém ja viu isso ?!!!
sera que a maquina de cupom esta deixando o clipper louco ?!!!


