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
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.
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.
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.
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
Obrigado galera, o ultimo problema achei no próprio forum que deu certo para minha aplicação: REPLACE(REPLACE(valor,",",""),".",""). Att, Diogo