Transacao com IBX

Delphi

09/01/2014

existe algum inconveniente em usar um IBTransaction em cada form para validar transações ?
Marcelino Santos

Marcelino Santos

Curtidas 0

Respostas

Fabio Cardoso

Fabio Cardoso

09/01/2014

o ideal e ter um data modulo onde o componente de conexao e transacao estao e em cada form voce fazer a chamada do transaction
GOSTEI 0
Marcelino Santos

Marcelino Santos

09/01/2014

o ideal e ter um data modulo onde o componente de conexao e transacao estao e em cada form voce fazer a chamada do transaction

já tentei dessa forma porem quando fecho uma transação é fechada todas as outras transações que estiverem abertas
GOSTEI 0
Fabio Cardoso

Fabio Cardoso

09/01/2014

voce abre formularios em cascata? tipo:
cadastro de clientes chama cadastro de telefone, depois cadastro de clientes chama cadastro de bairros , quero dizer voce tem um formulario pai recebendo dados de formularios filhos? ou voce tem uma aplicacao que abre uma tela, minimiza, abre outra, minimiza abre outra?

se for formularios em cascata voce usa o comando IBTransaction1.CommitRetaining, no botao confirma do formulario pai, e em cada formulario filho voce usa apenas ibtable1.post;
é assim que faco aqui
GOSTEI 0
Marcelino Santos

Marcelino Santos

09/01/2014

[code]
[/code]
voce abre formularios em cascata? tipo:
cadastro de clientes chama cadastro de telefone, depois cadastro de clientes chama cadastro de bairros , quero dizer voce tem um formulario pai recebendo dados de formularios filhos? ou voce tem uma aplicacao que abre uma tela, minimiza, abre outra, minimiza abre outra?

se for formularios em cascata voce usa o comando IBTransaction1.CommitRetaining, no botao confirma do formulario pai, e em cada formulario filho voce usa apenas ibtable1.post;
é assim que faco aqui

a aplicacao nao abre em cascata, ela abre uma minimizando o outro 
GOSTEI 0
Fabio Cardoso

Fabio Cardoso

09/01/2014

como eu disse faca tudo que voce precisar fazer nas telas que precisar, quando terminar voce cria algo como o codigo abaixo efetuando uma transacao so para todos os posts que voce efetuar


if not dmDados.dbDados.InTransaction then
dmDados.dbDados.StartTransaction;
if (qryMaster <> nil) and (qryMaster.Active) then
if TQuery(qryMaster).UpdatesPending then
TQuery(qryMaster).ApplyUpdates;
if (qryDetail <> nil) and (qryDetail.Active) then
if TQuery(qryDetail).UpdatesPending then
TQuery(qryDetail).ApplyUpdates;

if (qrySubDetail <> nil) and (qrySubDetail.Active) then
if TQuery(qrySubDetail).UpdatesPending then
TQuery(qrySubDetail).ApplyUpdates;

dmDados.dbDados.Commit;
GOSTEI 0
Marcelino Santos

Marcelino Santos

09/01/2014

como eu disse faca tudo que voce precisar fazer nas telas que precisar, quando terminar voce cria algo como o codigo abaixo efetuando uma transacao so para todos os posts que voce efetuar


if not dmDados.dbDados.InTransaction then
dmDados.dbDados.StartTransaction;
if (qryMaster <> nil) and (qryMaster.Active) then
if TQuery(qryMaster).UpdatesPending then
TQuery(qryMaster).ApplyUpdates;
if (qryDetail <> nil) and (qryDetail.Active) then
if TQuery(qryDetail).UpdatesPending then
TQuery(qryDetail).ApplyUpdates;

if (qrySubDetail <> nil) and (qrySubDetail.Active) then
if TQuery(qrySubDetail).UpdatesPending then
cara valeu !!!  vou tentar fazer dessa forma se nao conseguir volto a contactar

TQuery(qrySubDetail).ApplyUpdates;

dmDados.dbDados.Commit;
GOSTEI 0
POSTAR