FIREBIRD TRIGGERS PARA SOMAR MESES

ARNALDOCRUZ 28/07/2010 15:43:47
#348714

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
LLAIA 28/07/2010 22:11:21
#348734
Resposta escolhida
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
Tópico encerrado , respostas não são mais permitidas