Salvando no Paradox

Delphi

24/05/2004

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


Osmar Cardoso

Osmar Cardoso

Curtidas 0

Respostas

Repa

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.


GOSTEI 0
Nigro

Nigro

24/05/2004

Creio que precise da DBITypes também


GOSTEI 0
Bacalhau

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!


GOSTEI 0
Aroldo Zanela

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.


GOSTEI 0
Xisto

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


GOSTEI 0
Bacalhau

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... :(


GOSTEI 0
Rodolpho123

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
POSTAR