Ir para conteúdo
Fórum Script Brasil
  • 0

CommitRetaining > Commit


renanbg

Pergunta

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');

 

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros 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

 

Link para o comentário
Compartilhar em outros 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. 

 

 

Editado por renanbg
Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros 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?

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...