PDA

Ver la Versión Completa : Problema al Cambiar Charset y Collate en FireBird


AGAG4
24-11-2004, 16:57:11
Uso FireBird 1.52, Delphi6 ,IBX 6.08
Tengo un problema con algunas Tablas de la Base de Datos, por ejemplo:
En la Tabla de Cliente tengo el Campo Clave(Integer) y Nombre(VarChar[80])cuando hacia una busqueda por NOMBRE por medio de mi Aplicacion al presionar la Ñ ó una Letra con aceptos (á,é,etc) no me hacia la busqueda por lo que investigue en internet y vi que tenia que cambiar las propiedades(Charset y Collate) del campo, uso dominios por lo que al dominio le cambie y quedo asi Charset=ISO8859_1 Y COLLATE=ES_ES con esto me iba a permitir hacer busquedas con caracteres con acentos ó con la Ñ pero ahora me marca este error:

'arithmetic exception,numeric overflow,or string truncation Cannot transliterate character between character sets':confused:

Ya hice busquedas con el IB-Expert y si me las hace correctamente, ya refresque los IBDataset y sigue el problema.

Me gustaria saber que estará pasando ó que parámetros son los correctos????


Agradezco cualquier sugerencia.

Toni
25-11-2004, 12:06:08
Hola,

En el momento de realizar la conexion con la base de datos mediante el componente IBDatabase deberias pasarle tambien el parametro lc_ctype=ISO8859_1.

Por lo demas no deberias de tener ningun problema, a mi me funciona correctamente.

Saludos,

AGAG4
25-11-2004, 15:56:54
Gracias por su respuesta, pero ya tengo ese parámetro dentro del ibDatabase, no me va a quedar otra opcion más que de borrar las Tablas afectadas y volverlas a Crear.

Que tenga buen día.

Saludos.

AGAG4
25-11-2004, 17:56:53
Que Valores Correctos tienen que tomar CharSet y Collate en la creación de Campos Varchar para el idioma Español????

Esto tengo en mi Base de Datos, lo puedo ver en IbExpert en Options-Extract Metadata
SET SQL DIALECT 3;

/* CREATE DATABASE 'C:\Sistemas\DB.GDB' PAGE_SIZE 4096

DEFAULT CHARACTER SET ISO8859_1 */

En IbExpert en el menu Herramientas con la opción extraer metadata checa las primeras lines

SET SQL DIALECT 3;
SET NAMES NONE;
CREATE DATABASE 'c:\Prueba\datos\MiBD.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 1024
DEFAULT CHARACTER SET NONE;


Para evitar el Error que menciono arriba y hacer busquedas con caracteres con acentos ó con Ñ,ñ
Como puedo cambiar el SET NAMES NONE; y DEFAULT CHARACTER SET NONE; sin tener que crear de nuevo la base de datos(correcta) y pasar los datos de la anterior????

Quiero Cambiarlo de la siguiente forma:

SET SQL DIALECT 3;

SET NAMES ISO8859_1;

CREATE DATABASE 'c:\Prueba\datos\MiBD.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 1024

DEFAULT CHARACTER SET ISO8859_1;

Agradezco cualquier sugerencia.

Toni
25-11-2004, 20:09:35
Hola,

El parametro de conexion se lo pasas en el componente IBDatabase en la propiedad params:

params->Add("lc_ctype=xxxxxxxxxx");

En cuanto a lo otro sera mejor que crees una base de datos nueva con las nuevas caracteristicas e importes los datos de la anterior.

saludos,

AGAG4
25-11-2004, 20:40:53
Gracias de Antemano pero...

Cual es la Forma Correcta de Crear una Base de Datos?????
Al momento de Crearla le dejo los siguientes parámetros????
SET NAMES ISO8859_1;
DEFAULT CHARACTER SET ISO8859_1;

Y en cuanto a las Tablas con Campos Varchar como se clasificará CHARSET Y COLLATE????

Agradezco cualquier sugerencia.

Toni
26-11-2004, 20:26:36
Hola,

Yo por costumbre suelo utilizar los dominios y en cada dominio vuelvo a declarar el charset.

De todas formas supongo que si declaras como DEFAULT CHARACTER SET ISO8859_1, pues no tendria que hacer falta.

Saludos,

AGAG4
29-11-2004, 16:02:25
Gracias Toni.....
Que tenga Buen Día.