![]() |
Error al insertar con dbexpress
Hola!
Al intentar insertar registros en una tabla que se toman los datos de un fichero texto y estos datos tienen acentos da un error y no me permite continuar con la inserción de los otros registros. El error es exactamente este: Cita:
Lo otro es que si ocurre un error no importa, que continue pero controlar donde ocurrió el error, esto lo hago insertando un mensaje en un memo, pero cuando salta el error estoy en delphi, pero cuando estoy lanzando la aplicacion no salta el error. Cómo puedo controlar esto?? Gracias de antemano. He efectuado las modificaciones que me ha dicho marc en el hilo anterior, pero siempre da este error y quiero controlarlo, si da que se registre, pero no lo hace. |
Hola.
Para que Interbase/Firebird te acepte los carácteres con acentos, eñes, ..., tienes que especificar el character_set adecuado. Yo utilizo el iso8859_1. Tienes que especificarlo tanto en la Base de Datos (al crearla), como en el componente TSQLConnection (en la propiedad Params el ServerCharSet). Si ya tienes creada la Base de Datos, puedes crear una de nueva mediante el Gestor IB-Expert. (el link apunta a la versión Personal que es gratuita)http://www.hksoftware.net/download/i....0.56_full.exe En la opción Tools -> Extract Metadata, escoge todos los objetos, y también todos los datos, esto te va a crear un Script para generar una nueva bases de datos con las tablas/objetos y datos iguales. Modifica ese Script, y en las primeras lineas, en el CREATE DATABASE, especifica el DEFAULT CHARACTER SET a ISO8859_1 Ahora ya solo te queda ejecutar el Script, para crear una nueva Base de Datos, con el character_set que te interesa. Saludos. |
Cita:
yo en mis bases de datos ademas de hacer lo que comentas, en la definicion del campo especifico el collate es_es, algo asi Código:
SET SQL DIALECT 3; Gracias. |
Hola.
Tal como lo tengo entendido, el Collate_set es para las ordenaciones. Evidentemente es mejor especificar la ordenación es_es que dejarlo por defecto (como hago yo). Esto te sirve, por ejemplo, para que al hacer un SELECT con un ORDER BY, las ñ vayan detras de las n, y no al final (como me pasa a mi, aunque hasta ahora tampoco le he dado mayor importancia). Saludos. |
ok, gracias
no sabia para que era. |
Hola Marc!
Gracias por las respuestas, pero tal vez en lo que este fallando es en asignar la propiedad de character set en el sqlconn, pero la BD tiene el iso8859_1 al momento de crearla, verificaré hoy estoy, claro que viendo esto, voy a modificar algunas cosas para que el usuario asigne estos parámetros en runtime y asi no haya problemas al ejecutar. Gracias nuevamente y a Rudi y todos los que leen. |
La franja horaria es GMT +2. Ahora son las 02:05:08. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi