Ordenación y acentos

Ordenación y acentos

Postby José Luis Sánchez » 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: Select all  Expand view
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: Select all  Expand view
INDEX ON UPPER(coapelli)+UPPER(conombre) TAG co02 FOR ! deleted()


¿ Alguien sabe como corregir esto ?

Saludos,
José Luis
User avatar
José Luis Sánchez
 
Posts: 539
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: Ordenación y acentos

Postby José Luis Sánchez » Fri Jul 07, 2017 2: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,
User avatar
José Luis Sánchez
 
Posts: 539
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: Ordenación y acentos

Postby karinha » Fri Jul 07, 2017 2:37 pm

Esto és en tú banco de datos? Se si, haga algo asi:

Code: Select all  Expand view

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
User avatar
karinha
 
Posts: 7254
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ordenación y acentos

Postby xmanuel » Sat Jul 08, 2017 5: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
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 8 guests