Fórum Problema com transação #46998

27/09/2004

0

Estou desenvolvendo um sistema de locadora. Montei uma tela para efetuar as retiradas de filmes. Coloquei 2 componentes RxMemoryData (tabelas em memória da paleta Rx), uma para os dados do cliente e a outra para um grid com os dados dos filmes. Após inserir os dados do cliente, há um TEdit para inserir o código do filme a ser retirado; esse código, juntamente com o código do cliente, é usado como parâmetro de uma Stored Procedure que faz as validações necessárias (vê se tem uma cópia ainda disponível para retirada, reservas, esse tipo de coisa). Isso é repetido para cada filme daquele cliente. No final ao clicar-se num botão, os dados das tabelas em memória são jogados no banco de dados e as mesmas são zeradas e preparadas pruma nova retirada. O problema é que eu faço uma retirada e salvo no banco; e aparentemente novos procedimentos ignoram o que acabou de ser comitado. Mesmo fechando o form e voltando não funciona, só fechando o sistema. Um exemplo foi que retirei um filme com só uma cópia, salvei os dados (devidamente comitados) e depois tentei retirar o mesmo filme; o sistema aceitou como se não tivesse registrado ainda a retirada anterior. O componente IBTransaction usado para o IBStoredProc e o IBQuery, usado para gravar os dados no banco, é o mesmo e sempre dou um Commit (não CommitRetaining). Alguém tem idéia do que pode causar isso? Preciso resolver esse problema com urgência. Estou usando Firebird 1.5.1 com IBX 6.08 e Delphi 6 SP2.


Gandalf.nho

Gandalf.nho

Responder

Posts

28/09/2004

Maicongabriel

E qual seria o ´Interbase TransIsolation´ ?
No meu caso, porem em dbExpress, utilizo-o com este valor setado para ´ReadCommited´. :roll:


Responder

Gostei + 0

28/09/2004

Rodolpho123

Seu problema é parecido com um que eu tive uma vez. Dê dois cliques no seu IBTransaction e veja se ele está configurado como ReadComitted?


Responder

Gostei + 0

28/09/2004

Gandalf.nho

Obrigada pela ajuda, mas consegui resolver. O IBQuery estava acidentalmente vinculado a um IBTransaction que só fechava com o término do sistema (usado numa tabela de apoio no DataModule), por isso que não atualizava a informação.


Responder

Gostei + 0

29/09/2004

Tap_pedroso

essa é para o rodolpho 123:

eu utilizo meu ibtransaction como ReadComitted utilizando dessa maneira é realmente seguro de que os dados serão alterados, inserços e deletados do banco de dados sem correr o risco dele não efetuar o camando commit, ou já lhe aconteceu de dar alguma falha e não funcionar,


Responder

Gostei + 0

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

Aceitar