• 0
Sign in to follow this  
renanbg

CommitRetaining > Commit

Question

Estou pensando em mudar de CommitRetaining para Commit e gostaria de algumas dicas.

Hoje mantenho o transaction sempre ativo.

Com essa mudança, deverei deixa-lo inativo e fazer a chamada a cada inclusão, alteração e exclusão, mais ou menos assim?

if not trFisio.InTransaction then 
  trFisio.StartTransaction; 

... 
... 
Post 
ApplyUpdates(0); 
Commit; 
Showmessage('ok');

 

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

simplesmente deixe no componente ZConnection a propriedade

TransactIsolationLevel = tiReadCommitted

na hora de salvar use:  ( exemplo )

     begin

        CDS_Cadprod.ApplyUpdates(-1);
        CDS_Cadprod.Refresh;

        FMenu.ZConnection1.Commit;
        FMenu.ZConnection1.StartTransaction;

        MessageDlg('REGISTRO SALVO! ', mtInformation, [mbOK], 0);
     end;

abraço

Share this post


Link to post
Share on other sites
  • 0

por default, a transação é sempre iniciada quando voce ativa a edição de um registro em uma tabela.

então utilize na hora da gravação do registro,  o comando ( Commit )  para finalizar a gravação e depois logo em seguida voce inicia novamente a transação ( StartTransaction )

não vai ter problema nenhum

abraço

 

Share this post


Link to post
Share on other sites
  • 0

Desculpa as duvidas, mas como sempre usei o commitretaining, estou um pouco perdido.

Tenho alguns cadastros, onde ao acessar a tela(oncreate), dou um select e trago um grupo de registros no dbgrid.

Ex:

Meu cadastro de convenios lista todos os convenios no dbgrid. Daí se eu for inserir/alterar, ao dar o commit, todos registros somem do dbgrid.

Nesses casos que eu estou um pouco perdido. 

 

 

Edited by renanbg

Share this post


Link to post
Share on other sites
  • 0

meu amigo, não sei qual é a sua forma de fazer programação, mas o usual é voce ter botões de inserir, alterar, excluir .... depois de uma dessas opções ter sido realizada, voce deve ter um outro botão para salvar e outro para cancelar a operação.

tudo vai depender de quais outros comandos serão executados depois do commit

no meu caso, depois do commit eu simplesmente limpo a tela .... não vejo necessidade de ficar aparecendo os registros, uma vez que a operação tenha sido finalizada.

abraço

Share this post


Link to post
Share on other sites
  • 0

No meu caso, tenho os botões que você citou é logo abaixo deles o dbgrid.

ao incluir, alterar ou excluir, o dbgrid já é atualizado para o usuário.

O problema do commit é que ele vai fechar a tabela e com isso o dbgrid vai ficar vazio pro usuário.

Share this post


Link to post
Share on other sites
  • 0

não vejo onde esta o seu problema, se depois do commit voce quer continuar mostrando os dados na tela, execute novamente a select inicial, quando voce ativa o Form

abraço 

Share this post


Link to post
Share on other sites
  • 0

Sim, de fato terei que fazer isso e ainda usar o bookmark para posicionar o cursor.

Achei mais trabalhoso usar commit ao invés de commitretaining.

Pensei no seguinte: Nestes forms onde os dados ficam sempre visiveis, usar o commitretaining e nos forms onde não listo os dados, usar o commit.

Você acha possivel fazer isso?

Neste caso devo configurar o IBTRansaction como TACommit ou TACommitRetaining, lá no object inspector?

Share this post


Link to post
Share on other sites
  • 0

Como já te passei, o select faz tudo e não é necessario usar o TBookMark ( com o tempo e experiencia voce vai aprender isso )

Se voce quer usar o usar o commitretaining e nos forms onde não lista os dados, usar o commit, voce até pode, mas não é uma boa pratica em programação.

Deixe a propriedade DefaultAction do componente como TACommit

abraço

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this