[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