Página 1 de 2
String Telefone
Enviado: 22 Mar 2010 09:45
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!!!
Re: STRING TELEFONE
Enviado: 22 Mar 2010 10:03
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!!!
Re: String Telefone
Enviado: 22 Mar 2010 11:03
por alxsts
Olá!
Voce pode usar a função CharRem(), que tinha na CT.Lib e agora tem no Harbour também.
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.
Re: String Telefone
Enviado: 22 Mar 2010 13:00
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
Re: String Telefone
Enviado: 22 Mar 2010 14:01
por Maligno
Um lembrete: há pessoas jurídicas que usam DDGs, que têm 10 dígitos, sem contar o código de área.
Re: String Telefone
Enviado: 22 Mar 2010 14:06
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.
Re: String Telefone
Enviado: 22 Mar 2010 15:14
por EANDRIOLI
OK AMIGOS!!!
Obrigado pelo apoio que voces todos sempre me deram!!!
Ótima resposta e em tempo muito rápido!!!
Saudações
ERASMO
Re: String Telefone
Enviado: 22 Mar 2010 19:43
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.
Re: String Telefone
Enviado: 22 Mar 2010 20:28
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.
Re: String Telefone
Enviado: 22 Mar 2010 20:47
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?
Re: String Telefone
Enviado: 22 Mar 2010 21:40
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...).
Re: String Telefone
Enviado: 22 Mar 2010 21:47
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. :|
Re: String Telefone
Enviado: 22 Mar 2010 21:54
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...
String Telefone
Enviado: 11 Jul 2012 00:27
por Vlademiro
Alguém sabe como posso fazer para usar a CharRem no harbour ?
String Telefone
Enviado: 11 Jul 2012 00:53
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).