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
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
Curtidas 0
Respostas
Edilcimar
25/03/2006
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á
GOSTEI 0
Luciano.sul
25/03/2006
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
Duplicar estas informações...
É isso ai obrigado pela atenção...
Até mais
Luciano Ramos
GOSTEI 0
Edilcimar
25/03/2006
Neste caso, teria que fazer um filtro, para selecionar a referida venda, e depois copiá-la para outro local
GOSTEI 0
Luciano.sul
25/03/2006
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
É isso ai, uma boa semana pra ti...
Luciano Ramos
GOSTEI 0
Pecchiai
25/03/2006
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
espero ter ajudado.
Adilson
GOSTEI 0
Pecchiai
25/03/2006
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
espero ter ajudado.
Adilson
GOSTEI 0
Luciano.sul
25/03/2006
Adilson obrigado pela atenção, vou fazer uns testes para ver como é que fica... :D
Obrigado
Luciano Ramos
Obrigado
Luciano Ramos
GOSTEI 0
Emerson Nascimento
25/03/2006
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.
poste a estrutura das tabelas em questão para a resposta ser o mais próxima possível da sua necessidade.
GOSTEI 0
Luciano.sul
25/03/2006
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
Obrigado
Luciano Ramos
GOSTEI 0
Emerson Nascimento
25/03/2006
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.
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.
GOSTEI 0
Luciano.sul
25/03/2006
emerson.en obrigado pela resposta, vou dar uma testada. Obrigado mesmo pela ajuda...
Até mais...
Luciano Ramos
Até mais...
Luciano Ramos
GOSTEI 0