Eliminar ou bloquear caracteres especiais do campo NOME

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

jsnascimento
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 08 Jul 2004 20:05

Eliminar ou bloquear caracteres especiais do campo NOME

Mensagem por jsnascimento »

CAROS CLIPPEIROS DE PLANTÃO,

BOA NOITE!!!


:wink:


Alguém possue uma rotina pronta que substituir caracteres especiais por seus correspondentes em um campo de uma arquivo "DBF"?

Exemplo: Trocar o Ç por C

Trocar o à por A

Trocar o Á por A

Trocar o É por E

Trocar dois espaço ou mais por um espaço apenas entre o nome e sobrenome.

Eu estou querendo padronizar as informações um Arquivo de dados com cadastro de pacientes, porém os nomes dos pacientes foram digitados com todo tipo de caracteres especiais.

Bom! Sei que melhor seria construir uma função para impedir a entrada destes caracteres especiais....

Por favor, se alguém tem uma dica, meu e-mail é: jsnascimento@yahoo.com.br

Obrigado.

Jamil
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Colega

Acabei de fazer exatamente isso com o cadastro de CFOP daqui do estado que estava disponivel na internet, baixei o arquivo texto e vi que estava tudo acentuado, pensei em fazer uma função para fazer este tratamento, mas pensei melhor e vi que seria mais rápido fazer uma substituição pelo WORDPAD, abri o arquivo e fiz a substituição das sequencias, troquei "ç" por "c", "ã" por "a", "é" por "e", etc... depois fiz uma rotinazinha e tranformei tudo para maísculas e fiz um append para o banco de dados, foi super rápido, agora é só colocar no programa a funçao que bloqueia a entrada desse tipo de caractere e pronto...

Claro que tem como fazer vi programa, mas se tiver pressa pode fazer desta forma que funciona beleza...

Se precisar da função que bloqueia entrada de caracteres acentuados e extranhos é só pedir...

Até logo.

Marcelo
jsnascimento
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 08 Jul 2004 20:05

Função Bloqueadora de entrada de caracteres especiais.

Mensagem por jsnascimento »

Caro Marcelo!!

Obrigado pela resposta. Gostei da sua sugestão. :razz:

Por favor, se vc tem alguma função para bloquear a entrada de caracteres especiais em tempo de execução do programa; ou seja, no momento da digitação do usuário, e pode me disponibiliza-la, queira por favor envia-la para o e-mail: jsnascimento@yahoo.com.br.

Atenciosamente,


Jamil
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Lá vai um código que funciona beleza...

Já sei que vão meter o pau, mas que funciona, funciona...

Código: Selecionar todos

cls
nome=space(40)
@ 02,02 say "Digite um nome -> " get nome valid vernome(nome)
read
return

*-----------------------*
 function vernome(nnome)
*-----------------------*
// se quiser bloquear s¢ acentos e cedilha
nnome=alltrim(nnome)

for i=1 to len(nnome)
    if substr(nnome,i,1)$"Çåµ
jsnascimento
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 08 Jul 2004 20:05

Função para Bloquear entrada de caracteres especiais

Mensagem por jsnascimento »

Cara! Brincadeira!!

Depois daquela do COMMAND.COM, e agora mais esta da função bloqueadora dos caracteres especiais, tô vendo que vc é o "CARA!!!"""

Alguém bem próximo dos antigos "Lustradores de Bits"!!!

Valeu! Valeu! e Valeu!!!! ;)


Jamil
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Nem tanto...

Tem caras bem melhores que eu aqui...

Faço isso porque gosto de ficar criando soluções...

Tem maneira até mais automática de fazer esta mesma função, mas eu gosto de fazer mais simplificada pro pessoal menos experiente...e como você viu, funciona perfeitamente...

Até logo.

Marcelo
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

Gente... existe um programinha (DOS) muito antigo... do tempo do COBOL 1.0 chamado PROKEY.COM que interagia com uma arquivo TXT da vida que reconfigurava o teclado. Ele ficava residente em memória atuando diretamente no teclado não importando qual programa estivesse sendo utilizado, a última palavra era sempre a dele. O PROKEY era muito usado para evitar que os digitadores cometessem erros na digitação. Era possível alterar todas as teclas... Dá prá deixar o teclado "doidão"... cansei de fazer isso com os iniciantes... he he he
Esse TXT era tipo assim...

asc(135)=asc(99) -> ç=c
asc(132)=asc(97) -> ã=a

E assim ia com todas as alterações que vc quisesse...

Vou procurar ele aqui nos meus "guardados" entre teias de aranha e se localizá-lo, vou disponibilizar aos companheiros do Fórum... Ok ??
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Valeu Augusto !!!

Mas nem vai precisar, fiz uma funçao em Clipper mesmo que faz a mesma coisa...peguem ela no link abaixo...

http://www.mmendeso.hpg.com.br/digita.prg

segue abaixo o código para quem não quiser baixar, só olhar...

Código: Selecionar todos

cls
nome=space(40)
@ 02,02 say "Digite um nome -> " get nome valid vernome(nome)
read
return

*-----------------------*
 function vernome(nnome)
*-----------------------*
// se quiser bloquear s¢ acentos e cedilha
nnome=alltrim(nnome)
letras_ok ="AOAEIOUAAOECaoaeiouaaoec"
letras_bad="Çåµ
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Jamil

Essa função serve inclusive para fazer aquela substituição que você queria...

Já sei que você vai perguntar "e a para tirar espaços duplos ?", ah ! essa depois eu faço...vou dar uma trabalhada agora...mas se algum colega quiser dar uma mãozinha a comunidade agradece... :lol:

Até logo.

Marcelo
jsnascimento
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 08 Jul 2004 20:05

"Eliminar ou bloquear caracteres especiais do campo NOM

Mensagem por jsnascimento »

** Exemplo da utilização da sugestão do Marcelo com alguns acréscimo
** que atenderam a minha necessidade com sucesso e funcionamento perfeito,
** pois decidir tb não trabalhar com "de", "da", "das","do", "dos" nos
** nomes dos pacientes.
** Tb há a questão do espaço em demasia do criado pelo próprio Marcelo.

:wink:
*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//

Código: Selecionar todos

* TITULO     : # BLOQUEADOR DE CARACTERES INDESEJAVEIS #
* DATA       : 15/10/04
* PROGRAMA   : DIGIT2
* COMENTARIO : BLOQUEADOR EM TEMPO DE CARACTERES INDESEJAVEIS
CLEAR SCREEN

M->REC_NOM := SPACE(40)
MENSAGEM("DIGITE O NOME DO PACIENTE OU <ESC> PARA SAIR")
@  8, 5 SAY "Nome do Receptor:" GET M->REC_NOM PICTURE "@!" VALID Blq_carac(M->REC_NOM)
READ
CLEAR SCREEN

//#EOP

*-----------------------* 
FUNCTION BLQ_CARAC(nnome) 
*-----------------------* 
// se quiser bloquear s¢ acentos e cedilha

for i=1 to len(nnome) 
    if substr(nnome,i,4)=" DA " .or.;
       substr(nnome,i,4)=" DO " .or.;
       substr(nnome,i,4)=" DE "
       beep()
       mensagem("E R R O !!! Nao use (DA, DO ou DE) no nome...",3)
       mensagem("DIGITE O NOME DO PACIENTE OU <ESC> PARA SAIR")
       return(.f.) 
    endif 
next

for i=1 to len(nnome)
    if substr(nnome,i,5)=" DAS " .or.;
       substr(nnome,i,5)=" DOS "
       beep()
       mensagem("E R R O !!! Nao use (DAS ou DOS) no nome...",3)
       mensagem("DIGITE O NOME DO PACIENTE OU <ESC> PARA SAIR")
       return(.f.) 
    endif 
next
    

nnome=alltrim(nnome)

for i=1 to len(nnome) 
    if substr(nnome,i,1)$"Çåµ
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
ildemar
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 22 Mai 2011 09:21
Localização: Refice-Pernambuco

c/cedilha e acentos

Mensagem por ildemar »

como fazer para que c/cedilhas apacer nos programas em clipper na sua execução.
Ildemar- Recife. Alguém sabe como fazer?
jsnascimento
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 08 Jul 2004 20:05

Eliminar ou bloquear caracteres especiais do campo NOME

Mensagem por jsnascimento »

ildemar escreveu:como fazer para que c/cedilhas apacer nos programas em clipper na sua execução.
Ildemar- Recife. Alguém sabe como fazer?
Acredito que você deseja que ao digitar o "Ç" este seja mostrado na tela e seja gravado em seu arquivo de dado, não é isto?

Sendo assim, é só configurar corretamente o seu o teclado no Window ou no sistema operacional que está utilizando, e não utilizar a função que ofereci no fórum.

Caso você queira que só seja apresentado o "Ç", mas seja gravado o "C", neste caso é melhor utilizar a função no momento do salvamento dos dados. Neste caso também, em uma consulta será necessário utilizar uma função semelhante a função que ofereci, porém invertida, trocando o "C" por "Ç", só para apresentar na tela ou imprimir.

Att.

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Eliminar ou bloquear caracteres especiais do campo NOME

Mensagem por rochinha »

Amiguinhos,
Depois daquela do COMMAND.COM, e agora mais esta da função bloqueadora dos caracteres especiais, tô vendo que vc é o "CARA!!!"""
Ele não é o cara

Ele é o Clipper, o puro Clipper
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Eliminar ou bloquear caracteres especiais do campo NOME

Mensagem por Jairo Maia »

Olá Pessoal,
Clipper escreveu:Já sei que você vai perguntar "e a para tirar espaços duplos ?", ah ! essa depois eu faço...vou dar uma trabalhada agora...mas se algum colega quiser dar uma mãozinha a comunidade agradece... :lol:
Antes que você salve os dados, trate os campos que não deseja espaço duplo assim:

Código: Selecionar todos

Function TSD(cVar)  // Tira Spaços Duplos
  Local cSd:=Spac(2), cSu:=Spac(1)
  cVar:=Alltrim(cVar)
  While cSd $ cVar
    cVar:=StrTran(cVar, cSd, cSu)
  EndDo
Retu cVar
Creio que vai funcionar corretamente.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder