[firebase-br] problema com transação firebird + dbexpress
Aldrin Fagundes
aldrin.fagundes em hotmail.com
Qua Mar 14 11:08:05 -03 2007
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/
Mais detalhes sobre a lista de discussão lista