[firebase-br] RES: Gravação Mestre Detalhe

Jose Aparecido da Silva joseasilva em bol.com.br
Ter Out 20 20:28:10 -03 2009


* Uso IBX e FB 2.1

Porque não criar um campo que somente faz referencia e serve somente para
ligação das tabelas e serve para uma primary key por exemplo.

PEDIDOS

ID - integer - Primary Key - definido através de um generator
NRPEDIDO - Número seqüencial - Unique Constraint para garantir que somente
haverá um Numero de pedido. Sete o Numero do pedido somente no momento de
realmente gravar o pedido.

ITENS do PEDIDO

ID - integer - primary key
IDPEDIDO - integer - ID do pedido

Note que dessa maneira se você tiver que abortar um cadastro de pedido não
terá problema algum porque o ID só serve mesmo para ligação das tabelas

Minha rotina de inserção é assim:
1. Inicio o Pedido
2. Defino imediatamente a ID através de uma função que traz o próximo valor
do Generator definido para primary key da Tabela Pedidos.
3. Inicio a Tabela de Itens já fazendo referencia ao Pedido atual através do
ID do pedido.
4. No momento de Inserir um novo item defino que o IDPEDIDO = ID da tabela
pedido.

Tenho feito assim e tenho sido feliz.

[ ]'
Jose Aparecido da Silva


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Daniel - SEC
Enviada em: terça-feira, 20 de outubro de 2009 17:08
Para: FireBase
Assunto: Re: [firebase-br] Gravação Mestre Detalhe

Eu faço o seguinte: Antes de gerar o pedido eu consulto se existe um pedido 
gerado por aquele usuário sem nenhum ítem(Se não existir eu gero o pedido e 
consulto qual o maior pedido feito por aquele usuário). Se existir ele 
utiliza aquele pedido para gerar os itens. Dessa forma terá no máximo um 
pedido perdido no sistema por usuário. .

Isso não funciona naquelas empresas que usam um usuário só em várias 
máquinas...

#----------------------------------------------------#
 | Daniel Reis Duarte - Analista de sistemas                |
 |Sindicato dos Empregados do Comercio-BHeRM   |
 | formado em Ciencias da computacao em set/99      |
 | Universidade Federal de Minas Gerais                    |
 #---------------------------------------------------#
  "Deve haver alguma coisa que ainda te emocione!"


----- Original Message ----- 
From: "joao_jma" <joao_jma em itelefonica.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, October 20, 2009 3:43 PM
Subject: Re: [firebase-br] Gravação Mestre Detalhe


Legal, mas no caso de haver o cancelamento do pedido no meio de sua
digitação, como fica se vc já acrescentou o codigo ?

----- Original Message ----- 
From: "Zottis IG" <bzottis em ig.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, October 20, 2009 1:32 PM
Subject: Re: [firebase-br] Gravação Mestre Detalhe


Eu gero o numero do pedido Antes de inserir o primeiro item, depois é no
onnewrecord do Delphi
ou se for em storeprocedure,
pega o valor do generator, acrescenta 1 cadastra.

Arte&Cor Estamparia - Zottis

"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: "joao_jma" <joao_jma em itelefonica.com.br>
To: "Lista FireBase" <lista em firebase.com.br>
Sent: Tuesday, October 20, 2009 2:19 PM
Subject: [firebase-br] Gravação Mestre Detalhe


Pessoal, gostaria de uma opinião de vocês...

Quando utilizam tabela mestre / detalhe, como gravam a referência na tabela
detalhe se o sistema é utilizado em rede?

Detalhando:

    Imaginem uma tabela de pedidos e uma tabela de itens do pedido:

    PEDIDO(NUMERO, DATA, CLIENTE...)

    ITENS_PED(NR_PEDIDO, CODPROD, VLUNIT, QTDE...)

    Como gravam na tabela ITENS_PED o campo NR_PEDIDO ???

----------------------------------------------------------------------------
--------------------------------------

Estou com problemas com isso quando é feito a gravação em rede
simultaneamente.

Antecipo meus agradecimentos

[]'s

João
______________________________________________
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


______________________________________________
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