[firebase-br] RES: Loucura => Mestre/Detalhe & CachedUpdates C/MDO vIB

Jose Aparecido da Silva joseasilva em bol.com.br
Qui Jun 25 11:38:05 -03 2009


Uso IBX, Delphi 7, IBX e FB 2.1

Eu faço assim:

1. Inicio a tabela master (PEDIDOS)
2. Seto o ID da tabela Master (PEDIDOS) através de uma função que eu criei
que simplesmente faz um select gen_id(gen_pedidos, 1) from rdb$database;
3. no onnewrecord da tabela detalhe: (PEDIDOSITENS) eu seto o id da tabela
master, no caso: IDPEDIDO = qrPedidos.FieldByname('ID').asInteger;
4. Na tabela Master sou eu que atribuo o ID da primary key.
5. Na tabela Detalhe eu defino o Campo da primary key como Requerid:= false
e seto o valor numa trigger before insert no banco
Tenho feito assim e nunca tive problemas.
Fica ai mais uma dica.

[ ]'s
Jose


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Zottis
Enviada em: quinta-feira, 25 de junho de 2009 08:26
Para: FireBase
Assunto: Re: [firebase-br] Loucura => Mestre/Detalhe & CachedUpdates C/MDO
vIB

Para contornar esse problema eu utilizo assim:
criei um campo Estado_da_Tabela na Tabela Pedidos
e nele eu coloco como "INSERINDO", no onnewrecord
e quando eu vou colocar registros na tabela de itens, eu gravo o registro da

tabela Pedidos no banco

se eu clico no botao salvar, eu mudo o campo ESTADO_DA_TABELA para 
"GRAVADO",
se eu clico no botao Cancelar, eu verifico o campo ESTADO_DA_TABELA, se esta

"INSERINDO" eu deleto,
se esta  "GRAVADO", eu Aplico o Cancel


assim eu consegui resolver este problema.

PS. Criei também um Trigger que deleta os pedidos que estão com o Campo 
ESTADO_DA_TABELA = "INSERINDO"
se a data for menor que a data atual, para evitar de deixar passar algum 
erro nos lançamentos.


espero que ajude.




Zottis(TeamFB Users)

Zottis Sistemas - 2009 Ano XII
Programação Delphi/PHP/Firebird/MySQL

"Um homem só tem o direito de olhar
  a um outro de cima para baixo, quando
  vai ajuda-lo a levantar-se".
                   Gabriel Garcia Marquez
----- Original Message ----- 
From: "Mário Reis" <mariodosreyx em gmail.com>
To: <lista em firebase.com.br>
Sent: Thursday, June 25, 2009 6:31 AM
Subject: [firebase-br] Loucura => Mestre/Detalhe & CachedUpdates C/MDO v IB


Bom dia,

 Depois de muitos problemas a tentar por a funcionar um programinha simples
em que uso o FB2.1+MDO c/1 ficheiro Mestre(factura) e outro Detalhe(Linhas 
da
Factura) com CachedUpdates e quando estava quase a desistir reparei que há 
mais
gente, não muita na Net que experimenta/ou as mesmas dificuldades.

Vai daí toca a tentar IBMaster(MastApp.Drp) que vem com o Delphi7 alterando
para o Firebird em especial EdOrders.pas que tem por-de-trás o ficheiro
Mestre=>Orders e o Detalhe=>Items c/CachedUpdates=True e, no
AfterPost_do_Orders Database.ApplyUpdates([Orders,Items etc...])+
Transaction.CommitRetaining. Converti linha a linha para os componentes
da MDO e para meu espanto tb não funciona/ou.
Comecei de novo e... nada.
Isto é, os registo de Detalhe novos não são gravados.
Para meu espanto o mesmo acontece com o original usando os componentes 
nativos
do Interbase, IBDatabase,IBTransaction, IBTable,IBDataSet etc...(reinstalei 
de
novo e tudo como dantes, i.e., continuo sem consiguir escrever novos registo

no
detalhe mas, não dá erro nenhum. Simplesmente não escreve!?

Contrariamente, o exemplo que usa o BDE(TDataBase,TTable,TQuery etc..) 
funciona
na perfeição, i.e. grava novas linhas no detalhe, pode-se desistir e faz bem

o
cancelupdates... tudo conforme esperado!

Espantoso, não é? Logo com o BDE

Já aconteceu o mesmo a mais algum de vóz.

Qualquer ajuda c/ Mestre + Detalhe & CancelUpdates=True é bem vinda.

Obrigado a todos
Mário



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista