Fórum Trigger disparando trigger como faço? #55508
16/03/2006
0
Saldações senhores, vamos desatar este nó...
Seguinte:
Tenho um sistema em Delphi7/Firebird1.5/IBX/IbDataSet/DataSource.
No módulo de vendas a crediário preciso lançar os parcelamentos do crediário no contas a receber, criei esta trigger abaixo cujo objetivo é:
1: no momento do lançamento da divisão dos parcelamentos ir lançando no contas a receber;
2: na estrura da trigger creio que precisaria dispacar outra trigger do contas a receber para gerar o campo auto-incremento mas não estou conseguindo, olhem o código da trigger abaixo da tabela dos parcelamentos e se puderem mostre-me como posso fazer isso.
SET SQL DIALECT 3;
SET NAMES NONE;
SET TERM ^ ;
CREATE TRIGGER VENDA_AP_DET2_LANC_CREC_AI0 FOR VENDA_AP_DET2
ACTIVE AFTER INSERT POSITION 0
AS
begin
/* (contas_rec.cod_crec, */
insert into contas_rec
(contas_rec.cod_crec, /* <= campo chave e auto incremento */
contas_rec.cod_tipo_op,
Contas_rec.operacao,
contas_rec.nr_documento,
contas_rec.cod_auxiliar,
contas_rec.dt_emissao,
contas_rec.dt_vencimento,
contas_rec.parcela,
contas_rec.valor,
contas_rec.historico,
contas_rec.e_do_crediadio)
values (contas_rec_bi, /* <= a trigger do contas a receber que gera o campo auto incremento */
2,
´CREDIÁRIO´,
VENDA_AP_DET2.cod_venda_ap,
VENDA_AP_DET2.cod_venda_ap_det2,
VENDA_AP_DET2.dt_venda,
VENDA_AP_DET2.dt_vencimento,
VENDA_AP_DET2.n_vencimento,
venda_ap_det2.valor_vencimento,
´LANÇAMENTO DE PARCELAMENTO DE VENDA A CREDIÁRIO´,
2);
end
^
SET TERM ; ^
Obs 1: Desta forma acima ela nem compila dá este erro:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
CONTAS_REC_BI
Obs 2: Desta outra forma retiro o campo cod_crec e o valor ele compila e lança os dados mas só aparece no banco e no sistema não aparece os lançamentos.
SET SQL DIALECT 3;
SET NAMES NONE;
SET TERM ^ ;
CREATE TRIGGER VENDA_AP_DET2_LANC_CREC_AI0 FOR VENDA_AP_DET2
ACTIVE AFTER INSERT POSITION 0
AS
begin
insert into contas_rec
(contas_rec.cod_tipo_op,
Contas_rec.operacao,
contas_rec.nr_documento,
contas_rec.cod_auxiliar,
contas_rec.dt_emissao,
contas_rec.dt_vencimento,
contas_rec.parcela,
contas_rec.valor,
contas_rec.historico,
contas_rec.e_do_crediadio)
values (2,
´CREDIÁRIO´,
VENDA_AP_DET2.cod_venda_ap,
VENDA_AP_DET2.cod_venda_ap_det2,
VENDA_AP_DET2.dt_venda,
VENDA_AP_DET2.dt_vencimento,
VENDA_AP_DET2.n_vencimento,
venda_ap_det2.valor_vencimento,
´LANÇAMENTO DE PARCELAMENTO DE VENDA A CREDIÁRIO´,
2);
end
^
SET TERM ; ^
há eu Utilizo o IBExpert para manipulaçao de dados.
sou iniciante no fire e quem puder me ajudar eu agradeço;
Seguinte:
Tenho um sistema em Delphi7/Firebird1.5/IBX/IbDataSet/DataSource.
No módulo de vendas a crediário preciso lançar os parcelamentos do crediário no contas a receber, criei esta trigger abaixo cujo objetivo é:
1: no momento do lançamento da divisão dos parcelamentos ir lançando no contas a receber;
2: na estrura da trigger creio que precisaria dispacar outra trigger do contas a receber para gerar o campo auto-incremento mas não estou conseguindo, olhem o código da trigger abaixo da tabela dos parcelamentos e se puderem mostre-me como posso fazer isso.
SET SQL DIALECT 3;
SET NAMES NONE;
SET TERM ^ ;
CREATE TRIGGER VENDA_AP_DET2_LANC_CREC_AI0 FOR VENDA_AP_DET2
ACTIVE AFTER INSERT POSITION 0
AS
begin
/* (contas_rec.cod_crec, */
insert into contas_rec
(contas_rec.cod_crec, /* <= campo chave e auto incremento */
contas_rec.cod_tipo_op,
Contas_rec.operacao,
contas_rec.nr_documento,
contas_rec.cod_auxiliar,
contas_rec.dt_emissao,
contas_rec.dt_vencimento,
contas_rec.parcela,
contas_rec.valor,
contas_rec.historico,
contas_rec.e_do_crediadio)
values (contas_rec_bi, /* <= a trigger do contas a receber que gera o campo auto incremento */
2,
´CREDIÁRIO´,
VENDA_AP_DET2.cod_venda_ap,
VENDA_AP_DET2.cod_venda_ap_det2,
VENDA_AP_DET2.dt_venda,
VENDA_AP_DET2.dt_vencimento,
VENDA_AP_DET2.n_vencimento,
venda_ap_det2.valor_vencimento,
´LANÇAMENTO DE PARCELAMENTO DE VENDA A CREDIÁRIO´,
2);
end
^
SET TERM ; ^
Obs 1: Desta forma acima ela nem compila dá este erro:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
CONTAS_REC_BI
Obs 2: Desta outra forma retiro o campo cod_crec e o valor ele compila e lança os dados mas só aparece no banco e no sistema não aparece os lançamentos.
SET SQL DIALECT 3;
SET NAMES NONE;
SET TERM ^ ;
CREATE TRIGGER VENDA_AP_DET2_LANC_CREC_AI0 FOR VENDA_AP_DET2
ACTIVE AFTER INSERT POSITION 0
AS
begin
insert into contas_rec
(contas_rec.cod_tipo_op,
Contas_rec.operacao,
contas_rec.nr_documento,
contas_rec.cod_auxiliar,
contas_rec.dt_emissao,
contas_rec.dt_vencimento,
contas_rec.parcela,
contas_rec.valor,
contas_rec.historico,
contas_rec.e_do_crediadio)
values (2,
´CREDIÁRIO´,
VENDA_AP_DET2.cod_venda_ap,
VENDA_AP_DET2.cod_venda_ap_det2,
VENDA_AP_DET2.dt_venda,
VENDA_AP_DET2.dt_vencimento,
VENDA_AP_DET2.n_vencimento,
venda_ap_det2.valor_vencimento,
´LANÇAMENTO DE PARCELAMENTO DE VENDA A CREDIÁRIO´,
2);
end
^
SET TERM ; ^
há eu Utilizo o IBExpert para manipulaçao de dados.
sou iniciante no fire e quem puder me ajudar eu agradeço;
Alexandre_torres
Curtir tópico
+ 0
Responder
Posts
21/03/2006
Ant.carlos/sp
Caro amigo!
Não sei se entendi direito, mas vc criou a Trigger no Contas a Receber
After/Before Insert.
Caso não, precisa, pois ao ser inserido um novo registro no Cta Receber, será disparado a Trigger, ocasiao em q vc tem q gerar o campo chave ou algo semelhante.
Espero ter ajudado, sem +
ANT.CARLOS/SP
Não sei se entendi direito, mas vc criou a Trigger no Contas a Receber
After/Before Insert.
Caso não, precisa, pois ao ser inserido um novo registro no Cta Receber, será disparado a Trigger, ocasiao em q vc tem q gerar o campo chave ou algo semelhante.
Espero ter ajudado, sem +
ANT.CARLOS/SP
Responder
Gostei + 0
21/03/2006
Ant.carlos/sp
CAro amigo!
Só pra completar, se vc está começando agora IB/FB, aconselho a usar DBExpress, pois futuramente vc vai ter problemas c/ os componentes do IBX p/ Interbase.
T+
ANT.CARLOS/SP
Só pra completar, se vc está começando agora IB/FB, aconselho a usar DBExpress, pois futuramente vc vai ter problemas c/ os componentes do IBX p/ Interbase.
T+
ANT.CARLOS/SP
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)