GARANTIR DESCONTO

Fórum Problema transação Firebird 2 Dbexpress #57998

13/03/2007

0

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...
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?


Aldrin

Aldrin

Responder

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

Aceitar