Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2003
lmmolinero lmmolinero is offline
Registrado
 
Registrado: may 2003
Ubicación: Las Rozas - Madrid - España
Posts: 3
Poder: 0
lmmolinero Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 15-05-2003
pedrohdez pedrohdez is offline
Miembro
 
Registrado: may 2003
Ubicación: Murcia
Posts: 54
Poder: 22
pedrohdez Va por buen camino
Hola Molinero,

mira en los manuales el "collate", para el caso español es collate es_es

un ejemplo:
Cita:
CREATE DOMAIN "TEXTO80" AS VARCHAR(80) CHARACTER SET ISO8859_1 COLLATE ES_ES

Última edición por pedrohdez fecha: 15-05-2003 a las 13:28:55.
Responder Con Cita
  #3  
Antiguo 15-05-2003
lmmolinero lmmolinero is offline
Registrado
 
Registrado: may 2003
Ubicación: Las Rozas - Madrid - España
Posts: 3
Poder: 0
lmmolinero Va por buen camino
Unhappy

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?
Responder Con Cita
  #4  
Antiguo 15-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #5  
Antiguo 15-05-2003
pedrohdez pedrohdez is offline
Miembro
 
Registrado: may 2003
Ubicación: Murcia
Posts: 54
Poder: 22
pedrohdez Va por buen camino
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)
Responder Con Cita
  #6  
Antiguo 15-05-2003
lmmolinero lmmolinero is offline
Registrado
 
Registrado: may 2003
Ubicación: Las Rozas - Madrid - España
Posts: 3
Poder: 0
lmmolinero Va por buen camino
Smile

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
Responder Con Cita
  #7  
Antiguo 20-11-2003
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 22
jourdan Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:44:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi