Retirar hifen e pontos do banco de dados

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Retirar hifen e pontos do banco de dados

Mensagem por gilsonpaulo »

Bom dia a todos.

É o sequinte, assumi um sistema onde no cadastro de clientes os campos cpf e cnpf (que são o mesmo campo) não possuem mascara, a digitação é livre, no cpf ou cnpf eram digitados os pontos e hifens, e gravados desta forma no banco de dados, estou querendo retirar esses pontos e hifens do registros ja gravados, para aplicar filtros, só não sei como proceder.

No banco existem registros cadastrados de varias formas, com ou sem hifens e pontos. ex:

032.954.599-55
03295459955
75.138.599/0001-88
75138599000188

Desde já agradeço qualquer ajuda.
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Re: Retirar hifen e pontos do banco de dados

Mensagem por MARCELOG »

...
Use dbf

dbgotop()

for i:=1 to lastrec()

cNovo := strtran(fieldget(numerodocampo),'.') // tira o .
cNovo := strtran(cNovo,'-') // tira o -
cNovo := strtran(cNovo,'/') // tira a /
fieldtput(numerodocampo,cNovo)
dbcommit()

next i

É mais ou menos isso.

MarceloG
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Retirar hifen e pontos do banco de dados

Mensagem por gvc »

Sendo um pouco chato:

Use dbf alias hum

Código: Selecionar todos

dbgotop()
while !eof()
   campo := hum->cpf_cgc // Coloque aqui o campo que contém o CPF/CNPJ
   campo := strtran(campo, '.') // tira o .
   campo := strtran(campo, '-') // tira o -
   campo := strtran(campo, '/') // tira a /
   hum->cpf_cgc := campo // Coloque aqui o campo que contém o CPF/CNPJ
   dbskip()
end

dbcommit()
"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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Retirar hifen e pontos do banco de dados

Mensagem por Maligno »

Sendo mais chato ainda... :)

Código: Selecionar todos

use dbf alias hum
while !eof()
   hum->cpf_cgc := strtran(strtran(strtran(hum->cpf_cgc, '.'),"-"),"/")
   dbskip()
end
dbcommit()
Nem precisaria postar código algum. É só varrer o DBF com uma função que remova os caracteres indesejáveis em CPF, CNPJ, IE e o que mais for. Seja da forma que for, já que este programa será usado uma vez só.
[]'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
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Re: Retirar hifen e pontos do banco de dados

Mensagem por vagucs »

O chato dos chatos

Código: Selecionar todos

use dbf alias hum
dbeval({||hum->cpf_cgc := strtran(strtran(strtran(hum->cpf_cgc, '.'),"-"),"/")})
dbcommit()
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Até tinha pensado no dbEval(), mas normalmente onde há CPF, há CNPJ e IE também. Se fosse embolar tudo num bloco de código ficaria uma "salada" e aumentaria a chance de ocorrer erro. Por precaução acho melhor usar um código mais "convencional". Mas por dbEval() também dá, claro. :)
[]'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
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Retirar hifen e pontos do banco de dados

Mensagem por Pablo César »

Não que eu queira levar o crédito do mais chato de todos... mas gostaria de contribuir com mais uma forma:

Código: Selecionar todos

use dbf alias hum
dbeval({||hum->cpf_cgc := CHARREM(".-/",(hum->cpf_cgc))})
dbcommit()
A função CHARREM() é da CT.LIB.
O fórum tem isso... opiniões diversas que sem dúvida alguma só enriquecemos com isso.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Re: Retirar hifen e pontos do banco de dados

Mensagem por gilsonpaulo »

Valeu turma, usei a dica do sendo mais chato ainda e funcionou.

Obrigado.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Retirar hifen e pontos do banco de dados

Mensagem por gvc »

[Pablo]
O CHARREM eu não conhecia.
Falta de conhecimento.
Mas já verifiquei que o xHarbour tem essa função.
Valeu pela dica.
"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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Retirar hifen e pontos do banco de dados

Mensagem por Toledo »

[Nota de Moderação] Diante de tantos exemplos, este tópico já foi mais do que respondido, como o próprio Gilson já falou em sua mensagem acima. As demais mensagens que estavam neste tópico foram excluídas e enviadas para a seção Bate Papo como desvio de assunto.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Trancado