≡ Menu

ENTENDA O COMANDO IF NEW table – PROGRESS 4GL

img

IF NEW table é um comando da linguagem Progress 4GL/OpenEdge ABL, muito útil para saber se um registro que você esta alterando acabou de ser criado ou se já existia no banco. É normalmente usado em triggers de write.

NA PRATICA

Uma lógica para o comando IF NEW table poderia ter as condições: Se o registro A1 acabou de ser criado, crie um novo registro na tabela B, senão, altere o valor do registro na tabela B para X, então, em Progress 4GL, ficará:

if new tabela do:
/*se o registro acabou de ser criado na [tabela] faça alguma coisa*/
end:
else do:
/*se o registro esta sendo apenas alterado, então faca alguma coisa*/
end.

Lembrando que o comando IF NEW table será “true” quando for um registro novo e “false” quando for uma alteração.

EXEMPLO

Abaixo segue um código de exemplo retirado do help da Progress. Veja que na lógica somente será feita certa condição se o registro posicionado na tabela customer acaba de ser criado, caso contrario executa outra condição de código.

REPEAT:
    PROMPT-FOR customer.cust-num.
    FIND customer USING cust-num NO-ERROR.
    IF NOT AVAILABLE customer
    THEN DO WITH FRAME newcus:
        MESSAGE "Creating new customer".
        CREATE customer.
        ASSIGN cust-num.
        UPDATE name address city st country.
    END.
    CREATE order.
    order.cust-num = customer.cust-num.
    IF NEW customer THEN DO:
        UPDATE order.order-num promise-date.
        order.terms = "COD".
        DISPLAY order.terms.
    END.
    ELSE UPDATE order.order-num promise-date order.terms.
END.

Como pode-se perceber, IF NEW table é muito útil para usar em triggers, as mais comuns são as triggers de write.

NEWSLETTER

Receba por e-mail nossos últimos posts.

{ 0 comments… add one }

Leave a Comment