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 19-04-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 109
Poder: 19
andressanchez Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 20-04-2006
cahp cahp is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 90
Poder: 22
cahp Va por buen camino
Hola, seguramente estas intentando poner un caracter no permitido en el charset que pusiste al crear el campo.

Saludos.
Responder Con Cita
  #3  
Antiguo 20-04-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 109
Poder: 19
andressanchez Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 20-04-2006
cahp cahp is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 90
Poder: 22
cahp Va por buen camino
lo unico que se me ocurre es ir acotando la consulta hasta averiguar que registro
es.

Que charset estas usando?

Saludos.
Responder Con Cita
  #5  
Antiguo 20-04-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 109
Poder: 19
andressanchez Va por buen camino
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?
Responder Con Cita
  #6  
Antiguo 20-04-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 109
Poder: 19
andressanchez Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 23-04-2006
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
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''' ;
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #8  
Antiguo 26-04-2006
andressanchez andressanchez is offline
Miembro
 
Registrado: jul 2005
Ubicación: Sando Domingo, Rep. Dom.
Posts: 109
Poder: 19
andressanchez Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 26-04-2006
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 27-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 27-04-2006
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
si... este inglish-Spanish q yo manejo me traiciona mucho... Gracias por la corrección
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Stack Overflow agonzalez Varios 5 08-12-2006 22:26:46
Error: arithmetic exception, numeric overflow, or string truncation burasu Conexión con bases de datos 3 22-09-2005 15:48:29
Numeric (12, 4) en Delphi 7 oliverinf Firebird e Interbase 3 18-12-2004 00:02:40
Error: BCD Overflow bismarck_sierra Conexión con bases de datos 2 20-06-2004 01:34:44
Stack Overflow Mariana Varios 14 30-10-2003 11:37:47


La franja horaria es GMT +2. Ahora son las 04:10:24.


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