Uma transação para 2 tabelas (Firebird)

23/03/2006

0

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)


Helderjr

Helderjr

Responder

Posts

23/03/2006

Alexandre_torres

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+


Responder

24/03/2006

Helderjr

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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar