[firebase-br] Ajuda com trigger

Rodrigo - Winsoft rodrigo em netalfa.com.br
Qua Dez 7 12:12:24 -03 2005


Bom dia galera !!!

Estou com o seguinte problema:

Tenho as seguintes tabelas 

/* ARMAZENAR DADOS DE UMA TRANSFERENCIA */ 
CREATE TABLE TRANSF (
    CTRANSF     D_CODIGO NOT NULL,
    CEMPRESA    D_CODIGO,
    LANCAMENTO  CHAR(1) NOT NULL,
    DATA        D_DATA,
    OBS         D_BLOB_TEXTO,
    CEMP_LOJA   D_CODIGO,
    TIPO        CHAR(1),
    ENVIADO     D_SIMNAO DEFAULT 'N' NOT NULL,
    DATA_INC    D_DATA,
    DATA_ALT    D_DATA,
    LANCADO     D_SIMNAO DEFAULT 'N' NOT NULL /* PODE SER N OU S*/
);


/* ARMAZENAR OS PRODUTOS TRANSFERIDOS */
CREATE TABLE TRANSF2 (
    CTRANSF2    D_CODIGO,
    CTRANSF     D_CODIGO,
    CEMPRESA    D_CODIGO,
    LANCAMENTO  CHAR(1),
    TIPO        CHAR(1),
    CPROD       D_CODPRODUTO,
    QTD         NUMERIC(18,2) DEFAULT 0 NOT NULL,
    VENDIDO     D_SIMNAO DEFAULT 'N' NOT NULL,
    ENVIADO     D_SIMNAO DEFAULT 'N' NOT NULL
);


/* RELAÇÃO DE PRODUTOS POR LOJA TRANSFERIDO */
CREATE TABLE TRANSF_REC (
    CEMPRESA    D_CODIGO,
    LANCAMENTO  CHAR(1) NOT NULL,
    CEMP_LOJA   D_CODIGO,
    TIPO        CHAR(1) NOT NULL,
    CPRODUTO    D_CODPRODUTO,
    QTD         NUMERIC(18,3) DEFAULT 0 NOT NULL
);

PRECISO FAZER O SEGUINTE:
QDO MUDAR O VALOR DO CAMPO LANCADO DE N PARA S TENHO Q VERIFICAR SE O PRODUTO EXISTE NA TABELA 
DE TRANSF_REC. SE NÃO EXISITIR TENHO Q CADASTRAR CASO CONTRÁRIO TENHO Q AUMENTAR A QTD. DOO
PRODUTOS...

A TRIGGER Q TENHO É ESSA, SÓ Q ESTÁ DANDO ERRO E NÃO CONSIGO FAZER UM LOOP DO INICIO AO FIMA
DA TABELA DE TRANSF2

as
begin
  IF (UPDATING) THEN
  BEGIN
     IF ((OLD.LANCADO = 'N') AND (NEW.LANCADO = 'S')) THEN
     BEGIN
          for select CPROD, QTD from TRANSF2 where TRANSF2.CTRANSF = CTRANSF
          order by CPROD
          do
          BEGIN
            UPDATE TRANSF_REC SET QTD = (QTD + TRANSF2.QTD)
            WHERE  TRANSF_REC.CEMPRESA = CEMPRESA
            AND    TRANSF_REC.LANCAMENTO = LANCAMENTO
            AND    TRANSF_REC.CEMP_LOJA = CEMP_LOJA
            AND    TRANSF_REC.TIPO = TIPO
            AND    TRANSF_REC.CPRODUTO = CPRODUTO;
          END
     END
  END
end


SERA Q ALGUEM PODERIA ME AJUDAR??
DESDE JÁ AGRADEÇO...



Obrigado.

Rodrigo Pedroso
Winsoft Informática - (14) 3664-1586
rodrigo em netalfa.com.br


Mais detalhes sobre a lista de discussão lista