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;


Alexandre_torres

Alexandre_torres

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


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


Responder

Gostei + 0

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

Aceitar