Validar se Existe virgula

Discussão em 'Progress 4GL' iniciado por DFResmer, Outubro 18, 2011.

  1. DFResmer

    DFResmer Membro Participativo

    Olá Galera,
    Como valido um campo para saber se ele não tem virgula ou se tem até 3 virgulas?
    Tenho um seguintes textos:

    Rua das araucarias
    Rua das araucárias, 1520
    Ruas das araucárias, 1520, apto 35
    rua das araucárias, 1520, apto 35, 6 andar

    Att,

    Diogo
  2. jonas

    jonas Membro Participativo

    Dependendo do que você precisa, pode validar de formas diferentes:

    Verificar apenas se tem vírgula:
    Código:
    if tabela.campo matches("*,*") then
       /* contém vírgula */
    

    Se quiser pegar o conteúdo de uma string que é separada por vírgulas:
    Código:
    do i-cont = 1 to num-entries(tabela.campo):
        if entry(i-cont,tabela.campo) = "caractere ou valor de varíavel  ou campo de tabela" then do:
             /* se exibir a mensagem em tela para: rua das araucárias, 1520, apto 35, 6 andar */   
             /* para i-cont = 1 o entry será rua das araucárias*/
             /* para i-cont = 2 o entry será 1520 */
             /* para i-cont = 3 o entry será apto 35 */
             /* para i-cont = 4 o entry será 6 andar */
             leave.
        end.
    end.
    
  3. jonas

    jonas Membro Participativo

    Outra forma:

    Código:
    def var c-var  as character no-undo.
    def var i-pos  as integer   no-undo.
    def var i-cont as integer   no-undo.
    
    assign c-var  = 'rua das araucárias, 1520, apto 35, 6 andar'
              i-pos  = 1
              i-cont = 0.
    repeat:
        if substring(c-var,i-pos,1) = ',' then
            assign i-cont = i-cont + 1.
        assign i-pos = i-pos + 1.
        if i-pos >= length(c-var) then
            leave.
    end.
    MESSAGE i-cont
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
  4. LFBuozi

    LFBuozi Membro Participativo

    Assim também fica fácil:
    Código:
    DEF VAR c-var AS CHAR FORMAT "x(20)" INIT "rua das araucárias, 1520, apto 35, 6 andar".
    DEF VAR i AS INT.
    
    MESSAGE "Qt de virgulas = " NUM-ENTRIES(c-var, ",") - 1 SKIP
            "Qt de partes da string separada por virgula = " NUM-ENTRIES(c-var, ",")
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    DO i = 1 TO NUM-ENTRIES(c-var, ","):
        MESSAGE "Conteudo da parte " i SKIP ENTRY(i, c-var, ",")
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
  5. DFResmer

    DFResmer Membro Participativo

    Legal, deu certo!
    Mas me apareceu um outro problema, caso eu queira mudar em uma tabela em formato char as virgulas para ponto, como poderia proceder de uma form rápida, estou fazendo um layout para NFE.
    Ex:
    W02|0,00|0,00|0,00|0,00|73,35|0,00|0,00|0,00||0,00|||0,00|73,35|
    mudar para
    W02|0.00|0.00|0.00|0.00|73.35|0.00|0.00|0.00||0.00|||0.00|73.35|

    Att,

    Diogo
  6. DFResmer

    DFResmer Membro Participativo

    Obrigado galera, o ultimo problema achei no próprio forum que deu certo para minha aplicação:

    REPLACE(REPLACE(valor,",",""),".","").

    Att,

    Diogo

Compartilhe esta Página