Página 1 de 1
Eliminar ou bloquear caracteres especiais do campo NOME
Enviado: 05 Out 2004 19:33
por jsnascimento
CAROS CLIPPEIROS DE PLANTÃO,
BOA NOITE!!!
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
Enviado: 05 Out 2004 23:47
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
Função Bloqueadora de entrada de caracteres especiais.
Enviado: 06 Out 2004 16:54
por jsnascimento
Caro Marcelo!!
Obrigado pela resposta. Gostei da sua sugestão.
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
Enviado: 06 Out 2004 17:37
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)$"Çåµ
Função para Bloquear entrada de caracteres especiais
Enviado: 06 Out 2004 17:47
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
Enviado: 06 Out 2004 18:00
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
Enviado: 07 Out 2004 21:35
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 ??
Enviado: 08 Out 2004 10:16
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="Çåµ
Enviado: 08 Out 2004 10:22
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...
Até logo.
Marcelo
"Eliminar ou bloquear caracteres especiais do campo NOM
Enviado: 15 Out 2004 18:25
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.
*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//
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)$"Çåµ
c/cedilha e acentos
Enviado: 29 Mai 2011 20:11
por ildemar
como fazer para que c/cedilhas apacer nos programas em clipper na sua execução.
Ildemar- Recife. Alguém sabe como fazer?
Eliminar ou bloquear caracteres especiais do campo NOME
Enviado: 29 Mai 2011 21:38
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
Eliminar ou bloquear caracteres especiais do campo NOME
Enviado: 31 Mai 2011 14:25
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
Eliminar ou bloquear caracteres especiais do campo NOME
Enviado: 02 Jun 2011 12:41
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...
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.