Problema com transação

Firebird

27/09/2004

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

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

27/09/2004

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


GOSTEI 0
Rodolpho123

Rodolpho123

27/09/2004

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


GOSTEI 0
Gandalf.nho

Gandalf.nho

27/09/2004

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.


GOSTEI 0
Tap_pedroso

Tap_pedroso

27/09/2004

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,


GOSTEI 0
POSTAR