Página 1 de 1

Duplicação de Dados

Enviado: 29 Ago 2009 23:25
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

Re: Duplicação de Dados

Enviado: 29 Ago 2009 23:36
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.

Re: Duplicação de Dados

Enviado: 01 Set 2009 11:57
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.

Re: Duplicação de Dados

Enviado: 04 Set 2009 11:22
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.

Re: Duplicação de Dados

Enviado: 04 Set 2009 11:31
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?

Re: Duplicação de Dados

Enviado: 04 Set 2009 11:33
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.