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)
-   -   Problemas con los acentos solo al editar (https://www.clubdelphi.com/foros/showthread.php?t=89244)

Espartaco 21-10-2015 20:56:54

Problemas con los acentos solo al editar
 
Hola amigos, pues eso. Soy nuevo en Interbase, pero gracias al tutorial de Jose Luis Garcí del videoclub estoy consiguiendo las cosas. Pero me ha surgido un problema y por mas que busco en el foro no encuentro solucion.
El problema es que usando Interbase en Delphi XE3, cuando doy de alta un registro no tengo problemas con los acentos, me los acepta y los graba ya que he usado ISO8859_1. Pero cuando intento editar el registro, o grabar el mismo sin tocarlo al grabar me da el error
Error: arithmetic exception, numeric overflow, or string truncation

Ya se que este problema es por los acentos, pero porque me admite agregar el registro y sin embargo no me permite editarlo o grabarlo sobre si mismo si algun campo contiene acentos.

Muchas gracias por vuestra atencion y espero vuestra ayuda.

Casimiro Notevi 22-10-2015 00:03:42

Ese error puede ser porque intentes grabar una cadena de texto de mayor longitud que el permitido por el campo.

Espartaco 22-10-2015 10:43:43

Gracias Casimiro por la respuesta.

No, no es el caso porque por ejemplo, si edito el registro, aunque sea en IBConsole, y cuando lo creé puse un nombre con acento, y al editarlo no lo toco, cuando quiero grabarlo me da el error.

Por ejemplo:
Al dar de alta:
Nombre-> RAMÓN
Apellidos-> CASTILLO CANTERO

Al Editar:
Nombre-> RAMÓN
Apellidos-> CASTILLO CANTERO

Como ves sin modificar nada. Pues si le digo que lo grabe, me da el error. Increíble.
Espero haberme explicado.

Espartaco 26-10-2015 18:51:08

Hola de nuevo, viendo un hilo en el que contesta Casimiro, comenta que él no utiliza nunca el dilaecto 8859_1 ni ninguno y que nunca ha tenido problemas.
Efectivamente he echo lo mismo que él y se me ha solucionado el problama. Lo dejo aqui por si a alguien le ocurre lo mismo que lo pueda solucionar.

Muchas gracias por todo, y un saludo.

Casimiro Notevi 26-10-2015 19:06:50

Efectivamente, no uso ninguno en la base de datos.
Solamente lo uso en algún campo que me interese.

mamcx 26-10-2015 20:06:32

"No uso ninguno"?

No entiendo, no EXISTE forma de no usar ninguno.... mas bien "uso el que esta por defecto"? No?

Y por lo demas, utf-8 es la opcion mas recomendada.

PD:

El Mínimo Absoluto que Todos los Desarrolladores Deberían Conocer Sobre Unicode y Codificaciones.

PD.2:

Y si no saben cual es el "por defecto", es muy probable que mas tarde tengan problemas, y puede que ni se den por enterado... Pa' rematar hay que sincronizar los encoding en toda la cadena de la app.

PD.3:

Y esto es lo que encontre sobre este error especifico:

https://stackoverflow.com/questions/...-key-specified

Casimiro Notevi 26-10-2015 20:22:03

Ninguno :)
Desde 1998 que uso firebird (al principio interbase) siempre he dejado en blanco ese dato. Aunque sí lo especifico para algún campo en particular que necesito, por ejemplo, ordenar alfabéticamente aunque tenga mayúsculas, minúsculas, acentos, etc.
Pero a la base de datos, no.


mamcx 26-10-2015 21:12:47

Wow!

https://stackoverflow.com/questions/...-character-set

Esta no me la esperaba:

Cita:

Basically it means database must be used in the same language environment it was created on.
Que comportamiento por defecto mas errado! Asi que eso lo define el cliente???

Y no se ve el problema, porque si esa BD es solo accedida por el mismo cliente, pues todo parece ok!

P.D: Osea, que la respuesta es que se almacena en "binario" y es responsabilidad del programador asegurarse de no cambiar su forma de acceder a esta...

P.D.2: Lo de "errado" ya que una BD empresarial no deberia depender del cliente, aunque si es embeida se podria considerar aceptable...

Casimiro Notevi 26-10-2015 21:21:18

Si se crea la BD con un charset determinado, ese es el que hay que usar para acceder a ella.
Si miras sus propiedades puedes ver qué charset se usó para crearla.
No hay ningún problema, nunca ha habido problema.


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

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