Fórum Insert com 3 tabelas #317756

29/03/2006

0

Pessoal, tenho 3 tabelas:
Vendas, Mat_Vendas, Conta_Corrente

Preciso pegar os seguintes campos:

[b:d00ebf400f]Tabela Vendas[/b:d00ebf400f]
id_cliente
data_lancamento
tipo_pagamento

[b:d00ebf400f]Tabela Mat_Vendas[/b:d00ebf400f]
vl_lancamento
id_item

E jogar na tabela [b:d00ebf400f]Conta_Corrente[/b:d00ebf400f]

Qual é a melhor maneira de se fazer isso?
Obs: Queria que após incluir uma venda na tabela mat_vendas ele já pegasse estas informações e fizesse a inserção na tabela conta_corrente!
Como posso fazer isso?
Alguem pode me explicar?
Grato,
Ricieri.


Ricieri

Ricieri

Responder

Posts

29/03/2006

Ricieri

Pessoal, estive pensando, e cheguei em uma conclusão:
to pensando em criar uma procedure e uma trigger after insert...
A procedure eu tava criando, mas não consegui sair disso..
alguem poderia me ajudar:

[b:d6849f8d2c]CREATE PROCEDURE ATUALIZAMOVIMENTO (
idencc INTEGER,
QUANTIDADE INTEGER)
AS
begin
insert into cc (vl_lancamento, data_lancamento, tipo_movimentacao, id_cliente, id_item)
values (:vl_total, :dt_venda, :id_tipo_pagto, :id_cliente, :id_item)
where id_cc = :idencc;
end[/b:d6849f8d2c]

Eu não sei muito o que fazer, por exemplo, eu não sei como passar os parametros e etc..
Alguem me ajuda.
valeu.


Responder

Gostei + 0

30/03/2006

Thomaz_prg

Amigo, não precisa de uma procedure e uma trigger. Apenas uma trigger resolveria seu caso. O Insert, você coloca na trigger para ser disparado após a inserção de um registro.


Responder

Gostei + 0

30/03/2006

Ricieri

Tem como voce dar um exemplo?
Eu nao manjo :(


Responder

Gostei + 0

30/03/2006

Renato.pavan

Tem como voce dar um exemplo? Eu nao manjo :(


Colega,

Passa a DDL das 3 tabelas envolvidas para podermos montar um exermplo pra vc.

[]´s

Renato


Responder

Gostei + 0

30/03/2006

Ricieri

Lá vai:
Obs: Não tenho a DDL aqui, to no trampo, mas montei do jeito que ta no banco:

[b:b9e0343d72]Tabela Vendas:[/b:b9e0343d72] id_venda dt_venda vl_total id_cliente id_tipo_pagamento Foreign key: id_cliente references clientes Foreign key: id_tipo_pagamento references tipo_pagamento


[b:b9e0343d72]Tabela Mat_vendas[/b:b9e0343d72] id_mat_vendas quantidade valor_item id_item id_venda Foreign key: id_item references item Foreign key: id_venda references vendas


[b:b9e0343d72]Tabela CC[/b:b9e0343d72] id_cc id_venda id_mat_vendas id_item id_cliente data_venda tipo_pagamento valor_venda quantidade Foreign key: id_venda references vendas Foreign key: id_mat_vends references mat_vendas Foreign key: id_item references item Foreign key: id_cliente references clientes


O que pretendo fazer é o seguinte:
Como a tabela vendas e mat_vendas, estão relacionadas, a tabela mat_vendas exibe apenas os materiais que são relacionados àquela venda.

[b:b9e0343d72]Então pretendo fazer as seguintes inclusões na tabela de Movimentação:[/b:b9e0343d72] id_venda.vendasid_vendas.cc id_mat_vendas.mat_vendasid_mat_vendas.cc id_item.mat_vendasid_item.cc id_cliente.vendasid_cliente.cc dt_venda.vendasdata_venda.cc id_tipo_pagamento.vendastipo_pagamento.cc valor_venda.mat_vendasvalor_venda.cc quantidade.mat_vendasquantidade.cc



Responder

Gostei + 0

30/03/2006

Ricieri

[size=18:49d469f34b][i:49d469f34b][b:49d469f34b]Acertando, tava mal explicado a ultima parte..[/b:49d469f34b][/i:49d469f34b][/size:49d469f34b]

Lá vai:
Obs: Não tenho a DDL aqui, to no trampo, mas montei do jeito que ta no banco:

[b:49d469f34b]Tabela Vendas:[/b:49d469f34b] id_venda dt_venda vl_total id_cliente id_tipo_pagamento Foreign key: id_cliente references clientes Foreign key: id_tipo_pagamento references tipo_pagamento


[b:49d469f34b]Tabela Mat_vendas[/b:49d469f34b] id_mat_vendas quantidade valor_item id_item id_venda Foreign key: id_item references item Foreign key: id_venda references vendas


[b:49d469f34b]Tabela CC[/b:49d469f34b] id_cc id_venda id_mat_vendas id_item id_cliente data_venda tipo_pagamento valor_venda quantidade Foreign key: id_venda references vendas Foreign key: id_mat_vends references mat_vendas Foreign key: id_item references item Foreign key: id_cliente references clientes


O que pretendo fazer é o seguinte:
Como a tabela vendas e mat_vendas, estão relacionadas, a tabela mat_vendas exibe apenas os materiais que são relacionados àquela venda.

[b:49d469f34b]Então pretendo fazer as seguintes inclusões na tabela de Movimentação:[/b:49d469f34b] id_venda.vendas> id_vendas.cc id_mat_vendas.mat_vendas> id_mat_vendas.cc id_item.mat_vendas> id_item.cc id_cliente.vendas> id_cliente.cc dt_venda.vendas> data_venda.cc id_tipo_pagamento.vendas> tipo_pagamento.cc valor_venda.mat_vendas> valor_venda.cc quantidade.mat_vendas> quantidade.cc



Responder

Gostei + 0

30/03/2006

Emerson Nascimento

tente assim (não estou com o FB instalado na minha máquina, por isso não testei. espero que dê certo):
CREATE TRIGGER MAT_INSERE_CC FOR MAT_VENDAS
ACTIVE AFTER INSERT POSITION 0 
AS 
BEGIN
  insert into CC
    (id_venda, id_mat_vendas, id_item, id_cliente,
     data_venda, tipo_pagamento, valor_venda, quantidade)
  select
    ven.id_venda,
    mat.id_mat_vendas,
    mat.id_item,
    ven.id_cliente,
    ven.dt_venda,
    ven.id_tipo_pagamento,
    mat.valor_item,
    mat.quantidade
  from
    vendas ven
  inner join
    mat_vendas mat on (mat.id_venda = ven.id_venda)
  where
    mat.id_venda = new.id_venda
    and mat.id_mat_vendas = new.id_mat_vendas
END

nessa trigger eu não estou preenchendo o ID_CC da tabela conta corrente pois creio que isso já seja feito por uma dupla trigger/generator.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar