| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
guilhermeurutun Novato

Registrado: Quinta-Feira, 3 de Novembro de 2011 Mensagens: 18
|
Enviada: Qui Abr 25, 2013 12:11 pm Assunto: Mestre Detalhe com Auto Incremento |
|
|
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 |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Qui Abr 25, 2013 8:13 pm Assunto: |
|
|
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 |
|
 |
guilhermeurutun Novato

Registrado: Quinta-Feira, 3 de Novembro de 2011 Mensagens: 18
|
Enviada: Sex Abr 26, 2013 7:37 am Assunto: |
|
|
| 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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Abr 26, 2013 11:12 am Assunto: |
|
|
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 |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sex Abr 26, 2013 10:30 pm Assunto: |
|
|
| 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 |
|
 |
|