[firebase-br] Problema com Mestre/Detalhe e Transações. Complicado!

Enio Marconcini -:- www.Enio.Pro.Br -:- eniorm em gmail.com
Sex Jun 13 10:59:56 -03 2008


Saudações amigos,
estou com um problema sério, em que depois de muita pesquisa no Google,
listas e foruns ainda não consegui resolver, só me resta pedir pra St.
Expedito o Santo das causas impossíveis me ajudar!

Cadastro Mestre/Detalhe

Na teoria não há mistério. O problema vem na impelentação.
Atualmente eu tenho feito assim: gravo primeiro (commit) no registro mestre,
gravo os detalhes (commit) e exibo-os num dbgrid dentro do form de cadastro
do registro mestre.
O inconveniente é que pode haver sido cadastrado mestres incompletos, sem
registros detalhes.

Estou usando MDO (semelhante ao IBX)

Minha idéia é ter tudo amarrado num mesmo MDOTransaction, se eu commitar,
grava tudo, do contrário abandona tudo... ATÉ AÍ TUDO BEM: o problema é ir
inserindo registros detalhe e exibir na grade, antes de commitar a
transação.

Minhas tabelas:
Produtos -> Acessorios <- Itens

Onde cada Produto (mestre) possui N acessórios, e os Itens são os acessórios
que compõem o Produto final
Assim, na tabela acessório contém a PK e as FK´s de Produtos e Items
(espero que fui claro)

tentei amarrar tudo ao mesmo MDOTransaction e proceder assim:

*StartTransaction;*

*Produtos.Insert;*
// preenchido os dados do produto
*Produtos.Post;*

// para cada item inserido
*Detalhe.Insert;*
// adiciono o PK de Itens
// adiciono a PK de Produtos
*Detalhe.Post;*

*QueryExibeItens.Close;
QueryExibeItens.Open;*
// aqui deveria ser exibido os itens adicionados num DBGrid
// possui um SQL para trazer os dados dos itens adicionados, e relacionados
com a tabela detalhe
// no entanto não aparece nada.

os DataSet´s foram setados para CachedUpdates True

ao término, se for Commit:
*Produtos.ApplyUpdates;
Detalhe.ApplyUpdates;
Transação.Commit;*

senão:
*Detalhes.CancelUpdates;
Produtos.CancelUpdates;
Transacao.Rollback;*

até uma aplicação de exemplo, seguindo as dicas que encontrei, eu
implementei e não teve acordo, quem quiser dar uma olhada
ftp.santafedosul.sp.gov.br/publico/Teste_MasterDetail.rar

se alguém tiver alguma dica me fala.

abraços

-- 
M.I.C.T.M.R.
ENIO RODRIGO MARCONCINI
...: www.santafedosul.sp.gov.br
....................: www.enio.pro.br
......: gtalk: eniorm em gmail.com
.......................: skype: eniorm
Linux User................. #433647



Mais detalhes sobre a lista de discussão lista