![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
ordenar en español en FireBird/Interbase
Si tenemos un campo alfanumérico que va a contener caracteres en español (acentos y eñe) ¿cómo se puede obtener ordenado correctamente?
Si no se especifica CHARACTER SET al usar la sentencia ORDER BY la Ñ no aparece en la posición correcta. He probado a usar otros CHARACTER SET (como por ejemplo el ISO8859_1) pero entonces no me deja usar la Ñ en el campo. ¿Alguna sugerencia? |
#2
|
|||
|
|||
Hola Molinero,
mira en los manuales el "collate", para el caso español es collate es_es un ejemplo: Cita:
Última edición por pedrohdez fecha: 15-05-2003 a las 13:28:55. |
#3
|
|||
|
|||
![]() Estimado Pedro
Gracias por tu rápida respuesta, pero no es ese el problema: ya estaba usando COLLATE. En concreto el ejemplo es el siguiente: CREATE TABLE TEMP ( NHISTORIA VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(80) CHARACTER SET ISO8859_1 COLLATE ES_ES, ...... PRIMARY KEY (NHISTORIA) ); El problema surge cuando ahora intento insertar un registro en el que en el campo APELLIDOS pongo por ejemplo "Hernández", generándose el siguiente error: General SQL error ... string truncation. Cannot transliterate character between character sets. ¿A lo mejor es que hay que definir de entrada la base de datos como ISO8859_1 y no solo el campo? |
#4
|
||||
|
||||
Hola.
En los componentes Delphi tienes que especificar que utilizas el character set iso8859_1. Por ejemplo en dbExpress tienes que especificarlo en el parámetro ServerCharSet del objeto TSQLConnection. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
|||
|
|||
Hola
Tienes razon Molinero, a veces respondo mas rapido de la cuenta. Por si no usas los dbExpress, si no las IBX lo que tienes que añadir a los parametros de conexion del TDataBase la linea: lc_ctype=ISO8859_1 (o el juego de caracteres que hayas usado) |
#6
|
|||
|
|||
![]() Estimados Marc y Pedro
Efectivamente ahí estaba el problema: no basta con definir en la base de datos o en el campo el CHARACTER SET que se utiliza, como yo suponía erróneamente; tal y como ambos apuntáis también hay que especificarlo en el componente que se utilice para establecer la conexión. Mil gracias |
#7
|
|||
|
|||
Tube este mismo problema y ya lo solucione en la tabla usando el iso y el collate, ahora tengo una pregunta, es posible hacer esto mismo pero desde una vista?
Por decir algo en la tabla de clientes me funciona muy bien porque tiene el collate y el iso pero en una vista que esta relacionada con las facturas vuelve a comporatrse de la misma forma, es decir no distingue entre lópez y LÓPEZ Saludos y gracias Alejandro Jourdan
__________________
Alejandro Jourdan |
![]() |
|
|
![]() |
|