Transacao com IBX
existe algum inconveniente em usar um IBTransaction em cada form para validar transações ?
Marcelino Santos
Curtidas 0
Respostas
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
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
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
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
09/01/2014
[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
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
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;
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
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;
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