Validação de campo

Discussão em 'Progress 4GL' iniciado por Tiago.Rodrigues, Julho 2, 2012.

  1. Tiago.Rodrigues

    Tiago.Rodrigues Sem Pontuação

    Boa tarde Pessoal.

    Tenho uma duvida que é bem simples para muitos.

    eu tenho um campo caracter (campo de tabela), e preciso valida-lo para que o mesmo só aceite numeros.

    como ficaria meu IF?

    Obrigado!
  2. eriutoncharles

    eriutoncharles Membro Participativo

    Boa Tarde,

    Meu caro, Clicando 2x no campo e nas Propriedades dele pondo o formato 99999 não vai aceitar Carácter e também não vai aceitar que seja diferente da quantidade de 9 que você pré-estabeleceu, pra isso se não souber a quantidade exata pode pôr ZZZZ9 por exemplo, daí só vai aceitar números.

    Porém caso queira uma procedure pra verificar se o que foi digitado existe carateres pelo meio, lá vai:

    Você obtem do usuário o caracter e manda checar se está ok, indo na procedure e trazendo uma variável lógica com o resultado.


    Código:
    DEF VAR vTeste AS CHAR.
    DEF VAR vValida AS LOG.
    
    ASSIGN vValida = NO.
    
    UPDATE vTeste.
    
    RUN Descobre_Caracter(INPUT vTeste,
                          OUTPUT vValida).
    
    IF NOT vValida THEN DO:
        MESSAGE "Este Campo é deve ser Preenchido com Números..."
            VIEW-AS ALERT-BOX.
    END.
    ELSE DO:
        /* COntinua o Processo*/
    END.

    Código:
    PROCEDURE Descobre_Caracter.
    
    
    DEF INPUT PARAMETER pTeste AS CHAR.
    DEF OUTPUT PARAMETER vNumero AS LOG.
    DEF VAR i AS INT.
    
    ASSIGN vNumero = YES.
    
    DO i = 1 TO LENGTH(pTeste).
    
      if asc(SUBSTRING(pTeste,i,1)) > 58 THEN ASSIGN vNumero = NO.
    END.
      
      MESSAGE vNumero VIEW-AS ALERT-BOX.
    
    END PROCEDURE.

    Espero que tenha lhe ajudado,
    Eriuton Charles
  3. Tiago.Rodrigues

    Tiago.Rodrigues Sem Pontuação

    eriutoncharles!

    Valeu cara, vai ajudar sim, era essa a ideia mesmo

    Abraço
  4. atila.cm

    atila.cm Membro Participativo

    Oi Tiago.

    Outra manieira bem simples está no exemplo abaixo:

    DEF VAR XX AS CHAR.
    DEF VAR NN AS DEC.
    UPDATE XX .
    ASSIGN NN = INT(XX) NO-ERROR.
    IF ERROR-STATUS:ERROR THEN
    MESSAGE "ERRO"
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

    Agraços.

    Atila

Compartilhe esta Página