Duplicação de Dados

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

Duplicação de Dados

Mensagem por victorale07 »

Pesquisa:

Quando você gravar ou editar vários arquivos para adicionar DbCommit () no final de cada um,
mas para concluir o processo, colocando dbcommitall ().

A minha pergunta é, dobrando os dados de renda ou alterações a estas instruções têm repetido 2 vezes para os mesmos arquivos?.

Muito obrigado
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Duplicação de Dados

Mensagem por alaminojunior »

Se bem entendí a sua questão, usando a função de flush, duas ou mais vezes, não vai duplicar os registros, apenas vai assegurar mais de uma vez, que os dados sejam descarregados para o disco.
Se está acontecendo duplicação de registros, com certeza é alguma rotina de gravação que está se repetindo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Duplicação de Dados

Mensagem por Maligno »

Ou o mais comum: arquivo de índice corrompido que, neste caso, pode "mostrar" registros duplicados, mas que na verdade não estão.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

Re: Duplicação de Dados

Mensagem por victorale07 »

Obrigado por responder.

Bone, posso usar esta opção, DbCommit () por BD e dbcommital () no final, para garantir a gravação dos meus dados sem o risco de duplicação destes.

obrigado.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Duplicação de Dados

Mensagem por Maligno »

O comando COMMIT não tem qualquer efeito em relação à duplicação de dados, seja ele executado uma ou várias vezes. Ele apenas faz a descarga dos dados para disco. Uma só execução, ao final da carga dos campos é suficiente para garantir a gravação. Mais que isso é desperdício.

Seus registros, observados por algum utilitário do tipo DBU, sem qualquer índice aberto, estão aparecendo duplicados?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Duplicação de Dados

Mensagem por alaminojunior »

posso usar esta opção, DbCommit () por BD e dbcommital () no final, para garantir a gravação dos meus dados sem o risco de duplicação destes.
Poder pode, mas entenda só:
Quando você abre um arquivo de banco de dados em modo compartilhado, o Clipper armazena em memória somente o registro atual da tabela corrente, sendo assim, após qualquer edição deste registro em questão, basta emitir um dbcommit() e os seus dados serão descarregados.
Enfim, fazendo uma chamada à função DbCommit() e logo em seguida DbCommitAll(), causará uma certa lentidão no sistema. Em outras palavras, a chamada à função DbCommitAll() após um DbCommit() seria desnecessária.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder