Fórum Aplicação para criar trigger #411521
13/01/2012
0
Olá,
Tenho uma aplicação em delphi 6, utilizo o firebird 2.1. Criei uma trigger com variáveis pelo IBExpert e funciona perfeitamente, porém minha aplicação de atualização do banco não consegue cria-la nos bancos dos clientes, utilizo o componente SQLScript. Gostaria de saber se tem algum outro componente ou que necessito configurar para criar a trigger abaixo de forma dinâmica.
CREATE OR ALTER trigger cria_saldo_inicial_empresa for empresa
active after insert position 0
AS
declare variable cod_produto integer;
declare variable tipo_estoque integer;
declare variable centro_armaz integer;
begin
for select PR.PRODICOD
from PRODUTO PR
into :cod_produto
do begin
for select TE.TPESICOD
from TIPOESTOQUE TE
into :tipo_estoque
do begin
for select CE.CEESICOD
from CENTROESTOQUE CE
into :centro_armaz
do begin
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
end
if (centro_armaz is null) then
begin
centro_armaz = 1;
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
centro_armaz = null;
end
end
if (tipo_estoque is null) then
begin
tipo_estoque = 1;
for select CE.CEESICOD
from CENTROESTOQUE CE
into :centro_armaz
do begin
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
end
if (centro_armaz is null) then
begin
centro_armaz = 1;
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
centro_armaz = null;
end
tipo_estoque = null;
end
end
end
Att.,
Tenho uma aplicação em delphi 6, utilizo o firebird 2.1. Criei uma trigger com variáveis pelo IBExpert e funciona perfeitamente, porém minha aplicação de atualização do banco não consegue cria-la nos bancos dos clientes, utilizo o componente SQLScript. Gostaria de saber se tem algum outro componente ou que necessito configurar para criar a trigger abaixo de forma dinâmica.
CREATE OR ALTER trigger cria_saldo_inicial_empresa for empresa
active after insert position 0
AS
declare variable cod_produto integer;
declare variable tipo_estoque integer;
declare variable centro_armaz integer;
begin
for select PR.PRODICOD
from PRODUTO PR
into :cod_produto
do begin
for select TE.TPESICOD
from TIPOESTOQUE TE
into :tipo_estoque
do begin
for select CE.CEESICOD
from CENTROESTOQUE CE
into :centro_armaz
do begin
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
end
if (centro_armaz is null) then
begin
centro_armaz = 1;
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
centro_armaz = null;
end
end
if (tipo_estoque is null) then
begin
tipo_estoque = 1;
for select CE.CEESICOD
from CENTROESTOQUE CE
into :centro_armaz
do begin
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
end
if (centro_armaz is null) then
begin
centro_armaz = 1;
insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD, PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
values(new.empricod, :cod_produto, :tipo_estoque, :centro_armaz, 0, 0, 0, S, current_timestamp);
centro_armaz = null;
end
tipo_estoque = null;
end
end
end
Att.,
Gustavo Henkel
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)