Reg. Deletados foram retornados. Estranho!

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Reg. Deletados foram retornados. Estranho!

Mensagem por marcos.gurupi »

Caros, aconteceu uma situacao muito estranha em um cliente meu. Eu tive que criar um campo no banco de dados CONTAS A RECEBER e alterar outro campo, ateh ai tudo bem acontece que apos essa alteracao que foi feita pelo DBU todos os registros deletados foram retornados e agora o CONTAS A RECEBER do meu cliente estah uma bagunca soh. Alguem jah passou por essa situacao. Estou com o banco de dados aqui comigo para ver como fazer o processo inverso.

Marcos Roberto
Marcos Roberto
NetService Software
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por rochinha »

Amiguinho

Primeiro - veja que houve uma falha que foi a de não criar um backup antes de manusear a tabela.

Segundo - não conheço o DBU mas acho que o mesmo possua uma opção de ligar/desligar o estado de SET DELETE quando se manuseia uma tabela e que voce poderia ter ligado.

Terceiro - para evitar no futuro estes problemas crie campos extras que definam que o registro foi efetivado. No meu caso uso um campo data chamado de RECEBIDO, um campo flag lógico chamado FLAG e um campo lógico chamado FECHAMENTO.

Onde:
RECEBIDO - Recebe a data da quitação do registro.
FLAG - seu estado é sempre FALSE para registros em aberto e TRUE quando forem quitados.
FECHAMENTO - seu estado é sempre FALSE para registros normais e TRUE quando forem exclusos.

Como nunca deixo que meu usuario use PACK tais campos me ajudam a sumir com registros cujo campo FECHAMENTO esteja TRUE através das chaves de indexação INDEX ON ... FOR ... fechamento=.f.

Talvez voce tenha em sua tabela algum campo que possa lhe mostrar que o registro foi deletado e ai fazer uma limpa, mas fica o alerta para o uso de DBUs da vida, backup antes, sempre.

DICA: Se voce possui um backup anterior desta tabela, monte uma rotina que abra estes arquivos em modo SET DELETE OFF e através de um do..while proceda uma verificação registro a registro comparando campos e verificando no backup se o registro esta deletado, se sim, delete o registro compativel na tabela modificada.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por vagucs »

quando vc adiciona um campo pelo dbu, ele copia todos os registros, inclusive os deletados, porem nao marca os mesmos como deletado no arquivo final. antes de mexer na estrutura do arquivo sempre de um pack no mesmo.
Sem mais
Wagner Nunes
www.vagucs.com.br
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por marcos.gurupi »

Pois eh essa informacao pra mim era super importante mas na sexta feira. Agora eh tarde... estou com um problema serio com um cliente. O contas a receber dele estah uma bagunca por causa disso. Ai vc me pergunta! E o backup? Pois eh a ultima vez q eles fizeram backup foi dia 27/04. Eh aquela velha maxima, para uma grande tragedia eh ocorre varios erros pequenos, inclusive eu mesmo deveria ter feito um backup antes da operacao, mas como jah fiz outras vezes e n tive problema peguei pelo excesso de confianca. Fica o registro.

Marcos Roberto
Marcos Roberto
NetService Software
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por vagucs »

Uai, pega o backup entao e pelo menos faz um pequeno programa que delete os registros que ja estivere marcados no backup, ja vai adiantar muito.
Sem mais
Wagner Nunes
www.vagucs.com.br
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por marcos.gurupi »

Eh uma sugestao... e boa diga c d passagem. Mas hoje pela madrugada eu tive uma ideia. O DBU cria um arq. DDBBBUUU.TMP de backup quando c faz alteracao de campo e depois apaga o arq. eu vou rodar um recovery para voltar esse arq. e ver como ele estah. C tiver sucesso eu pego apenas o movimento de sexta-feira pra k e lanco novamente.

NOTA: No caso de seguir seu exemplo como indentifico o registro deletado dentro no BD?

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
rduraes
Usuário Nível 1
Usuário Nível 1
Mensagens: 24
Registrado em: 23 Abr 2008 15:57
Localização: Curvelo - MG

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por rduraes »

Com a função deleted() que retorna .t. para o registro marcado com del e .f. para os não marcados.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por rochinha »

Amiguinho

Se o DBBBUUU.TMP é um backup copie-o com o nome do arquivo oficial e acresça a ela os registros faltantes até hoje. Melhor que testar o backup com o oficial que voce tem agora.

Ou crie um laço que abra o DBU.TMP, pegue o registro, verifique se esta deletado e se sim localize-o no oficial e marque o registro correspondente.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por marcos.gurupi »

Eu solucionei 95% do problema. Primeiro eu rodei um programa recovery para tentar recurar o ddbbbuuu.tmp mas n tive sucesso, entaum peguei o backup q tinha (data 27/04/2008) e baseado nele deletei os registro no arq. principal. N foi um sucesso, levando em conta q ainda achei alguns registros estranhos mas eh muito pouco diante do problema q estava enfrentando. Agora eu aprendi! Muita confianca, n eh muito bom. C eu tivesse sido precavido teria feito a copia do arq. antes de criar o campo. Mas entenda, eu sempre fiz isso e nunca tive problema e das outras vezes eu fiz backup. Acredita!!!! Finalmente hoje vou dormi bem!

Marcos Roberto
Marcos Roberto
NetService Software
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Re: Reg. Deletados foram retornados. Estranho!

Mensagem por ederxc »

marcos.gurupi escreveu:Eu solucionei 95% do problema. Primeiro eu rodei um programa recovery para tentar recurar o ddbbbuuu.tmp mas n tive sucesso, entaum peguei o backup q tinha (data 27/04/2008) e baseado nele deletei os registro no arq. principal. N foi um sucesso, levando em conta q ainda achei alguns registros estranhos mas eh muito pouco diante do problema q estava enfrentando. Agora eu aprendi! Muita confianca, n eh muito bom. C eu tivesse sido precavido teria feito a copia do arq. antes de criar o campo. Mas entenda, eu sempre fiz isso e nunca tive problema e das outras vezes eu fiz backup. Acredita!!!! Finalmente hoje vou dormi bem!

Marcos Roberto
Ainda bem que foi solucionado né hehehehe
Mas no seu caso não deixaria de dar atenção a dica do rochinha , esse lance de usar flags
"campo coringa" isso é uma mão na roda.



"Pocha agora esse forum não para de mudar hehe" (X) :-[ (L)

té++ :%
C:\Xharbour\Xdev\Fw\VSX
Responder