Fórum Gravação com mestredetralhe? #196059

19/11/2003

0

Boa tarde a todos, espero que vcs possam me ajudar, acredito ser simples, só não sei como fazer, bom vamos lá..
uso Dbexpress com Firebird estou fazendo um mestredetralhe, por exemplo:

Tabela 1 (Pedido)
NumPedido (*) (Generator)
CodUsuario
NomeUsuario

Tabela 2(ItensPedido)

NumPedido (*)
CodProduto(*)
Qde

Estou trabalhando em rede, o generator gera automaticamente o meu numero de pedido quando mando gravar, o problema é como vou inserir no meu grid os itens de pedido se ainda não tenho o numero do pedido que faz chave composta com o codproduto??

Quando tento inserir dá erro!!

Espero que alguem possa me ajudar e desde já, muito obrigado.


Jelves@bol.com.br


Jelves

Jelves

Responder

Posts

20/11/2003

Jelves




Responder

Gostei + 0

20/11/2003

Jelves

sobe


Responder

Gostei + 0

21/11/2003

Jelves

Alguém pode me dar uma dica, ou um exemplo, qualquer coisa...

Jelves


Responder

Gostei + 0

21/11/2003

Alexrol

Ola

Bom neste caso acho que vc não deveria usar um generator,pois o generator cria o cidgo quando vc manda grava-lo e não antes.

Mas antes de uma olhada nisso.

http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=58


Responder

Gostei + 0

21/11/2003

Lordglacius

Para que funcione do jeito que vc quer, primeiramente vc deve gravar a ´capa´ do pedido, pegar o valor do seu código para depois começar a inserir os itens.

Uma FK nos itens ajudaria bastante, mas existe uma maneira mais simples de fazer isso:

Trabalhe com uma tabela temporária (ClientDataSet) residente na memória e trabalhe com os itens normalmente. Após terminar o lançamento do pedido, com o método ApplyUpdates do ClientDataSet, serão feitos todos os statements SQL necessários para a atualização do Pedido em si e seus Itens. Procure na internet mais sobre o funcionamento de ClientDataSets como NestedDataSets (conhecido como Mestre-detalhe/Um para muitos)

Caso tenha interesse eu colecionei uma apostila da BDN (borland developer network) baseada em uma série de artigos sobre como otimizar este tipo de tarefa utilizando ClientDataSet´s.

[]´s


Responder

Gostei + 0

21/11/2003

Jelves

Olá Eric, tudo bem?! obrigado pela sua resposta, quanto a apostila eu tenho interesse sim, se vc puder me enviar ficarei muito grato.
Bom se eu gravar a capa, pelo que entendi os dados da tabela pedidos, ai realmente já terei o código para lançar nas tabela de itens, porém cairei no mesmo problema, se derrepente quando o usuário for digitar os itens, ele pega e desiste daquele pedido?!, então perderei o sequencial daquele pedido, e eu gostaria de poder gravar os pedidos em sequencial, no caso de um usuário excluir o pedido, eu gravo em uma tabela de auditoria o nome do usuario, a data e o numero do pedido.
Quanto a tabela temporaria eu não sei como usa-la, eu uso SQLDATASET e ClientDataSet, o meu ClientDataSet é ligado no Datasetprovider, que é ligado no SQLDATASET, com isto ele não deixa eu inserir os itens no meu grid, pois a minha tabela de itens tem uma chave composta de numpedido e codproduto, eu preciso do numero do pedido para isto. Como eu disse sobre a tabela temporária eu não sei usa-la, bem que queria saber como fazer, pois veja bem se eu preencher a minha tabela pedido e minha tabela itens de pedido sem o código do pedido e quando eu antes de mandar gravar no banco ele pegaria e faria uma varredura nas duas tabelas colocando o numpedido na tabela de pedido e numpedido na tabela de itens.

Acho que ficou mais ou menos explicado!
Muito obrigado

Jelves


Responder

Gostei + 0

22/11/2003

Lordglacius

Ola amigo!

Quanto à vc gravar o número sequencial certinho na tabela, não se preocupe.
Como um amigo meu DBA de Oracle diz: ´PK e ID de tabela são coisas pra
ficarem cheias de buracos mesmo. Pelo menos assim eu sei que o banco está
funcionando direito.´ hehehehehe.=)

Nisso eu concordo com ele. Não importa se sua tabela vai ficar cheia de
buracos. O que importa que o próprio banco controle este tipo de tarefa,
dando mais confiança à sua aplicação rodando em rede. Se vc decidir
controlar isso na ´unha´, vai ter mais problemas do que apenas dar
manutenção no banco, pode acreditar.

A apostila já te mandei em PVT.

[]´s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar