gibaf Posted February 12, 2015 Report Share Posted February 12, 2015 ola a todos... em alguns clientes esta acontecendo muito QUEDA DE ENERGIA, apartir dae, alguns titulos ja pagos, voltam como se nao foram ainda pagos... alem disse, tambem, some uns registros de banco/caixa... aparentemente, somente essas duas tabelas sofreram com a QUEDA DE ENERGIA... gostaria saber de vcs, se tem alguma forma pra evitar/preve a perca das informacoes guardados em dbf/cdx, via programacao (sei q pode ter alguns q vao sugerir no-break, etc....) ?? desde ja agradeco a ajuda: MUITO OBRIGADO !!!! WelchDats 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 12, 2015 Report Share Posted February 12, 2015 alguns titulos ja pagos, voltam como se nao foram ainda pagos... alem disse, tambem, some uns registros de banco/caixa... Investigue isso melhor, tá muito estranho... a data do banco de dados está correta? Não tem dedo humano ai, não? Quote Link to comment Share on other sites More sharing options...
emotta Posted February 12, 2015 Report Share Posted February 12, 2015 Voce usa o DBCOMMIT() ou DBCOMMITALL() após a gravação dos campos nos processos? ola a todos... em alguns clientes esta acontecendo muito QUEDA DE ENERGIA, apartir dae, alguns titulos ja pagos, voltam como se nao foram ainda pagos... alem disse, tambem, some uns registros de banco/caixa... aparentemente, somente essas duas tabelas sofreram com a QUEDA DE ENERGIA... gostaria saber de vcs, se tem alguma forma pra evitar/preve a perca das informacoes guardados em dbf/cdx, via programacao (sei q pode ter alguns q vao sugerir no-break, etc....) ?? desde ja agradeco a ajuda: MUITO OBRIGADO !!!! vagner 1 Quote Link to comment Share on other sites More sharing options...
gibaf Posted February 12, 2015 Author Report Share Posted February 12, 2015 Voce usa o DBCOMMIT() ou DBCOMMITALL() após a gravação dos campos nos processos? 99% nao, porque ? Quote Link to comment Share on other sites More sharing options...
gibaf Posted February 12, 2015 Author Report Share Posted February 12, 2015 alguns titulos ja pagos, voltam como se nao foram ainda pagos... alem disse, tambem, some uns registros de banco/caixa... Investigue isso melhor, tá muito estranho... a data do banco de dados está correta? Não tem dedo humano ai, não? a data esta ok , nao tem dedo de usuario ,etc... isso ocorre logo na sequencia da queda da energia. Quote Link to comment Share on other sites More sharing options...
emotta Posted February 12, 2015 Report Share Posted February 12, 2015 Enquanto voce não da o COMMIT fica somente em memoria a informação e em algum determinado momento o (x)Harbour descarrega para disco, ou seja, voce deixa pra ele determinar quando descarrega para disco. Isso acontece desde a época do clipper e o objetivo é otimizar o processo. Na prática tudo ocorre sem problemas quando nao tem situações atipicas, como queda de energia, mas se der uma queda de energia em um momento que o (x)Harbour ainda não descarregou para disco voce perde tudo que estava em memoria e não foi descarregado. Quanto mais DBCOMMIT vc usar mais lento fica seu processo de gravação, porem voce garante que foi descarregado em disco o que estava em memoria. Então utilize isso de maneira que seja confiavel porem nao prejudique a performance do seu sistema. Se voce quer garantir que seja gravado em disco a informação logo após gravar o campo tem que usar o DBCOMMIT para cada alias que teve algum processo de gravação ou dbcommitall() após finalizar as gravações, ex: DbSelectArea("CLIENTES") CLIENTES->ULTCOMPRA := M->dDatVen CLIENTES->(DbCommit()) DbSelectArea("NOTAFISCAL") Append Blank NOTAFISCAL->NUMERO := M->nNumero NOTAFISCAL->DATA := M->dDatVen NOTAFISCAL->VALOR := M->nVrNf NOTAFISCAL->(DbCommit()) ou então: DbSelectArea("CLIENTES") CLIENTES->ULTCOMPRA := M->dDatVen DbSelectArea("NOTAFISCAL") Append Blank NOTAFISCAL->NUMERO := M->nNumero NOTAFISCAL->DATA := M->dDatVen NOTAFISCAL->VALOR := M->nVrNf DbCommitAll() 99% nao, porque ? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 12, 2015 Report Share Posted February 12, 2015 https://vivaclipper.wordpress.com/tag/dbcommit/ Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted February 12, 2015 Report Share Posted February 12, 2015 Amigos entendi o que ele quiz dizer, e já aconteceu e de vez em quando acontece, por isso estou mudando gradativamente para o SQL. Ele não quiz dizer "na hora" pois quando se fecha o arquivo acontece um "commit" automaticamente, no caso dele (acho eu), é a cprrupção dos arquivos de índices mesmo, que quando refeitos (REINDEX) podem sumir com os regstros ou não gravarem as alterações feitas. Nesse caso, a sugestão do amigo funciona mesmo, mas para empresas que tem problemas de queda de energia e problemas na rede, isso acontecerá comumente. xHB 8.12 / BCC 5.6 / DBFCDX/SQL Quote Link to comment Share on other sites More sharing options...
emotta Posted February 12, 2015 Report Share Posted February 12, 2015 É isso mesmo, o ideal é ter um nobreak em cada estação e no servidor, pra evitar que isso aconteça... Porem via programação, que é como foi pedido, isso é o máximo que se pode fazer... Amigos entendi o que ele quiz dizer, e já aconteceu e de vez em quando acontece, por isso estou mudando gradativamente para o SQL. Ele não quiz dizer "na hora" pois quando se fecha o arquivo acontece um "commit" automaticamente, no caso dele (acho eu), é a cprrupção dos arquivos de índices mesmo, que quando refeitos (REINDEX) podem sumir com os regstros ou não gravarem as alterações feitas. Nesse caso, a sugestão do amigo funciona mesmo, mas para empresas que tem problemas de queda de energia e problemas na rede, isso acontecerá comumente. xHB 8.12 / BCC 5.6 / DBFCDX/SQL kapiaba 1 Quote Link to comment Share on other sites More sharing options...
gibaf Posted February 12, 2015 Author Report Share Posted February 12, 2015 OBRIGADO A TODOS PELAS DICAS vamos implementar e colocar no cliente... dae, aviso se resolveu... obrigado mais uma vez ! Quote Link to comment Share on other sites More sharing options...
oziel Posted April 10, 2015 Report Share Posted April 10, 2015 Interessante todas as dicas, mas Gibaf, transfira a responsabilidade para o proprietário do estabelecimento, por norma principalmente o servidor deverá obrigatoriamente ter nobreak, melhor ainda se todas estações tiverem um NB, se há queda de energia ele (proprietário) vai procurar outro culpado que não seja ele. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 13, 2015 Report Share Posted April 13, 2015 Oziel, pode até ser mas temos que fazer nossa parte no sistema. Ter COMMIT pra descarregar o que está em memória pra disco é obrigação do sistema e tem que ser feito. Mas colocar isso não isenta mesmo o cliente de ter nobreak assim como ter nobreak não isenta o sistema de ter os COMMITs Interessante todas as dicas, mas Gibaf, transfira a responsabilidade para o proprietário do estabelecimento, por norma principalmente o servidor deverá obrigatoriamente ter nobreak, melhor ainda se todas estações tiverem um NB, se há queda de energia ele (proprietário) vai procurar outro culpado que não seja ele. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.