Olá pessoal do fórum, estou começando a programar agora e preciso de uma ajuda. Ao cadastrar um produto preciso validar a safra do mesmo, por exemplo: A safra é char x(12) se o produto for 5002 a safra precisa ser XXXXX se o produto for 5009 a safra precisa ser XXXX-XXXX Como consigo fazer essa validação? Obrigado e fiquem na paz.
Paz meu Caro !! Será que seria isto? Código: DEF VAR vCod_Prod AS INT NO-UNDO. DEF VAR vSafra AS CHAR NO-UNDO. DEF TEMP-TABLE tt-Safra NO-UNDO FIELD Safra AS CHAR . CREATE tt-Safra. ASSIGN tt-Safra.Safra = "12345". CREATE tt-Safra. ASSIGN tt-Safra.Safra = "1234-5678". UPDATE vCod_Prod vSafra VALIDATE ( CAN-FIND ( FIRST tt-Safra WHERE tt-Safra.Safra = INPUT vSafra), "ENTRE COM UMA SAFRA VÁLIDA"). Onde vc poderia ter uma Tabela com várias safras, e validar se o usuário digitou uma safra válida?
Ou Seria isto? Veja ai se lhe ajuda. Código: DEF VAR vCod_Prod AS INT NO-UNDO. DEF VAR vSafra AS CHAR FORM "X(20)" NO-UNDO. FORM vCod_Prod vSafra. UPDATE vCod_Prod. IF vCod_Prod = 5002 THEN ASSIGN vSafra:FORMAT = "XXXXX". ELSE IF vCod_Prod = 5009 THEN ASSIGN vSafra:FORMAT = "XXXXX-XXXXX". UPDATE vSafra . MESSAGE vSafra:FORMAT VIEW-AS ALERT-BOX.
Olá irmão, a paz. Obrigado por já ter respondido a minha dúvida. A validação que estou tentando fazer está em um método de gravação e ele está assim: IF (INT({&TABELA-TMP}.IdProduto / 10000) = 5002) AND LENGTH({&TABELA-TMP}.IdSafra) < 4 OR LENGTH({&TABELA-TMP}.IdSafra) > 4 THEN DO: lcErro = "Atenção, safra inválida para esse produto, o formato de ver ser XXXX, por favor verifique. [MetodoCr]". {aborta 060019 lcErro} END. Abusando um pouco da sua bondade, como conseguiria validar a safra de acordo com o produto informado? Valeu e fique na paz.