String Telefone

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
EANDRIOLI
Usuário Nível 3
Usuário Nível 3
Mensagens: 109
Registrado em: 22 Jun 2007 18:31
Localização: Sorriso-MT

String Telefone

Mensagem por EANDRIOLI »

AMIGOS:

Tenho um campo num arq dbf com nome telefone com o conteúdo ALFA:

"(66) 3544-6966"...

existem muitos clientes cadastrados com numeros e caract (, -, e ).

...pergunto:

Como proceder pra eliminar esses caracteres e deixar somente os numeros?
Preciso disso devido a um erro ao ler o arquivo pelo ACBR.

Obrigado!!!
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: STRING TELEFONE

Mensagem por fladimir »

Coloque no seu codigo uma função para retirar o q vc não quer conforme exemplo abaixo:


cTelefone:= TiraSimbolos(DBF->CampoTel)
...

Código: Selecionar todos

*******************************************************************************
Function TiraSimbolos(Arg1)

If Arg1=NIL
	Alert("Sem Argumento pra executar a Funcao passar Funcao(ARGUMENTO)")
	return
Endif
	Arg1 := StrTran(Arg1, ".","")
	Arg1 := StrTran(Arg1, "(","")
	Arg1 := StrTran(Arg1, ")","")
	Arg1 := StrTran(Arg1, ",","")
	Arg1 := StrTran(Arg1, "-","")
	Arg1 := StrTran(Arg1, "/","")
Return Arg1
Vc ainda pode adaptar a função acima a sua necessidade inserindo ou removendo outros caracteres a sua necessidade.

Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: String Telefone

Mensagem por alxsts »

Olá!

Voce pode usar a função CharRem(), que tinha na CT.Lib e agora tem no Harbour também.

Código: Selecionar todos

cString := CharRem( ".-/", cCliFone )
Abaixo segue, como opção adicional, um código genérico para extrair somente dígitos entre zero e nove de uma string.

Código: Selecionar todos

    //------------------------------------------------------------------------------
    Function StrDigits( cString )

       // #Alexandre Santos - 27/01/06 - 12:08
       // Extrai apenas os d¡gitos de uma string formatada, caso existam

       Local cRet := "", n, l, c

       If ! Empty( cString ) .and. ValType( cString ) == "C"
          l := Len( ( cString := AllTrim( cString ) ) )
          For n := 1 To l
             c  := Substr( cString, n, 1 )
             If Asc( c ) >= 48 .and. Asc( c ) <= 57
                cRet += c
             Endif
          Next
       Endif

       Return cRet
    //------------------------------------------------------------------------------
Acho que você deveria ter campos separados para o DDD e Nr. Telefone, contendo apenas dígitos entre 0 e 9.
[]´s
Alexandre Santos (AlxSts)
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: String Telefone

Mensagem por anacatacombs »

Como você está passando a PICTURE do get?
Eu utilizo da seguinte forma: "@R (999)9999-9999"
Dessa forma o cliente não consegue - e não precisa - entrar com nenhum caracter, apesar do tipo do campo ser do tipo CARACTER.
Mas pra isso, você precisaria mudar bastante coisa no seu sistema.. não sei como está sua estrutura, nem se é viável a implementação.
No entando, fica só a título de conhecimento..

[]'s
Ana
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: String Telefone

Mensagem por Maligno »

Um lembrete: há pessoas jurídicas que usam DDGs, que têm 10 dígitos, sem contar o código de área.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: String Telefone

Mensagem por gvc »

Só faltou a colega explicar que com o @R os caracteres especiais não irão para o arquivo.
Nesse caso, irá para o seu arquivo somente um string com os números.
Para mostrar o valor em relatórios ou telas vc pode usar Picture ou Transform.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
EANDRIOLI
Usuário Nível 3
Usuário Nível 3
Mensagens: 109
Registrado em: 22 Jun 2007 18:31
Localização: Sorriso-MT

Re: String Telefone

Mensagem por EANDRIOLI »

OK AMIGOS!!!

Obrigado pelo apoio que voces todos sempre me deram!!!

Ótima resposta e em tempo muito rápido!!!

Saudações

ERASMO
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: String Telefone

Mensagem por Maligno »

alxsts escreveu:Acho que você deveria ter campos separados para o DDD e Nr.
Concordo. Até porque, se quiser no futuro fazer uma pesquisa por CEP para o endereço, nada mais natural que também se tenha o DDD nessa tabela (assim como CMB, código IBGE para NFe, etc). São informações interligadas. Eu faço isso. No que o usuário digita o CEP, todos esses dados já vêm automaticamente. Facilita muito.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: String Telefone

Mensagem por alxsts »

Olá!
Maligno escreveu:Um lembrete: há pessoas jurídicas que usam DDGs, que têm 10 dígitos, sem contar o código de área.
Bem lembrado!
Estive olhando alguns números DDG e vi muitos com 11 dígitos. Neste caso não existe código de área. É um tratamento a mais para ser feito (a máscara).

Outra informação interessante para ser armazenada, é a operadora a que pertence a linha. Isso pode gerar alguma economia se uma chamada ao número for originada de um aparelho da mesma operadora.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: String Telefone

Mensagem por Maligno »

alxsts escreveu:Outra informação interessante para ser armazenada, é a operadora a que pertence a linha.
Seria interessante, mas com a possibilidade de troca de operadora, mantendo o mesmo número, se torna impraticável. Para celulares e fixos.

PS: Nunca vi DDG de 11 dígitos. Tem certeza? Exemplos?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: String Telefone

Mensagem por alxsts »

Olá!

Bem, considero DDG os números cujos prefixos são iguais a 0800.

Numa rápida olhada em alguns papéis, tenho:
- emergência Eletropaulo (companhia de eletricidade daqui de sp-sp): 0800 72 72 196 (www.eletropaulo.com.br)
- Cia. Souza Cruz (cigarros): 0800 7 23 22 21 (máscara impressa no maço, para facilitar a memorização)
- no mesmo maço, (número do Disque Saúde - pare de fumar): 0800 61 1997, com 10 dígitos
- Fone Fácil Bradesco: 0800 570 0022.

Quanto à outra questão, realmente tem o problema que você citou. Mas, a porcentagem de números portados é pequena. A conclusão da implantação da portabilidade numérica completou um ano recentemente em todos os 67 DDD's (durou de Set/08 a Fev/09 ). Lí na imprensa que os números ficaram bem abaixo do esperado.

Bom retorno ao fórum. Espero que tenha se divertido nas férias (se é que foram férias...).
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: String Telefone

Mensagem por Maligno »

Bom, diante dos exemplos, estou convencido. Obrigado. Vou mudar meu domínio do FB para 11 dígitos. Melhor prevenir agora do que remediar depois que muitos já estiverem usando.

PS: Obrigado. Mas não foram férias. Nem sei o que é isso. :(
Aliás, não acabou. Sumirei de novo em um ou dois meses. :|
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: String Telefone

Mensagem por alxsts »

Eu é que agradeço.

Não sendo por motivo de doença, está tudo bem.
(Tá parecendo o Mister M ou David Coperfield que somem e aparecem...). Não demore senão ultrapasso você na quantidade de mensagens postadas...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

String Telefone

Mensagem por Vlademiro »

Alguém sabe como posso fazer para usar a CharRem no harbour ?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

String Telefone

Mensagem por alxsts »

Olá!

Precisa linkar a HbCt.Lib. Você está fazendo isso?

Por falar em números de telefone, a partir de 29-07-2012, os números de telefones celulares de São Paulo-SP e região metropolitana terão um dígito a mais (serão todos precedidos pelo dígito 9).
[]´s
Alexandre Santos (AlxSts)
Responder