Fórum Interbase com mais de um usuário em rede: #43191

19/03/2004

0

Comecei a testar meu programa com banco Interbase em rede, e quando abro mais de uma estação com meu programa dá sempre a mensagem de erro´Lock conflict on no wait transaction deadlock´. Minhas buscas e inserções de dados nas tabelas, até onde testei, funcionam normalmente. Gostaria de saber o que é essa mensagem?
Grato


Cfreitas

Cfreitas

Responder

Posts

19/03/2004

Sremulador

Amigo isto acontece quando o mesmo usuário tenta utilizar o mesmo resgistro que o seu atualmente, para isso você tem que fazer um tratamento para as trasações, try except...


Responder

Gostei + 0

19/03/2004

Afarias

Vc deve *também* cuidar bem de suas transações, e quando fizer uma alteração procurar fazer com q a transação q contenha estas alterações seja o mais curta possível.

Quando vc edita um registro e posta! (ou seja, executa um UPDATE em 1 registro) este registro fica bloqueado (em LOCK) para alterações por outros usuários... e só será liberado, quando a transação for ´commitada´ ou descartada (rollback)


T+


Responder

Gostei + 0

22/03/2004

Cfreitas

Tudo bem, eu faço um commit após cada post Ex:
IBDataSet1.Edit;
...
IBDataSet1.Post;
IBDataSet1.Transaction.commit;

Só que ocorre que meus DBGrids associados ao IBDataSet1 e outros DBGrids associados a outros IBDataSet´s na mesma rotina, somem todos os registros após o commit. Terei sempre que ficar mandando filtrar meus registros novamente?
Grato.


Responder

Gostei + 0

22/03/2004

Gandalf.nho

Ao dar commit, todos os datasets associados com aquela transação fecham, é por isso, que os registros somem.


Responder

Gostei + 0

22/03/2004

Afarias

Vc tem pelo menos 2 soluções::

1- usar transações diferentes para SELEÇÃO e EDIÇÃO
2- usar CommitRetaining no lugar de Commit (assim a transação não será realmente fechada e as Querys continuam abertas)


T+


Responder

Gostei + 0

22/03/2004

Cfreitas

Qual a diferença de usar IBDataSet.Transaction.commit..., ou utilizar um objeto IBTransaction.commit ligada ao meu IBDataBase, para confirmar as alterações em minhas tabelas? Gostaria de saber também, se quando utilizo uma SP para fazer select de registros, após esta seleção será necessário efetuar commit? Utilizo a SP em SelectSQL do IBDataSet

Grato.


Responder

Gostei + 0

22/03/2004

Afarias

Qual a diferença de usar IBDataSet.Transaction.commit..., ou utilizar um objeto IBTransaction.commit ligada ao meu IBDataBase,


Nenhuma!!


se quando utilizo uma SP para fazer select de registros, após esta seleção será necessário efetuar commit? Utilizo a SP em SelectSQL do IBDataSet


Não e Sim! Como vc está usando IBX (IBDataSet) vc *não* poderá efetuar o commit pois o DataSet será fechado. Entretanto, assim q sua aplicação não mais precisar dos dados, efetue o commit!


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar