Problemas de ordenacion

Post Reply
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Problemas de ordenacion

Post by manuramos »

Tengo una última duda:

¿Como consigo indexar mis ficheros para que las vocales acentuadas se coloquen en su sitio?

Por ejemplo: Perales, Pérez, Porras
y no: Perales,Porras, Pérez

Me falla tanto con DBF/NTX como con DBF/CDX
Nos Gusta Programar
rbecares
Posts: 77
Joined: Wed Oct 12, 2005 5:36 pm

Post by rbecares »

Una idea que se me ocurre viendo tu pregunta ( yo no lo haría pero tal vez te sirve como punta para llegar a lo que necesitas ) sería hacer una clave de indice que suponiendo que el campo "nombre" es el queres indexar:

TRADUCE(NOMBRE)

donde la funcion TRADUCE es algo así:

FUNCTION TRADUCE( cString )
LOCAL cRetorno

cRetorno := cString
cRetorno := STRTRAN( cRetorno, "á", "a" )
cRetorno := STRTRAN( cRetorno, "é", "e" )
cRetorno := STRTRAN( cRetorno, "í", "i" )
cRetorno := STRTRAN( cRetorno, "ó", "o" )
cRetorno := STRTRAN( cRetorno, "ú", "u" )

RETURN( cRetorno )

Claro que esto no es ni optimo ni mucho menos para poner como clave de indice por el tiempo de proceso permanente ni es muy practico para todos tus indices.

Saludos.
Ricardo.-
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Gracias por la idea, pero eso ya lo había pensado.
Pensé que existiría otrra solución más práctica.
ALguna función en C que se pueda utilizar con los índices, o algún OBJ que se pueda compilar con FW, o algo así..
Gracias por de todas formas y fecliz año nuevo
Nos Gusta Programar
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

NEEEGATIVO señores, no es necesario hacer funciones ni nada.

Clipper 5.2 trae unos ficheros obj que tienen que incluir al momento de compilar para que la ordenacion se realice correctametne respetando Ñ y acentos.

Por ejemplo, si quieres que los mensajes del compilador no te aparezcan en ingles sino en español, tienes que linkear:

MSGSPA.OBJ

En el caso de los indices si son NTX, tienes que linkear:

NTXSPA.OBJ

Estosarchivos estan en la carpeta OBJ debajo de la carpeta \CLIPPERxx
Saludos
R.F.
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

René:
¿Sabes cómo se consigue lo mismo (ordenar sin tener en cuenta acentos) desde FWH y Harbour?
Gracias,
Rafael
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rafael,

REQUEST HB_LANG_ESWIN
HB_LANGSELECT("ESWIN")
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Antonio:
Parece que no. INDEX ON FIELD->APELLIDOS..... me da:
....
CLAVE
CLAVERO
CLAVÉ
....

¿Seguro que no hay que cambiar algo más?
Rafael
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rafael,

Añade HB_SETCODEPAGE( "ESWIN" )
regards, saludos

Antonio Linares
www.fivetechsoft.com
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Yo lo hago asi:

Code: Select all

 REQUEST HB_Lang_ES        // Para establecer idioma de Mensajes, fechas, etc..
  REQUEST HB_CODEPAGE_ESWIN // Para establecer código de página a Español (Ordenación, etc..)
  // Idioma por defecto: Español...
  HB_LangSelect("ES")     // Para mensajes, fechas, etc..
  HB_SetCodePage("ESWIN") // Para ordenación (arrays, cadenas, etc..) *Requiere CodePage.lib
Saludos
R.F.
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Antonio, René: Gracias!

Yo tenía un error de concepto: Creí que las vocales acentuadas se trataban como idénticas a las no acentuadas y ahora veo que no es así: El "orden" -por si a alguien le interesa- es: a,á,e,é,i,í,o,ó,u,ú,à,è,ì,ò,ù

Curiosamente, la ñ va en su posición "normal", entre la n y la o; en cambio, la ç (cedilla) cae detrás de la z

Siempre se aprende algo... :wink:
Rafael
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Todo eso está muy bien, y agradezco mucho la preocupaciónb por el tema. Pero hay otra pega... Yo tengo fw 2.3 con clipper 5.3 y utilizo dbf/cdx. Por lo tanto, ni tengo el NTXSPA.OBJ del amigo René, ni por supuesto algún posible CDXSPA.OBJ. Ni puedo emplear los seteos HB_... de Harbour.

Muchas gracias de todas maneras
Nos Gusta Programar
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Se tuiliza el NTXSPA.OBJ, este fichero tiene el "collation sequence" para todos los RDDS, en realidad las rutinas afectan las funciones que generan los indices antes de que estos se escriban con el RDD correspondiente, asi que este fichero funciona con todos los RDDs
Saludos
R.F.
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post by Manuel Valdenebro »

RF wrote:NTXSPA.OBJ, funciona con todos los RDDs
Perdona René, pero yo lo he enlazado en mi programa (cdx) y no me funciona. Clipper 5.3b

Un saludo
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

a MI TAMPOCO ME FUNCIONA...
Nos Gusta Programar
Post Reply