FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ordenación y acentos
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Ordenación y acentos
Posted: Thu Jul 06, 2017 11:37 AM
Hola,
tengo un problema con la ordenación de campos de tipo carácter cuando van acentuados, en concreto con apellidos. Al ordenar, el programa muestra los apellidos con esta ordenación:
SANCHEZ
SANTOS
SANZ
SÁNCHEZ

Es decir, la Á la mete al final de todas las A, como si fuera una vocal distinta. Entiendo que la ordenación correcta debería ser:
SANCHEZ
SÁNCHEZ
SANTOS
SANZ

Al principio del programa cargo la página de códigos de español, de esta manera:

Code (fw): Select all Collapse
request HB_LANG_ES
request HB_CODEPAGE_ESWIN
request HB_CODEPAGE_ESMWIN

/*_____________________________________________________________________________*/
function Main()
   Rddsetdefault( "DBFCDX" )
   Hb_langselect( "ES" )
   Hb_setcodepage( "ESMWIN" )


pero no hace bien la ordenación. He estado mirando en el foro de Harbour y lo único que dicen es que hay que cargar la página de códigos correspondiente, cosa que hago.

El índice de los apellidos lo defino de esta manera:

Code (fw): Select all Collapse
INDEX ON UPPER(coapelli)+UPPER(conombre) TAG co02 FOR ! deleted()


¿ Alguien sabe como corregir esto ?

Saludos,
José Luis
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Ordenación y acentos
Posted: Fri Jul 07, 2017 02:29 PM

Hola,
Lo he resuelto con una función que quita los acentos en la sentencia de la indexación, pero pensaba que había alguna función de harbour que hacía esto. Yo no la he encontrado.

Saludos,

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Ordenación y acentos
Posted: Fri Jul 07, 2017 02:37 PM
Esto és en tú banco de datos? Se si, haga algo asi:

Code (fw): Select all Collapse
FUNCTION TiraAcentos(cStr)
   LOCAL cStrNew := "", nX
   cAcentos:={"Æ","Ç"," ","µ","…","·","‚","","ˆ","Ò","¡","Ö","¢","à","ä","å","“","â","£","é","","š","‡","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª"}
   cLetras :={"a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U","c","C","a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U","c"," ","CAO",".",".",".","."}
   FOR nX := 1 TO LEN(cAcentos)
       cStrNew := STRTRAN(cStr,cAcentos[nX],cLetras[nX])
       cStr := cStrNew
   NEXT
RETURN(cStrNew)


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Ordenación y acentos
Posted: Sat Jul 08, 2017 05:11 PM

José Luis has probado a borrar el fichero de los índices y crearlos con el código de página español cargado?

Por cierto, cuando dices acento quieres decir tilde, no? :roll: :roll: :roll: :D :D :lol: :lol:

______________________________________________________________________________

Sevilla - Andalucía

Continue the discussion