[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