Registro não é gravado
Olá,
Estou com um problema. Quando incluo registros no programa e depois minimizo ele, se eu desligar o computador sem fechar o programa antes, qdo abro ele novamente os registros que tinham sido incluidos antes do programa ser minimizado não aparecem. Como fazer para evitar isso?
Eu uso D7/FIREBIRD 1.5/IBX. Obrigado.
Luiz
Estou com um problema. Quando incluo registros no programa e depois minimizo ele, se eu desligar o computador sem fechar o programa antes, qdo abro ele novamente os registros que tinham sido incluidos antes do programa ser minimizado não aparecem. Como fazer para evitar isso?
Eu uso D7/FIREBIRD 1.5/IBX. Obrigado.
Luiz
L_carlos
Curtidas 0
Respostas
Paullsoftware
28/04/2007
não creio que o fato de você está ´Minimizando´ o seu programa tenha algo haver com o não salvamento dos dados no banco de dados, creio que está relacionado a maneira como você está ´Gravando´ esses dados, quando você clica no botão ´Salvar´ para confirmar a ´Inclusão´ dos dados que código você está usando???
sempre post o código usado, assim, fica mais fácil de ajudar nos esclarecimentos... 8)
sempre post o código usado, assim, fica mais fácil de ajudar nos esclarecimentos... 8)
GOSTEI 0
L_carlos
28/04/2007
Tem a ver com o programa estar minimizado e não ser fechado. Porque quando eu fecho o programa clicando no botão fechar e desligo o miccro qdo abro novamente os registros foram incluidos normalmente (no botão fechar eu desconecto as query e o ibdatabase).
O Codigo para gravar é esse:
with FDADOS.QryINSAgenda do
begin
ParamByName(´dat_dia´).asDate := dtdata.date;
ParamByName(´hor_hora´).asTime := strtotime(EDHORA.Text);
ParamByName(´des_evento´).asstring := edevento.text;
ParamByName(´des_detalhe´).asstring := memodetalhe.text;
ExecSql;
FDADOS.QryAgenda.Active :=FALSE;
FDADOS.QryAgenda.Active :=TRUE;
Onde FDADOS é o Data Module.
Luiz
O Codigo para gravar é esse:
with FDADOS.QryINSAgenda do
begin
ParamByName(´dat_dia´).asDate := dtdata.date;
ParamByName(´hor_hora´).asTime := strtotime(EDHORA.Text);
ParamByName(´des_evento´).asstring := edevento.text;
ParamByName(´des_detalhe´).asstring := memodetalhe.text;
ExecSql;
FDADOS.QryAgenda.Active :=FALSE;
FDADOS.QryAgenda.Active :=TRUE;
Onde FDADOS é o Data Module.
Luiz
GOSTEI 0
Marco Salles
28/04/2007
talves interceptar a mensagem do Windows possa resolver o seu problema
na seccção private do form escreva
ou se preferir :
Acho que funfa para o que voce quer
na seccção private do form escreva
private procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession;
procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession); begin if TestarSeFormmularioEstaMinimizado begin exceutarEventoBotaoSalvar Ou ExcutarEventoBotaoSalvar end; Msg.Result := 1; end;
ou se preferir :
procedure WMEndSession(var Msg : TWMEndSession); message WM_ENDSESSION; Adicionar a procedure à seção implementation de sua unit:
procedure TForm1.WMEndSession(var Msg : TWMEndSession); begin if Msg.EndSession = true then if TestarSeFormmularioEstaMinimizado begin exceutarEventoBotaoSalvar Ou ExcutarEventoBotaoSalvar end; inherited; end;
Acho que funfa para o que voce quer
GOSTEI 0
Paullsoftware
28/04/2007
quando eu trabalhava com IBX com os componentes:
IbDataBase
IbTransaction
IbDataSet
e nos eventos
[b:6af753cca6]afterPost e AfterDelete[/b:6af753cca6]
eu sempre coloco o código abaixo...
assim, sempre que executo alguma alteração essas são gravadas diretamente no banco, então mesmo que falte energia logo depois de clicar no botão SALVAR os dados já estaram gravados no banco, pelo menos comigo sempre funcionou... :wink:
IbDataBase
IbTransaction
IbDataSet
e nos eventos
[b:6af753cca6]afterPost e AfterDelete[/b:6af753cca6]
eu sempre coloco o código abaixo...
if Not Transaction.InTransaction then Transaction.StartTransaction; Try if Transaction.InTransaction then Transaction.CommitRetaining Except if Transaction.InTransaction then Transaction.RollbackRetaining; end;
assim, sempre que executo alguma alteração essas são gravadas diretamente no banco, então mesmo que falte energia logo depois de clicar no botão SALVAR os dados já estaram gravados no banco, pelo menos comigo sempre funcionou... :wink:
GOSTEI 0
L_carlos
28/04/2007
Valeu Paull. Problema resolvido. :D
Luiz
Luiz
GOSTEI 0
Marco Salles
28/04/2007
Sei não , mas é so uma opinião ..
Abrir transação comitar fechar transação etc , para cad apost que se da no Aplicativo ´pode não ser uma prática boa... Pois pelo que tudo indica ,
estara consomindo muito recurso do servidor alem de prender a conexão e também o cursor . Nun Sistema de Rede , poderemos ter uma perda consideravel na performace..
Abrir transação comitar fechar transação etc , para cad apost que se da no Aplicativo ´pode não ser uma prática boa... Pois pelo que tudo indica ,
estara consomindo muito recurso do servidor alem de prender a conexão e também o cursor . Nun Sistema de Rede , poderemos ter uma perda consideravel na performace..
GOSTEI 0
Paullsoftware
28/04/2007
[quote:7a0e1fc957=´Marco Salles´]Sei não , mas é so uma opinião ..
Abrir transação comitar fechar transação etc , para cad apost que se da no Aplicativo ´pode não ser uma prática boa... Pois pelo que tudo indica ,
estara consomindo muito recurso do servidor alem de prender a conexão e também o cursor . Nun Sistema de Rede , poderemos ter uma perda consideravel na performace..[/quote:7a0e1fc957]
valeu Marcos, eu usava isso quando trabalhava com IBX mais agora migrei pra DBX e não faço mais isso, até pq eu só usava essa torina como forma alternativa quando ocorria problemas do tipo!
mais valeu pelo toque...
Abrir transação comitar fechar transação etc , para cad apost que se da no Aplicativo ´pode não ser uma prática boa... Pois pelo que tudo indica ,
estara consomindo muito recurso do servidor alem de prender a conexão e também o cursor . Nun Sistema de Rede , poderemos ter uma perda consideravel na performace..[/quote:7a0e1fc957]
valeu Marcos, eu usava isso quando trabalhava com IBX mais agora migrei pra DBX e não faço mais isso, até pq eu só usava essa torina como forma alternativa quando ocorria problemas do tipo!
mais valeu pelo toque...
GOSTEI 0