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)
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
Curtir tópico
+ 0
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+
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.
Agradeço a atenção dispensada, mas é possivel sim o roolback após um insert desde que não comitado a transação.
Responder
Clique aqui para fazer login e interagir na Comunidade :)