Código do TRIGGER
Boa tarde,
Após muitas tentativas, consegui criar o meu 1º TRIGGER (AutoIncremental), mais não sei como utilizar no código fonte do programa.
Segue meu código:
CRIAÇÃO DO TRIGGER:
SET TERM !! ;
CREATE TRIGGER ´NOVO_REG_CONTAS´ FOR ´CONTAS_A_PAGAR´
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable NovoNum integer;
begin
if (NovoNum is null) then NovoNum = 0;
Select Max(REGISTRO)+1 From CONTAS_A_PAGAR Into :NovoNum;
new.REGISTRO = :NovoNum;
end !!
SET TERM ;!!
SALVANDO APLICAÇÃO:
// Componente TIBDaset >> dm.CContas
dm.CContas.Post;
dm.CContas.ApplyUpdates;
dm.ibTransa.CommitRetaining;
insert into CONTAS_A_PAGAR
(REGISTRO,VENCIMENTO,DIA,NUM_DOCUMENTO,DESCRICAO,VALOR,FAVORECIDO,
OBS,N_CONTA_C,DOCUMENTO,RESPONSAVEL,PARCELA,
VALORPAGO,DATAPAGO,SALDO,STATUS)
values
(:REGISTRO,:VENCIMENTO,:DIA,:NUM_DOCUMENTO,:DESCRICAO,:VALOR,:FAVORECIDO,
:OBS,:N_CONTA_C,:DOCUMENTO,:RESPONSAVEL,:PARCELA,
:VALORPAGO,:DATAPAGO,:SALDO,:STATUS)
Alguém pode me ajudar em mais esta estapa ?
Após muitas tentativas, consegui criar o meu 1º TRIGGER (AutoIncremental), mais não sei como utilizar no código fonte do programa.
Segue meu código:
CRIAÇÃO DO TRIGGER:
SET TERM !! ;
CREATE TRIGGER ´NOVO_REG_CONTAS´ FOR ´CONTAS_A_PAGAR´
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable NovoNum integer;
begin
if (NovoNum is null) then NovoNum = 0;
Select Max(REGISTRO)+1 From CONTAS_A_PAGAR Into :NovoNum;
new.REGISTRO = :NovoNum;
end !!
SET TERM ;!!
SALVANDO APLICAÇÃO:
// Componente TIBDaset >> dm.CContas
dm.CContas.Post;
dm.CContas.ApplyUpdates;
dm.ibTransa.CommitRetaining;
insert into CONTAS_A_PAGAR
(REGISTRO,VENCIMENTO,DIA,NUM_DOCUMENTO,DESCRICAO,VALOR,FAVORECIDO,
OBS,N_CONTA_C,DOCUMENTO,RESPONSAVEL,PARCELA,
VALORPAGO,DATAPAGO,SALDO,STATUS)
values
(:REGISTRO,:VENCIMENTO,:DIA,:NUM_DOCUMENTO,:DESCRICAO,:VALOR,:FAVORECIDO,
:OBS,:N_CONTA_C,:DOCUMENTO,:RESPONSAVEL,:PARCELA,
:VALORPAGO,:DATAPAGO,:SALDO,:STATUS)
Alguém pode me ajudar em mais esta estapa ?
Vivendo Aprendendo
Curtidas 0
Respostas
Gandalf.nho
25/05/2005
Primeiro eu sugiro uma alteração na trigger, através do uso de generators (o que é o mais recomendado). Primeiro crie o generator:
Agora a trigger modificada:
Como vc está usando IBDataSet diretamente, é só deixar os TFields como Required = False e deixar a trigger cuidar do resto.
CREATE GENERATOR GEN_CONTAS_A_PAGAR;
Agora a trigger modificada:
SET TERM !! ; CREATE TRIGGER "NOVO_REG_CONTAS" FOR "CONTAS_A_PAGAR" ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.REGISTRO is null) then new.REGISTRO = GEN_ID(GEN_CONTAS_A_PAGAR, 1); end !! SET TERM ;!!
Como vc está usando IBDataSet diretamente, é só deixar os TFields como Required = False e deixar a trigger cuidar do resto.
GOSTEI 0