Quiero indexar un campo utilizando una función o máximo dos que quiten acentos y eñes y poner en mayúsculas, para que sea fácil de localizar los registros, alguien sabe si hay algo en harbour que me ayude?
O si ya existe en Clipper para 16 bits para no perder compatibilidad en lo que paso todas las aplicaciones a Xailer.
Gracias de antemano, saludos a todos.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Función de limpieza de acentos y eñes
-
- Mensajes: 155
- Registrado: Mié Nov 03, 2004 12:42 pm
- Ubicación: Cancún, México
- Contactar:
Función de limpieza de acentos y eñes
Tengo estas funciones, espero te sirvan...
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FUNCION : SinAcento(<cCadena>) -> cCadena
* DESCRIPCION: Quita los acentos a la cadena pasada.
* REGRESA : <cCadena> pero SIN Acento
* PARAMETROS : <cCadena> = Cadena a eliminarle los acentos.
* EJEMPLO : ? SinAcento("Sánchez") -> "Sanchez" ? SinAcento("8") -> "8"
* ? SinAcento("í‰") -> "E" ? SinAcento("A") -> "A"
* ? SinAcento("Lí“PEZ") -> "LOPEZ" ? SinAcento("=") -> "="
*
FUNCTION SinAcento(cCadena)
DEFAULT cCadena TO SPACE(1)
IF VALTYPE(cCadena) <> "C"
cCadena := SPACE(1)
ENDIF
cCadena := StrTran(cCadena, "í", "A"); cCadena := StrTran(cCadena, "í‚", "A"); cCadena := StrTran(cCadena, "í€", "A"); cCadena := StrTran(cCadena, "í„", "A"); cCadena := StrTran(cCadena, "íƒ", "A"); cCadena := StrTran(cCadena, "í…", "A")
cCadena := StrTran(cCadena, "í‰", "E"); cCadena := StrTran(cCadena, "íŠ", "E"); cCadena := StrTran(cCadena, "íˆ", "E"); cCadena := StrTran(cCadena, "í‹", "E")
cCadena := StrTran(cCadena, "í", "I"); cCadena := StrTran(cCadena, "íŽ", "I"); cCadena := StrTran(cCadena, "íŒ", "I"); cCadena := StrTran(cCadena, "í", "I")
cCadena := StrTran(cCadena, "í“", "O"); cCadena := StrTran(cCadena, "í”", "O"); cCadena := StrTran(cCadena, "í’", "O"); cCadena := StrTran(cCadena, "í–", "O"); cCadena := StrTran(cCadena, "í•", "O")
cCadena := StrTran(cCadena, "íš", "U"); cCadena := StrTran(cCadena, "í›", "U"); cCadena := StrTran(cCadena, "í™", "U")
cCadena := StrTran(cCadena, "á", "a"); cCadena := StrTran(cCadena, "í¢", "a"); cCadena := StrTran(cCadena, "í ", "a"); cCadena := StrTran(cCadena, "í¤", "a"); cCadena := StrTran(cCadena, "ã", "a"); cCadena := StrTran(cCadena, "í¥", "a")
cCadena := StrTran(cCadena, "é", "e"); cCadena := StrTran(cCadena, "íª", "e"); cCadena := StrTran(cCadena, "í¨", "e"); cCadena := StrTran(cCadena, "í«", "e")
cCadena := StrTran(cCadena, "í", "i"); cCadena := StrTran(cCadena, "í®", "i"); cCadena := StrTran(cCadena, "í¬", "i"); cCadena := StrTran(cCadena, "í¯", "i")
cCadena := StrTran(cCadena, "ó", "o"); cCadena := StrTran(cCadena, "í´", "o"); cCadena := StrTran(cCadena, "í²", "o"); cCadena := StrTran(cCadena, "í¶", "o"); cCadena := StrTran(cCadena, "íµ", "o")
cCadena := StrTran(cCadena, "ú", "u"); cCadena := StrTran(cCadena, "í»", "u"); cCadena := StrTran(cCadena, "í¹", "u")
RETURN(cCadena)
*
* FIN SinAcento()
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FUNCION: UpperAnsi(cString) -> cUpperCaseString
* FINALIDAD: Convierte a MAYíšSCULAS la cadena <cString>.
* La diferencia con la función UPPER() de [x]Harbour radica en que esta función también convierte las minúsculas acentuadas
* PARAMETROS: <cString> = Cadena que se desea convertir a MAYíšSCULAS
* REGRESA: <cUpperCaseString> = Cadena <cString> converetida a MAYíšSCULAS
*
FUNCTION UpperAnsi(cString)
cString := StrTran(cString, "á", "í"); cString := StrTran(cString, "í¢", "í‚"); cString := StrTran(cString, "í ", "í€"); cString := StrTran(cString, "í¤", "í„"); cString := StrTran(cString, "ã", "íƒ"); cString := StrTran(cString, "í¥", "í…")
cString := StrTran(cString, "é", "í‰"); cString := StrTran(cString, "íª", "íŠ"); cString := StrTran(cString, "í¨", "íˆ"); cString := StrTran(cString, "í«", "í‹")
cString := StrTran(cString, "í", "í"); cString := StrTran(cString, "í®", "íŽ"); cString := StrTran(cString, "í¬", "íŒ"); cString := StrTran(cString, "í¯", "í")
cString := StrTran(cString, "ó", "í“"); cString := StrTran(cString, "í´", "í”"); cString := StrTran(cString, "í²", "í’"); cString := StrTran(cString, "í¶", "í–"); cString := StrTran(cString, "íµ", "í•")
cString := StrTran(cString, "ú", "íš"); cString := StrTran(cString, "í»", "í›"); cString := StrTran(cString, "í¹", "í™"); cString := StrTran(cString, "í¼", "íœ")
cString := StrTran(cString, "ñ", "í‘")
RETURN Upper(cString)
*
* FIN UpperAnsi()
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FUNCION : SinAcento(<cCadena>) -> cCadena
* DESCRIPCION: Quita los acentos a la cadena pasada.
* REGRESA : <cCadena> pero SIN Acento
* PARAMETROS : <cCadena> = Cadena a eliminarle los acentos.
* EJEMPLO : ? SinAcento("Sánchez") -> "Sanchez" ? SinAcento("8") -> "8"
* ? SinAcento("í‰") -> "E" ? SinAcento("A") -> "A"
* ? SinAcento("Lí“PEZ") -> "LOPEZ" ? SinAcento("=") -> "="
*
FUNCTION SinAcento(cCadena)
DEFAULT cCadena TO SPACE(1)
IF VALTYPE(cCadena) <> "C"
cCadena := SPACE(1)
ENDIF
cCadena := StrTran(cCadena, "í", "A"); cCadena := StrTran(cCadena, "í‚", "A"); cCadena := StrTran(cCadena, "í€", "A"); cCadena := StrTran(cCadena, "í„", "A"); cCadena := StrTran(cCadena, "íƒ", "A"); cCadena := StrTran(cCadena, "í…", "A")
cCadena := StrTran(cCadena, "í‰", "E"); cCadena := StrTran(cCadena, "íŠ", "E"); cCadena := StrTran(cCadena, "íˆ", "E"); cCadena := StrTran(cCadena, "í‹", "E")
cCadena := StrTran(cCadena, "í", "I"); cCadena := StrTran(cCadena, "íŽ", "I"); cCadena := StrTran(cCadena, "íŒ", "I"); cCadena := StrTran(cCadena, "í", "I")
cCadena := StrTran(cCadena, "í“", "O"); cCadena := StrTran(cCadena, "í”", "O"); cCadena := StrTran(cCadena, "í’", "O"); cCadena := StrTran(cCadena, "í–", "O"); cCadena := StrTran(cCadena, "í•", "O")
cCadena := StrTran(cCadena, "íš", "U"); cCadena := StrTran(cCadena, "í›", "U"); cCadena := StrTran(cCadena, "í™", "U")
cCadena := StrTran(cCadena, "á", "a"); cCadena := StrTran(cCadena, "í¢", "a"); cCadena := StrTran(cCadena, "í ", "a"); cCadena := StrTran(cCadena, "í¤", "a"); cCadena := StrTran(cCadena, "ã", "a"); cCadena := StrTran(cCadena, "í¥", "a")
cCadena := StrTran(cCadena, "é", "e"); cCadena := StrTran(cCadena, "íª", "e"); cCadena := StrTran(cCadena, "í¨", "e"); cCadena := StrTran(cCadena, "í«", "e")
cCadena := StrTran(cCadena, "í", "i"); cCadena := StrTran(cCadena, "í®", "i"); cCadena := StrTran(cCadena, "í¬", "i"); cCadena := StrTran(cCadena, "í¯", "i")
cCadena := StrTran(cCadena, "ó", "o"); cCadena := StrTran(cCadena, "í´", "o"); cCadena := StrTran(cCadena, "í²", "o"); cCadena := StrTran(cCadena, "í¶", "o"); cCadena := StrTran(cCadena, "íµ", "o")
cCadena := StrTran(cCadena, "ú", "u"); cCadena := StrTran(cCadena, "í»", "u"); cCadena := StrTran(cCadena, "í¹", "u")
RETURN(cCadena)
*
* FIN SinAcento()
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FUNCION: UpperAnsi(cString) -> cUpperCaseString
* FINALIDAD: Convierte a MAYíšSCULAS la cadena <cString>.
* La diferencia con la función UPPER() de [x]Harbour radica en que esta función también convierte las minúsculas acentuadas
* PARAMETROS: <cString> = Cadena que se desea convertir a MAYíšSCULAS
* REGRESA: <cUpperCaseString> = Cadena <cString> converetida a MAYíšSCULAS
*
FUNCTION UpperAnsi(cString)
cString := StrTran(cString, "á", "í"); cString := StrTran(cString, "í¢", "í‚"); cString := StrTran(cString, "í ", "í€"); cString := StrTran(cString, "í¤", "í„"); cString := StrTran(cString, "ã", "íƒ"); cString := StrTran(cString, "í¥", "í…")
cString := StrTran(cString, "é", "í‰"); cString := StrTran(cString, "íª", "íŠ"); cString := StrTran(cString, "í¨", "íˆ"); cString := StrTran(cString, "í«", "í‹")
cString := StrTran(cString, "í", "í"); cString := StrTran(cString, "í®", "íŽ"); cString := StrTran(cString, "í¬", "íŒ"); cString := StrTran(cString, "í¯", "í")
cString := StrTran(cString, "ó", "í“"); cString := StrTran(cString, "í´", "í”"); cString := StrTran(cString, "í²", "í’"); cString := StrTran(cString, "í¶", "í–"); cString := StrTran(cString, "íµ", "í•")
cString := StrTran(cString, "ú", "íš"); cString := StrTran(cString, "í»", "í›"); cString := StrTran(cString, "í¹", "í™"); cString := StrTran(cString, "í¼", "íœ")
cString := StrTran(cString, "ñ", "í‘")
RETURN Upper(cString)
*
* FIN UpperAnsi()
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Saludos
Israel
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Israel
Función de limpieza de acentos y eñes
Excelente función, muchas gracias por compartirla.