Transformar campo

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

Transformar campo

Mensagem por matrix »

Pessoal tenho o campo assim gravado (999)999-9999, estou me perdendo na eliminação dos parenteses e do ífem, tem que ficar 9999999999.

Agradeço
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Substituir/eliminar caracteres...

Mensagem por gransoft »

ARAGUARI-MG, 26 de julho de 2004.

Prezado matrix,

Sugestão:

Código: Selecionar todos

*** FUNCTION PARA SUBSTITUIR/ELIMINAR CARACTERES ***
FUNCTION Troca(cVar)
cVar := ALLTRIM(UPPER(cVar))
cC   := " -/.()" && 6
FOR nI := 1 TO LEN(cC)
   nTam := LEN(ALLTRIM(cVar))
   FOR nJ := 1 TO nTam
      nAchou := AT(SUBSTR(cC,nI,1),cVar)
      IF (nAchou > 0)
         cVar := STUFF(cVar,nAchou,1,"")
      END
   NEXT
NEXT
RETURN(cVar)
***
Atenciosamente,
Janis Peters Grants.

http://www.gransoft.com.br
gransoft@zipmail.com.br
tonyx
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Jul 2004 15:26

se interesar

Mensagem por tonyx »

FUNCTION DEL_PONTO(ARQ1,TAMANHO)
PRIVATE TAM_ARQ,TEM_PONTO,I,POS
ARQ1:= ALLTRIM(ARQ1)
TAM_ARQ:= LEN(ARQ1)
TEM_PONTO:= .T.
DO WHILE TEM_PONTO
TEM_PONTO:= .F.
FOR I:= 1 TO TAM_ARQ
IF ! (SUBSTR(ARQ1,I,1) $ ('0123456789'))
POS:= I
TEM_PONTO:= .T.
I:= TAM_ARQ + 100
ENDIF
NEXT
IF TEM_PONTO
TAM_REST = (TAM_ARQ-(POS+1))+1
ARQ1 = SUBSTR(ARQ1,1,POS-1)+SUBSTR(ARQ1,POS+1,TAM_REST)
TAM_ARQ = LEN(ARQ1)
ENDIF
ENDDO
ARQ1 = STRZERO(VAL(ARQ1),TAMANHO)
RETURN(ARQ1)
*---------------------
FUNCTION DEL_PONTO2(ARQ1,TAMANHO)
LOCAL TAM_ARQ,TEM_PONTO,POS,TAM,I,PARTE_1,PARTE_2
ARQ1:= LTRIM(RTRIM(ARQ1))
TAM_ARQ:= LEN(ARQ1)
TEM_PONTO:= .T.
DO WHILE TEM_PONTO
TEM_PONTO:= .F.
FOR I:= 1 TO TAM_ARQ
IF ! (SUBSTR(ARQ1,I,1) $ (' 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'))
POS:= I
TEM_PONTO:= .T.
I:= TAM_ARQ + 100
ENDIF
NEXT
IF TEM_PONTO
TAM_REST = (TAM_ARQ - (POS + 1) ) + 1
ARQ1 = SUBSTR(ARQ1,1,POS - 1)+' '+ALLTRIM(SUBSTR(ARQ1,POS + 1,TAM_REST))
TAM_ARQ = LEN(ARQ1)
ENDIF
ENDDO
TAM:= LEN(RTRIM(LTRIM(ARQ1)))
IF TAM < TAMANHO
ARQ1 = RTRIM(LTRIM(ARQ1))+SPACE(TAMANHO - TAM)
ENDIF
RETURN(ARQ1)
*---------------------
FUNCTION DEL_PONTO3(ARQ1,TAMANHO)
PRIVATE TAM_ARQ,TEM_PONTO,I,POS
ARQ1:= ALLTRIM(ARQ1)
TAM_ARQ:= LEN(ARQ1)
TEM_PONTO:= .T.
DO WHILE TEM_PONTO
TEM_PONTO:= .F.
FOR I:= 1 TO TAM_ARQ
IF ! (SUBSTR(ARQ1,I,1) $ ('0123456789'))
POS:= I
TEM_PONTO:= .T.
I:= TAM_ARQ + 100
ENDIF
NEXT
IF TEM_PONTO
TAM_REST = (TAM_ARQ-(POS+1))+1
ARQ1 = SUBSTR(ARQ1,1,POS-1)+SUBSTR(ARQ1,POS+1,TAM_REST)
TAM_ARQ = LEN(ARQ1)
ENDIF
ENDDO
RETURN(ARQ1)
*-----------------------
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »


Somente pra conhecimento de todos...
Tem uma função na catools q faz isso... chama charrem() ...

Código: Selecionar todos

 cVar := "(999)9999-9999"
 // 1º parametro sequencia de strings q vc qr rancar fora...
 // 2º parametro string a ser limpa...rs..
 cVar := charrem("()-",cVar)
 
[/size]
[/color]


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Responder