Duvida Número dentro de campo char

Discussão em 'Progress 4GL' iniciado por anapples, Junho 9, 2014.

  1. anapples

    anapples Sem Pontuação

    Boa tarde,

    Existe alguma forma de eu ler um número dentro de um campo do tipo char?

    Por exemplo, tenho um campo endereço e dentro dele está assim: Rua Tiradentes, 125.
    Gostaria de ler somente o "125".

    Obrigada
  2. Eilleen

    Eilleen Membro Ativo

    Boa tarde,
    Existe várias formas. Se o campo vai ter sempre esse formato, vc pode usar o comando "ENTRY" pra pegar só o que tem depois da vírgula... Caso contrario vc pode fazer uma procedure como essa abaixo:

    PROCEDURE isolarNumeros:

    DEFINE INPUT PARAMETER pTexto AS CHARACTER NO-UNDO.
    DEFINE OUTPUT PARAMETER pNumero AS INTEGER NO-UNDO. /* pode ser decimal tb se necessário*/

    DEFINE VARIABLE vNumeros AS CHARACTER NO-UNDO INITIAL '0,1,2,3,4,5,6,7,8,9'.
    DEFINE VARIABLE vContador AS INTEGER NO-UNDO.
    DEFINE VARIABLE vCharNumeros AS CHARACTER NO-UNDO.


    DO vContador = 1 TO LENGTH(pTexto):
    IF LOOKUP(SUBSTRING(pTexto,vContador,1), vNumeros, ',') <> 0 THEN
    ASSIGN vCharNumeros = vCharNumeros + SUBSTRING(pTexto,vContador,1).
    END.

    ASSIGN pNumero = INTEGER(vCharNumeros).

    END PROCEDURE.


    Lembrando que essa procedure vai buscar todos os números do texto recebido, então se passar algo como:
    "Rua Tiradentes, 125 - apto 21", a procedure vai retornar o número: 12521, que acredito que não seria o correto.

    Enfim, é só uma dica, adapte à sua necessidade. ;)
  3. anapples

    anapples Sem Pontuação

    Boa tarde Eilleen,

    É isso mesmo que que preciso, muito obrigada!
    Eilleen curtiu isso.

Compartilhe esta Página