Melhor forma de fazer uma copia dos registros

Delphi

21/08/2009

Pessoal....
Aqui eu tenho um cadastro de Pai que por sua vez tem varias filhos....
Como eu gosto de deixar o sistema mais agil possivel para o usuario. O que eu gostaria era de fazer um botão que ao aperta-lo ele geraria uma copia daquele registro (faria uma incremento na PK) e o resto eu copiaria.

Ja fiz isso de varias maneiras em outro projetos
Ja salvei um xml e carregava em CDS auxiliares, ja fiz um select em CDS auxiliares, e tinha mais um jeito que eu fiz mas não lembro agora.

Mas eu achei todos esses jeito meio trabalho d+

Gostaria de saber se alguem aqui tem uma idéia para melhorar isso.
Obrigado.

* Trabalho com D7 e D2007, DBExpress, MySql e Firebird


Osocram

Osocram

Curtidas 0

Respostas

Rweberich

Rweberich

21/08/2009

Amigo,

A forma funcional seria carregar as informacoes que vc quer copiar atravez de uma [i:ffc4641fb9]TQuery [/i:ffc4641fb9] e carega-las nos respectivos campos (TEdit). Apos issu, no botao ´[b:ffc4641fb9]GRAVAR[/b:ffc4641fb9]´ vc gere um novo codigo pro respectivo cadastro novo. Pode ser mais demorado, mas gera menos problema quando vc for dar um [i:ffc4641fb9]post [/i:ffc4641fb9]na tabela.

Pra gerar esse codigo, o link abaixo pode ajuda-lo:
[i:ffc4641fb9]https://www.devmedia.com.br/articles/viewcomp.asp?comp=13928[/i:ffc4641fb9]

Abraco.


GOSTEI 0
Osocram

Osocram

21/08/2009

Se tiver que ficar jogando isso num TEdit vai ser pior ainda.
Eu uso Geração de chave primaria manual.


Amigo, A forma funcional seria carregar as informacoes que vc quer copiar atravez de uma [i:625e42b8f6]TQuery [/i:625e42b8f6] e carega-las nos respectivos campos (TEdit). Apos issu, no botao ´[b:625e42b8f6]GRAVAR[/b:625e42b8f6]´ vc gere um novo codigo pro respectivo cadastro novo. Pode ser mais demorado, mas gera menos problema quando vc for dar um [i:625e42b8f6]post [/i:625e42b8f6]na tabela. Pra gerar esse codigo, o link abaixo pode ajuda-lo: [i:625e42b8f6]https://www.devmedia.com.br/articles/viewcomp.asp?comp=13928[/i:625e42b8f6] Abraco.



GOSTEI 0
Rweberich

Rweberich

21/08/2009

Se tiver que ficar jogando isso num TEdit vai ser pior ainda.


Sim, de fato!
Quiz dizer [b:0cc3cf6ed1]TDBEdit[/b:0cc3cf6ed1]!


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/08/2009

você precisa visualizar o registro copiado antes de gravá-lo ?


GOSTEI 0
Osocram

Osocram

21/08/2009

Sim... na verdade este recurso estara na propria tela de cadastro do registro...

Vou exemplificar o meu caso p facilitar
Imagine um cadastro de Contrato de Imovel
tabela pai:
- Contrato
Tabelas Filhas:
- Imovel
- Proprietario
- Inquilino
- Garantia
- Eventos

Dae venceu o contrato do inquilino e ja tem outro p alugar o mesmo imovel com as mesmas despesas eu tudo mais...
Então para facilitar a vida do usuario quero fazer um botnão nesta pripria tela no qual vou Fazer uma copia do registro atual.
E o usuário so vai e muda oq precisa e pronto.

você precisa visualizar o registro copiado antes de gravá-lo ?



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/08/2009

essas tabelas filhas são ligadas à tabela pai de que forma?

estou pensando num procedimento para fazer a cópia de todas as tabelas simultaneamente, passando apenas o cds pai, o campo ID da tabela pai e o próximo valor dele. assim servirá para mim também, pois seria uma rotina genérica, funcionando para qualquer tabela.


GOSTEI 0
Osocram

Osocram

21/08/2009

tabela pai:
- Contrato
Id_contrato (PK)
Tabelas Filhas:
- Imovel (este na verdade é uma chave estrangeira q esta na tabela Contrato, não é uma tela filha)

- Proprietario
Id_contrato (PK)
ID_proprietario (PK) (sequencial)
- Inquilino
Id_contrato (PK)
id_inquilino (PK) (sequencial)
- Garantia
Id_contrato (PK)
id_garantia (PK) (sequencial)
- Eventos
Id_contrato (PK)
id_eventos (PK) (sequencial)

E na tela esta ligado como filhas mesmo usando um SqlQuery passando por parametro o id do pai.


essas tabelas filhas são ligadas à tabela pai de que forma? estou pensando num procedimento para fazer a cópia de todas as tabelas simultaneamente, passando apenas o cds pai, o campo ID da tabela pai e o próximo valor dele. assim servirá para mim também, pois seria uma rotina genérica, funcionando para qualquer tabela.



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/08/2009

nested, certo?

ou você preenche os parâmetros manualmente ?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/08/2009

nested, certo?

ou você preenche os parâmetros manualmente ?


GOSTEI 0
Osocram

Osocram

21/08/2009

Nested.

no exemplo:
- Eventos Id_contrato (PK) id_eventos (PK) (sequencial)

o Id_contrato vem do pai, e o Id_evento é gerado na hora (incremental)[/code]


GOSTEI 0
POSTAR