Registro não é gravado

Delphi

28/04/2007

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


L_carlos

L_carlos

Curtidas 0

Respostas

Paullsoftware

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)


GOSTEI 0
L_carlos

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


GOSTEI 0
Marco Salles

Marco Salles

28/04/2007

talves interceptar a mensagem do Windows possa resolver o seu problema

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

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

L_carlos

28/04/2007

Valeu Paull. Problema resolvido. :D

Luiz


GOSTEI 0
Marco Salles

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


GOSTEI 0
Paullsoftware

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


GOSTEI 0
POSTAR