Problemas de ordenacion

Problemas de ordenacion

Postby manuramos » Thu Dec 29, 2005 2:11 pm

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby rbecares » Sat Dec 31, 2005 1:22 pm

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.-
rbecares
 
Posts: 77
Joined: Wed Oct 12, 2005 5:36 pm

Postby manuramos » Wed Jan 04, 2006 8:46 pm

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby R.F. » Thu Jan 05, 2006 12:51 am

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.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby Rafael Clemente » Thu Jan 05, 2006 1:13 pm

René:
¿Sabes cómo se consigue lo mismo (ordenar sin tener en cuenta acentos) desde FWH y Harbour?
Gracias,
Rafael
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby Antonio Linares » Thu Jan 05, 2006 4:14 pm

Rafael,

REQUEST HB_LANG_ESWIN
HB_LANGSELECT("ESWIN")
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Rafael Clemente » Thu Jan 05, 2006 4:41 pm

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
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby Antonio Linares » Thu Jan 05, 2006 7:51 pm

Rafael,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby R.F. » Thu Jan 05, 2006 8:24 pm

Yo lo hago asi:

Code: Select all  Expand view
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.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby Rafael Clemente » Fri Jan 06, 2006 1:34 pm

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
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby manuramos » Fri Jan 06, 2006 6:22 pm

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby R.F. » Sun Jan 08, 2006 6:07 am

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.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby Manuel Valdenebro » Wed Jan 11, 2006 8:41 pm

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
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby manuramos » Thu Jan 12, 2006 3:52 pm

a MI TAMPOCO ME FUNCIONA...
Nos Gusta Programar
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 5 guests