Página 1 de 1
Falha no Append...
Enviado: 13 Set 2007 15:53
por ademilson
Senhores...
Estou com o seguinte problema, tenho um sistemas que roda em rede em mais ou menos 40 maquinas, em harbour linux dbf, e esta acontecendo alguns casos esporaticos de nao gravar os dados em uma determinada tabela.
exemplo: E na entrada de notas, primeiramente gravo os dados da nota, depois gravo o financeiro, soh por ultimo que gravo a mov. de produtos e eh justamente nesta tabela que nao estao gravando os dados. Problemão neh.... Já coloquei varios testes, gravando logs. e eh uma coisa meio do outro mundo..rs
Toda sugestao sera bem vinda... Obrigado.
ABRACOS!!!
Jose Ademilson da Cruz
SG Sistemas de Automacao ltda.
Enviado: 13 Set 2007 16:25
por sygecom
Faça o teste no
DbAppend()
Ex:
Código: Selecionar todos
sele agenda
DbAppend()
IF NetErr()
msginfo("Opa, deu erro ao criar o
ELSE
repl nome with Vnome
dbcommit()
Enviado: 13 Set 2007 18:40
por gvc
- Teste o Append no arquivo;
- use a seqüência dbcommit(), dbunlock() para gravar e liberar o registro no disco.
O dbcommit() força a gravação dos dados da memória para o disco. Se vc liberar o bloqueio de registro antes de gravar, outro usuário pode sobrepor os dados indevidamente.
Boa sorte.
Enviado: 14 Set 2007 07:23
por ederxc
Alguem ja cehgou a usar o Set hardcommit em rede ??
Enviado: 14 Set 2007 09:01
por ademilson
Ola amigos...
Pois estao, estas verificacoes eu ja estou fazendo no meu sistema, mas, esse comando que o Ederxc comentou eu nunca usei, será que alguem ja usou????
Vou dar uma pesquisada sobre isso.......
T+
Abracos
Jose Ademilson da Cruz
SG Sistemas de Automacao ltda.
Enviado: 14 Set 2007 09:10
por ademilson
Bom.... dei uma olhada aki nos fontes do harbour e esta indicando que se setado ele forca a gravacao imediata no disco... senao ele fica gravado em cache para posterior gravacao.... vou testa-lo.....
obrigado.... valeu pela dica Ederxc
Abracos
Jose Ademilson da Cruz
SG Sistemas de Automacao ltda.
Enviado: 14 Set 2007 10:58
por ederxc
Então , ele funciona legau quase igual ao
DBCOMMit()
Digo quase pq , vamos aos exemplos...
Código: Selecionar todos
repla eder with veder
repla ederxc with vederxc
dbcommit()
\\nesse caso o buffer é gravado no disco rigido depois de todos os replaces
Código: Selecionar todos
Set hardcommit // nesse caso da a impressão de que ele fica gravando no disco a cada REPLA e não no final
repla eder with veder //grava na hora
repla ederxc with vederxc // grava na hora
Resumão ....
01 -Ou seja creio que o Set hardcommit deichara a gravação um pouco mais lenta , talvez , seja "N" segundos caso imperseptivel , mas é uma
teoria
02 - Mas se vai gravar no disco rigido tudo mesmo , qual a diferença de gravar tudo de uma vez ou ir gravando a cada repla
03- Bom agora é contar com o
MALIGNO ou com o
CHUK NORIS
teoris and teorias .......
:|<
Enviado: 15 Set 2007 15:37
por alaminojunior
O commit descarrega o conteudo do buffer para o disco, que contém sempre ( em caso de modo compartilhado ) o ultimo registro, e não o ultimo campo do registro. Sendo assim, considere o que citou um dos colegas mais acima. Teste para saber se o Dbappend() não falhou. Se falhou implemente algo para que tente até conseguir, ou tentar por n vezes. Lembrando, o uso exagerado dos commit´s da vida, atrasam em muito o sistema.