ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Mestre Detalhe com Auto Incremento

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
guilhermeurutun
Novato
Novato


Registrado: Quinta-Feira, 3 de Novembro de 2011
Mensagens: 18

MensagemEnviada: Qui Abr 25, 2013 12:11 pm    Assunto: Mestre Detalhe com Auto Incremento Responder com Citação

Pessoal,

Preciso da ajuda de vocês.

Estou desenvolvendo uma aplicação utilizando banco de dados SQL Server com opção AutoInc para geração das chaves automaticamente pelo banco tendo as seguintes tabelas relacionadas.

Orçamento - idOrcamento PK
Itens - idOrcamento FK

Hoje é necessário gravar primeiramente a tabela Master Orçamento para receber a chave gerada e somente após isso atualizo a Chave na tabela Detalhe Itens para gravá-la.

Existe alguma forma de não tem que ficar atualizando no braço o ID para a tabela Detalhe? De forma automaticamente, Estou tentando utilizar o NestedDataset para isto, configurei tudo no servidor e cliente, mas ao gravar a tabela Master ‘Orcamento’ os dados não são gravados na tabela Detalhe, somente na Master.
O que pode estar ocorrendo?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Qui Abr 25, 2013 8:13 pm    Assunto: Responder com Citação

Boa noite, Guilherme.
Você está utilizando tabela temporária pra manter os itens em memória antes do registro master ser gravado?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
guilhermeurutun
Novato
Novato


Registrado: Quinta-Feira, 3 de Novembro de 2011
Mensagens: 18

MensagemEnviada: Sex Abr 26, 2013 7:37 am    Assunto: Responder com Citação

Batera escreveu:
Boa noite, Guilherme.
Você está utilizando tabela temporária pra manter os itens em memória antes do registro master ser gravado?


Estou mantendo utilizando o cdsItens.post para deixar os registros na memória, passando idOrcamento = 0. Após gravar a tabela Master e receber o ID, varro a tabela Detalhe atualizando os IDs antes de realizar o ApplyUpdate.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Abr 26, 2013 11:12 am    Assunto: Responder com Citação

Bom dia,

O campo ID da tabela Detalhe deve ser preenchido manualmente via código no momento em que o registro é inserido no ClientDataSet.

Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-em-guarulhos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Sex Abr 26, 2013 10:30 pm    Assunto: Responder com Citação

Citação:
Estou mantendo utilizando o cdsItens.post para deixar os registros na memória, passando idOrcamento = 0. Após gravar a tabela Master e receber o ID, varro a tabela Detalhe atualizando os IDs antes de realizar o ApplyUpdate.

Bom guilherme, eu faria diferente. Eu criaria uma tabela virtual (utilizando ClientDataSet) para popular os itens. Quando o usuário clicasse em "Gravar" é que de fato o registro master e os details seriam gravados no banco de dados, tudo em um mesmo método.
Quando tiver um tempo, dê uma olhada nesse artigo:

http://www.subrotina.com.br/delphi-tabela-temporaria-com-clientdataset-pratica/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB