Help ! Criar trigger

Firebird

17/05/2003

Caros amigos:
Estou convertento um programa em Clipper para Delphi, utilizando como banco de dados
o Interbase. Gostaria de contar com ajuda de vocês para resolver a seguinte duvida:
Tenho uma função que ao dar baixa em um produto, testo antes se ele e um produto unico ou se
de formação (Ex. Pedra = Pedra (Unico), Concreto = Areia + Pedra + Cimento + Agua (Formação)), a partir
dai faço a baixa dos produtos
Gostaria de fazer uma trigger que estaria ligada ao post da aplicação, o problema é, por não dominar ainda o Delphi,
não sei como fazer a referida trigger.



Abaixo a referida função em clipper:

FUNCTION saida
**************
** Formato: saida(´Item´,´deposito´,´quant´,´oper´)
** onde : Item -> Codigo do Produto
** : Deposito -> Codigo do deposito
** : Quant -> Quantidade de saida
** : Oper -> 1 Baixa ou 2 Extorno
PARAMETERS item, deposito, quant, oper
SELECT compi_de -> Tabela onde esta o fator de composicao do produto
SET ORDER TO 1
GO TOP
SEEK &item.
IF FOUND() ->testo se o produto é de formacao
DO WHILE cd_prod = &item. .AND. !EOF()
vcod_prod = cd_iprod
vcomposi = qt_comp
SELECT depos_ap -> Tabela onde o item esta apropriado ao deposito e onde sera efetuado a baixa
SET ORDER TO 1
SEEK &deposito.+vcod_prod
IF RECLOCK(0)
IF &oper. = 1
REPLACE qt_e_atu WITH qt_e_atu - (&quant. * vcomposi)
ELSE
REPLACE qt_e_atu WITH qt_e_atu + (&quant. * vcomposi)
ENDIF
COMMIT
UNLOCK
ENDIF
SELECT compi_de
SKIP
ENDDO
ELSE
SELECT depos_ap
SET ORDER TO 1
SEEK &deposito.+&item.
IF RECLOCK(0)
IF &oper. = 1
REPLACE qt_e_atu WITH qt_e_atu - &quant.
ELSE
REPLACE qt_e_atu WITH qt_e_atu + &quant.
ENDIF
COMMIT
UNLOCK
ENDIF
ENDIF
SELECT SAIDA_AP
RETURN NIL


Zekas

Zekas

Curtidas 0
POSTAR