25/03/2006

Duplicar registros

Bom dia a todos, eu já li varios topicos sobre duplicar dados, mas nenhum me ajudou muito no que eu quero. O negócio é seguinte, eu estou precisando duplicar um registro(mestre) e seus detalhes e seus sub-detalhes, só mudando o codigo ID, Exemplo eu tenho um registro de venda e ele tem os seus itens e cada item tem os seus sub-itens, gostaria de duplicar tudo.

Se alguem puder me passar uma idei de como fazer eu agradesco muito...
Eu trabalho com Delphi 7, DbExpress e FireBird.

É isso ai um bom fim de semana para todos...

Desde já muito obrigado.
Luciano Ramos


Luciano.sul

Respostas

25/03/2006

Edilcimar

ou vc faz uma replicação do banco de dados via um replciator ou faz uma função que duplique o bd em 2 arquivos diferentes, que no mesmo ou em outro computador, procure por replicação aqui no fórum e achará


Responder Citar

25/03/2006

Luciano.sul

Edilcimar desculpa, mas eu acho que não me expressei corretamente, eu quero é que em determinado momento o meu cliente possa simplesmente fazer uma venda igual à outra venda que ele já tenha feito...Exemplo ele seleciona uma venda de dois dias atras e clica em um botão e o sistema gera uma nova nota com os mesmos dados da nota que ele selecionou...

Duplicar estas informações...

É isso ai obrigado pela atenção...

Até mais

Luciano Ramos


Responder Citar

27/03/2006

Edilcimar

Neste caso, teria que fazer um filtro, para selecionar a referida venda, e depois copiá-la para outro local


Responder Citar

27/03/2006

Luciano.sul

Edilcimar novamente muito obrigado pela atenção data a minha pergunta. Eu não quero as coisas mastigadas, mas não ajudou muito a tua resposta. Tu pode detalhar um pouco mais....

É isso ai, uma boa semana pra ti...

Luciano Ramos


Responder Citar

27/03/2006

Pecchiai

Bom Luciano, eu criaria uma query auxiliar para não mexer no registro que o usuario esta apontando, e faria um select da venda usando a query auxiliar, depois pego o resultado do select e insiro um novo registro com os campos do registro anterior, e faria o mesmo com os itens e sub-itens.

espero ter ajudado.
Adilson


Responder Citar

27/03/2006

Pecchiai

Bom Luciano, eu criaria uma query auxiliar para não mexer no registro que o usuario esta apontando, e faria um select da venda usando a query auxiliar, depois pego o resultado do select e insiro um novo registro com os campos do registro anterior, e faria o mesmo com os itens e sub-itens.

espero ter ajudado.
Adilson


Responder Citar

27/03/2006

Luciano.sul

Adilson obrigado pela atenção, vou fazer uns testes para ver como é que fica... :D

Obrigado
Luciano Ramos


Responder Citar

27/03/2006

Emerson

tenho uma idéia a repeito - que é bem simples por sinal.
poste a estrutura das tabelas em questão para a resposta ser o mais próxima possível da sua necessidade.


Responder Citar

27/03/2006

Luciano.sul

emerson.en obrigado pela atenção mas acredito que a estrutura da tabela não ira dizer nada. Eu so quero ideias de como duplicar um registro e seus detalhes.

Obrigado
Luciano Ramos


Responder Citar

28/03/2006

Emerson

bom, aí vai a minha idéia:

supondo que vc tenha algum campo que possa ser manipulado livremente, faça o seguinte:

novonumero := gettickcount; // integer
cadastro := now; // datetime

´insert into pedidovenda (numero*, cadastro, emissao, cliente, etc...) ´+
´select :novonumero, :cadastro, emissao, cliente, etc ´+
´from perdidovenda where id = :id_pedidodesejado ´
passo como parâmetro o id do pedido que eu quero copiar, o ´novo´ número do pedido e a data de cadastro, que estão nas variáveis.

pronto. criei o cabeçalho do novo pedido com as mesmas informações do pedido origem, exceto nos campos ´numero´, ´ID´ e ´cadastro´. o valor do campo ´numero´ e do campo ´cadastro´ serão usados para procurar o novo ID.

´select ID from pedidovenda where numero = :novonumero and cadastro = :cadastro´
e passo como parâmetro as variáveis usadas anteriormente.
novoID := FieldByName(´ID´).asInteger;
(pedi a estrutura da sua tabela para melhor formar esses campos de ´filtragem´)

agora, de posse do novo ID, vamos inserir os itens:
´insert into pedidoitem (ID_Pedido, ID_Produto, Vlr_Unit, Qtd, etc) ´+
´select :NovoID, ID_Produto, Vlr_Unit, Qtd, etc ´+
´from pedidoitem where ID_Pedido = :id_pedidodesejado ´
basta passar os parâmetros corretos e pronto.

isso também poderia ser feito numa stored procedure.


*numero seria um campo ´livre´ e nesse caso eu estou supondo que seja do tipo numérico.


Responder Citar

28/03/2006

Luciano.sul

emerson.en obrigado pela resposta, vou dar uma testada. Obrigado mesmo pela ajuda...

Até mais...

Luciano Ramos


Responder Citar