Falha no Append...
Moderador: Moderadores
- ademilson
- Usuário Nível 2

- Mensagens: 87
- Registrado em: 07 Ago 2007 10:01
- Localização: Maringá
- Contato:
Falha no Append...
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.
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.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Faça o teste no DbAppend()
Ex:
Ex:
Código: Selecionar todos
sele agenda
DbAppend()
IF NetErr()
msginfo("Opa, deu erro ao criar o
ELSE
repl nome with Vnome
dbcommit()
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- 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.
- 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.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- ademilson
- Usuário Nível 2

- Mensagens: 87
- Registrado em: 07 Ago 2007 10:01
- Localização: Maringá
- Contato:
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.
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.
_____________________
José Ademilson da Cruz
Gerente de Desenvolvimento Harbour
SG Sistemas de Automação ltda.
José Ademilson da Cruz
Gerente de Desenvolvimento Harbour
SG Sistemas de Automação ltda.
- ademilson
- Usuário Nível 2

- Mensagens: 87
- Registrado em: 07 Ago 2007 10:01
- Localização: Maringá
- Contato:
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.
obrigado.... valeu pela dica Ederxc
Abracos
Jose Ademilson da Cruz
SG Sistemas de Automacao ltda.
_____________________
José Ademilson da Cruz
Gerente de Desenvolvimento Harbour
SG Sistemas de Automação ltda.
José Ademilson da Cruz
Gerente de Desenvolvimento Harbour
SG Sistemas de Automação ltda.
Então , ele funciona legau quase igual ao DBCOMMit()
Digo quase pq , vamos aos exemplos...
\\nesse caso o buffer é gravado no disco rigido depois de todos os replaces
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 .......
:|<
Digo quase pq , vamos aos exemplos...
Código: Selecionar todos
repla eder with veder
repla ederxc with vederxc
dbcommit()
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 .......
:|<
C:\Xharbour\Xdev\Fw\VSX
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
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.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
