Salvando no Paradox
Olá,
Tenho programado em Delphi 5 e uso o BD Paradox. A situação é a seguinte: Abro a tabela, insiro os dados necessários e salvo; Porém se der um ´pau´ no windows (queda de energia, por exemplo), quando abro o programa novamente após reiniciar, os últimos dados inseridos na referida tabela não foi salvo! Sumiu!
Quando é que efetivamente salvo as alterações/inserções no BD? Será que é somente quando fecho o programa?
Isso é assustador!
Por favor, alguém me dê uma luz...
Desde já sou muito grato.
Osmar
Tenho programado em Delphi 5 e uso o BD Paradox. A situação é a seguinte: Abro a tabela, insiro os dados necessários e salvo; Porém se der um ´pau´ no windows (queda de energia, por exemplo), quando abro o programa novamente após reiniciar, os últimos dados inseridos na referida tabela não foi salvo! Sumiu!
Quando é que efetivamente salvo as alterações/inserções no BD? Será que é somente quando fecho o programa?
Isso é assustador!
Por favor, alguém me dê uma luz...
Desde já sou muito grato.
Osmar
Osmar Cardoso
Curtidas 0
Respostas
Repa
24/05/2004
Li outro dia aqui mesmo:
no evento after post coloque dbisavechanges(nomedatabela.Handle) e insira BDE no início da USES.
no evento after post coloque dbisavechanges(nomedatabela.Handle) e insira BDE no início da USES.
GOSTEI 0
Nigro
24/05/2004
Creio que precise da DBITypes também
GOSTEI 0
Bacalhau
24/05/2004
Osmar, desculpa mas essa situação não se resolve pela via da programação. A compra de uma unidade UPS (é assim chamada em Portugal) é que é a solução! (são aqueles aparelhos que suportam a energia do computador, quando há falta de electricidade... não sei como é o nome aí no Brasil)
Aliás duvido que alguém venha com a ´solução final´ para esse problema!
Aliás duvido que alguém venha com a ´solução final´ para esse problema!
GOSTEI 0
Aroldo Zanela
24/05/2004
Colega,
Aqui no Brasil é chamado de no-break :lol: ou SIE (Sistema Inenterrupto de Energia). Porém, conforme foi mecionado pela colega (repa) o uso de dbiSaveChanges após o evento AfterPost soluciona o problema da forma que foi apresentado pelo colega. Mas concordo com você, pois a solução mais apropriada no caso de aplicações desktop é o uso conjunto das soluções apresentadas, pois além da falta de energia que pode ser resolvida pelo SIE, pode-se ter outros problemas como: ´travamento´, falha na rede, etc.
Aqui no Brasil é chamado de no-break :lol: ou SIE (Sistema Inenterrupto de Energia). Porém, conforme foi mecionado pela colega (repa) o uso de dbiSaveChanges após o evento AfterPost soluciona o problema da forma que foi apresentado pelo colega. Mas concordo com você, pois a solução mais apropriada no caso de aplicações desktop é o uso conjunto das soluções apresentadas, pois além da falta de energia que pode ser resolvida pelo SIE, pode-se ter outros problemas como: ´travamento´, falha na rede, etc.
GOSTEI 0
Xisto
24/05/2004
Mais uma voz se soma.
Dê seu commid : dbisavechanges(nomedatabela.Handle
ou outro metodo (este nao é o unico).
Mas se vc nao colocar um nobreak (pelo menos um que segure apenas o servidor) ainda assim fica passivel de perda de dados, isto no paradox ou em outro banco qqer.
Com o nobreak apenas no servidor, vc pode perder os ultimos dados gravados (e agradeca por isso).
Agora se o servidor nao estiver protegido, vc pode ter suas tabelas corrompidas.
Queda de energia é o bicho.
[]s
Xisto
Dê seu commid : dbisavechanges(nomedatabela.Handle
ou outro metodo (este nao é o unico).
Mas se vc nao colocar um nobreak (pelo menos um que segure apenas o servidor) ainda assim fica passivel de perda de dados, isto no paradox ou em outro banco qqer.
Com o nobreak apenas no servidor, vc pode perder os ultimos dados gravados (e agradeca por isso).
Agora se o servidor nao estiver protegido, vc pode ter suas tabelas corrompidas.
Queda de energia é o bicho.
[]s
Xisto
GOSTEI 0
Bacalhau
24/05/2004
O dbisavechanges não resolve completamente o problema. Esta operação não é atómica. Quem garante que a falta de energia não ocorre durante a execução?
É ainda óbvio que as unidades no-break (já aprendi :lol: ) deverão suportar os computadores da rede e não somente o servidor. Deverão tambem suportar os hubs, switchs e o restante hardware que suporta a rede. Não sei porquê, mas toda a gente se esquece de ligar hubs ao no-break... :shock:
quanto ao preço deles, isso já é outra questão... :(
É ainda óbvio que as unidades no-break (já aprendi :lol: ) deverão suportar os computadores da rede e não somente o servidor. Deverão tambem suportar os hubs, switchs e o restante hardware que suporta a rede. Não sei porquê, mas toda a gente se esquece de ligar hubs ao no-break... :shock:
quanto ao preço deles, isso já é outra questão... :(
GOSTEI 0
Rodolpho123
24/05/2004
Sem contar Osmar, que mesmo vc desabilitando a opção de gravação temporária do próprio Windows, ele só grava no disco quando ele, digamos assim, ´tem vontade´. Um caso que não acontece no Linux. Acho que a solução é mesmo um no-break, pois já tive o mesmo problema que o seu e só consegui resolver assim.
GOSTEI 0