renanbg Postado Maio 10, 2018 Denunciar Share Postado Maio 10, 2018 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'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 10, 2018 Denunciar Share Postado Maio 10, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 renanbg Postado Maio 11, 2018 Autor Denunciar Share Postado Maio 11, 2018 Hoje está configurado assim: Sobre a hora de gravar.. O certo não seria antes iniciar a transação e finalizar com o commit? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 11, 2018 Denunciar Share Postado Maio 11, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 renanbg Postado Maio 11, 2018 Autor Denunciar Share Postado Maio 11, 2018 (editado) 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 Maio 11, 2018 por renanbg Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 11, 2018 Denunciar Share Postado Maio 11, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 renanbg Postado Maio 13, 2018 Autor Denunciar Share Postado Maio 13, 2018 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 13, 2018 Denunciar Share Postado Maio 13, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 renanbg Postado Maio 14, 2018 Autor Denunciar Share Postado Maio 14, 2018 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 14, 2018 Denunciar Share Postado Maio 14, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
renanbg
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
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.