FIREBIRD TRIGGERS PARA SOMAR MESES
BOA TARDE
COLEGAS TENHO UMA TABELA NO FIREBIRD QUE AO ADICIONAR OU ALTERAR UMA DETERMINADA DATA QUERO SOMA UMA QUANTIDADE DE MESES
AS
DECLARE VARIABLE MESES CAMPOID;
BEGIN
IF CLASSE=[Ô]1[Ô] THEN [ô]5 ANOS
MESES =60
IF CLASSE=[Ô]2[Ô] THEN [ô]25 ANOS
MESES=300
IF CLASSE=[Ô]3[Ô] THEN [ô]4 ANOS
MESES =48
IF CLASSE=[Ô]4[Ô] THEN [ô]10 ANOS
MESES=120
IF CLASSE= [Ô]5[Ô] THEN [ô]5 ANOS
MESES =60
UPDATE TBLBENS
SET
DTFIM=DTCOMPRA + MESES
END
O PROBLEMA é QUE ESTà SOMANDO COMO SE FOSSEM DIAS, E NA VERDADE SÃO MESES
Obrigado
Assim como no VB, somar inteiros a Datas vai estar somando dias. Vc pode contornar isso multiplicando meses por 30. Vc pode usar tambem a UDF ADDMONTH da lib fbUDF que acompanha o Firebird, caso não tenha declarado ela no seu Bd é só colar isto num sql editor e rodar
[txt-color=#0000f0]declare external function addMonth
timestamp, int
returns timestamp
entry_point [ô]addMonth[ô] module_name [ô]fbudf[ô];[/txt-color]
depois no código do trigger faça algo como:
DTFIM = ADDMONTH (DTCOMPRA ,MESES)
o prmieiro argumento da função é do tipo timestamp, talvez seja necessário usar cast em DTCOMPRA
[txt-color=#0000f0]declare external function addMonth
timestamp, int
returns timestamp
entry_point [ô]addMonth[ô] module_name [ô]fbudf[ô];[/txt-color]
depois no código do trigger faça algo como:
DTFIM = ADDMONTH (DTCOMPRA ,MESES)
o prmieiro argumento da função é do tipo timestamp, talvez seja necessário usar cast em DTCOMPRA
Tópico encerrado , respostas não são mais permitidas