[firebase-br] problema com transação firebird + dbexpress
Eduardo Bahiense
eduardo em icontroller.com.br
Qua Mar 14 11:15:09 -03 2007
Olá Aldrin
Sugiro que você teste utilizando o driver do interbase, que funciona
perfeitamente até a versão 2.x do Firebird.
O driver da UIB não tem o mesmo funcionamento do da Borland, infelizmente.
Abs, Eduardo
Aldrin Fagundes escreveu:
> Por favor me ajudem!
>
> Estou tendo problemas com transação no sistema.
> Antes funcionava perfeitamente com o Interbase, mas quando troquei pelo
> Firebird 2.0 tive os seguintes problemas:
>
> Utilizo o DBExpress com a dll...dbexpUIBfire15.dll + fbclient.dll
> Utilizo Sql+provider+clientDataSet
>
> Importante: Já peguei a última versão do UIB e compilei aqui para gerar a
> dll.
>
>
> Exemplo do problema:
>
> Estou com a tabela de pedidos aberta em uma tela de pesquisa.
> Quando clico no botão Editar dessa tela, edito o pedido e chamo outro
> janela.
> Nesta janela é que estão os tratamentos da transação...
>
>
> No evento OnShow...
>
> SQLConnection1.StartTransaction(TD);
>
> depois abro a tabela de ítens...
>
> Abrir_Itens_Pedido(Id_pedido);
>
>
> Nesta tela cadastro um novo item...
>
> Itens_Pedido.Insert;
> ...entro os dados...
> Itens_Pedido.Post;
> Itens_Pedido.ApplyUpdates(0);
>
> Como a tabela de ítens utiliza LEFT JOIN... Tenho que dar um refresh para
> mostrar os
> dados no grid...exemplo do sql... (se não executar o refresh não aparece o
> nome do produto)
>
> SELECT ITENS_PEDIDO.*, PRODUTO.NOME
> LEFT JOIN PRODUTO ON ITENS_PEDIDO.ID_PRODUTO = PRODUTO.ID_PRODUTO
>
> Por isso executo...
>
> Itens_Pedido.Refresh;
>
> Aí que está o grande problema...
> Neste momento eu desisto do pedido e executo os seguintes comandos:
>
> Pedido.cancel; (pois está em modo de edição)
>
> SQLConnection1.Rollback(TD);
>
> O que acontece então?
> Os ítens que foram aplicados o Refresh não retornam com o RollBack. E pelo
> que ví nem mesmo operações em que eu abro um SQL e fecho executando alguma
> operação...
> O que devo fazer? Isso funcionava no interbase...A operação não poderia
> ficar fora da
> transação, pois com o interbase e o drive dbexpint32.dll funcionava.
> Espero que me ajudem...pois isso é grave!
>
> Outro problema:
>
> Pelo que vi:
>
> Abro tabela 1 (antes da transação)
>
> Abro transação...
>
> Abro tabela 2 (depois da transação)
>
> Refresh na tabela 1 ...some os dados novos
> Refresh na tabela 2 ...grava os dados e não retorna com o fim da transação
>
> Como resolver?
>
> _________________________________________________________________
> Descubra como mandar Torpedos do Messenger para o celular!
> http://mobile.msn.com/
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista