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
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
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.-
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
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
René:
¿Sabes cómo se consigue lo mismo (ordenar sin tener en cuenta acentos) desde FWH y Harbour?
Gracias,
Rafael
Rafael,
REQUEST HB_LANG_ESWIN
HB_LANGSELECT("ESWIN")
Antonio:
Parece que no. INDEX ON FIELD->APELLIDOS..... me da:
....
CLAVE
CLAVERO
CLAVÉ
....
¿Seguro que no hay que cambiar algo más?
Rafael
Rafael,
Añade HB_SETCODEPAGE( "ESWIN" )
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.libAntonio, 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
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
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
RF wrote:NTXSPA.OBJ, funciona con todos los RDDs
a MI TAMPOCO ME FUNCIONA...