Array
(
)

Uma transação para 2 tabelas (Firebird)

Helderjr
   - 23 mar 2006

Ola pessoal, estou com a seguinte situação:

Tenho um cadastro de notas fiscais e seus itens, aonde trabalho com 2 tabelas, 1 para os dados principais e outra para itens. O problema é o seguinte:

abro uma unica transação
entrada dos dados principais
entrada dos itens, ai começa o problema, a cada item incluido via INSERT .... apos o executar o script de insert ´execsql()´ dou um refresh na tabela de itens para atualizar um dbgrid a onde possa visualizar os itens já lançado, porém mesmo sem dar o commit da transação esse refresh está gravando fisicamente na tabela as informações e logicamente mesmo que cancela a gravação principal com roolback essa informação do item já está gravado.

Já reavaliei o fonte mas não localizei o problema, se alguem tiver uma luz.

Uso Delphi7 + firebird c/ dbexpress (TSimpledataset, Tdatasource e TSqlquery)


Alexandre_torres
   - 23 mar 2006

Amigo,

vc tem mesmo que lançar os dados pelo insert?

uma das soluções seria vc lançar os dados pelo comando do delphi append e depois CommitRetaning; para depois da avaliação dos dados gravar na tabela commit.

daí por qualquer eventualidade vc utilizar o roolback daí será desfeito.

Obs.: corrijam-me se eu estiver errado mas acho que o roolback não funcina para dados inseridos pelo insert, pois sempre que eu utilizo o insert não consigo reverter os dados.

quem souber posta ai pra nois ... :D

espero ter ajudado.

T+


Helderjr
   - 24 mar 2006

Caro Alexandre

Agradeço a atenção dispensada, mas é possivel sim o roolback após um insert desde que não comitado a transação.