Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Aritmetic excepcion, numeric overflow... (https://www.clubdelphi.com/foros/showthread.php?t=30802)

andressanchez 19-04-2006 20:15:31

Aritmetic excepcion, numeric overflow...
 
Hola foristas

El ambiente que estoy utilizando es el siguiente

Win 2000 profesional
firebird 1.5
delphi 7
bde

El problema es el siguiente cuando consulto los datos de una de las tablas me lanza el siguiente error: aritmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character set.
Incluso utilizando el SQL explorer y haciendo clic en la pestaña Data me da este error.

la estructura de la tabla es la siguiente
Cita:

CREATE TABLE RELACIONCORRESPONDENCIADET (
REGISTRONO INTEGER,
CLASEDOCUMENTO VARCHAR(20),
NUMERO VARCHAR(10),
DESCRIPCION VARCHAR(100),
LINEANO SMALLINT,
RECIBIDO VARCHAR(1),
NUMEROCERTIFICADO VARCHAR(15)
)
comencé ha realizar consultas campo por campo a ver cual era el campo que daba el error y resultó ser el campo DESCRIPCION.

He buscado en el foro y lo que encontré fueron casos de insercion que presentaban este error, no de consulta.

por favor si me pueden dar una mano a ver como puedo solucionar este problema.

gracias.

cahp 20-04-2006 00:47:39

Hola, seguramente estas intentando poner un caracter no permitido en el charset que pusiste al crear el campo.

Saludos.

andressanchez 20-04-2006 14:00:08

No se cual será ese caracter inválido ya que el sistema tiene mas de cinco meses funcionando y en estos días fue que me di cuenta del problema.

A lo mejor los usuarios digitaron algún caracter no válido como tú dices. Pero cómo puedo hacer para repararlo ya que el error que me da no es insertando datos, es cuando hago una consulta o activo la pestaña data del SQL explorer.

cahp 20-04-2006 18:56:33

lo unico que se me ocurre es ir acotando la consulta hasta averiguar que registro
es.

Que charset estas usando?

Saludos.

andressanchez 20-04-2006 20:11:15

comence a averiguar cuales eran los registros que tenian problemas, pero son demasiados.

cómo puedo saber el charset esta utilizando mi base de datos y como puedo cambiarselo?

esto me resolveria el problema?

andressanchez 20-04-2006 22:32:03

Por favor alguien me puede decir como cambiar el charset y el page size de una base de datos ya creada (la base de datos tiene aprox. 5 meses de uso).

he buscado en el foro y he intetado corriendo los script que aparecen pero la base de datos sigue igual.

espero sus respuestas.

gracias.

Delfino 23-04-2006 19:18:43

Cita:

cómo puedo saber el charset esta utilizando mi base de datos
Código SQL [-]
select RDB$CHARACTER_SET_NAME from RDB$DATABASE

Cita:

como cambiar el charset y el page size de una base de datos ya creada
Lo haces con el componente Database, en este caso del BDE no se como pero usando el IBDatabase es asignarselos a los params del mismo:

Código Delphi [-]
db.Params.Add('page_size 4096');
db.Params.Add('default character set ''ISO8859_1''' ;

andressanchez 26-04-2006 16:13:21

Quiero darle las gracias a cahp y a delfino por la ayuda que me brindaron. Las respuestas que me dieron fueron muy buenas, las puse a prueba pero me daba el mismo error.

Solucioné el problema de la siguiente manera:

El sistema operativo donde está instalada la base de datos está en inglés. Copié la base de datos a otra computadora con un S.O. en español (la tabla abrió sin ningun problema). Hice una base de datos nueva con los siguientes valores page_size 4096 ; default character set 'ISO8859_1 ; dialect 3. exporté las tablas utilizando la herramienta DataPump que viene con delphi, a la nueva base de datos.

Todos los registros pasaron bien, exceptuando la tabla que tenia problemas. Para solucionar esto hice un programa para pasar los registros de la
Base de datos vieja a la nueva. El programa tiene una función que valida si tiene ñÑáéíó, en fin todos los caracteres que utilizamos en español. Hice esto porque me estaba dando error cuando estaba recorriendo los registros de la tabla origen.

Así fue que pude solucionar este problemita.

Gracias a todos por su colaboración.

RONPABLO 26-04-2006 23:06:22

Es raro pero varias veces he probado trabajar con ñ Ñ o con tildes y me ha puesto problema si cambio el character set a algo diferente de None... Y digo esto ya que he visto la sugerencia para trabajar con estos tipos de caracteres es precisamente darle un "character setISO8859_1" y una "collection ES_ES"
pero a mi me funciona bien dejandoles en NONE

Lepe 27-04-2006 08:24:28

RONPABLO Se te fué el dedo jejejej En principio es Collation.... para indicar que la base de datos o el campo en cuestión usa el idioma español, sería mejor indicarselo tambien en la creación de la Base de Datos.

character set ISO8859_1 collate ES_ES


Saludos

RONPABLO 27-04-2006 15:40:56

:D si... este inglish-Spanish q yo manejo me traiciona mucho... Gracias por la corrección ;)


La franja horaria es GMT +2. Ahora son las 01:01:35.

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