Problemas de ordenacion
Problemas de ordenacion
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
¿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
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.-
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.-
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
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.
- Rafael Clemente
- Posts: 365
- Joined: Sat Oct 08, 2005 7:59 pm
- Location: Barcelona, Spain
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Rafael Clemente
- Posts: 365
- Joined: Sat Oct 08, 2005 7:59 pm
- Location: Barcelona, Spain
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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.
R.F.
- Rafael Clemente
- Posts: 365
- Joined: Sat Oct 08, 2005 7:59 pm
- Location: Barcelona, Spain
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...
Rafael
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...
Rafael
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
Muchas gracias de todas maneras
Nos Gusta Programar
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España