Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error al crear una columna nueva en una tabla (https://www.clubdelphi.com/foros/showthread.php?t=97086)

identsoft 04-12-2024 11:14:07

Error al crear una columna nueva en una tabla
 
Hola a todos:
Intento crear una columna nueva en una tabla y me da el error "conversion error from string '0'"
Para crearlo , el código delphi que utilizo es : sqlvarios .text := " ALTER TABLE add NOMBRECAMPO varchar(4)".

Si lo hago a través de Flamerobin el error que da es :

SQL Message : -413
Overflow occurred during data type conversion
Engine Code : 335544334
Engine Message : conversion error from string "0"

Utilizo Delphi XE7 y FIREBIRD 3.0

Alguien sabe que puede ser?
Gracias a todos

pgranados 04-12-2024 15:47:06

No estas especificando la tabla.
Código SQL [-]
ALTER TABLE NombreDeLaTabla ADD NombreDelCampo VARCHAR(1);

identsoft 04-12-2024 15:56:50

perdón, ha sido un lapsus, sí que está incluido el nombre de la tabla
sqlvarios .text := " ALTER TABLE nombretabla add NOMBRECAMPO varchar(4)"
sqlvarios.execSQL

y sigue dando el mismo error

pgranados 04-12-2024 15:59:35

Cita:

Empezado por identsoft (Mensaje 560441)
perdón, ha sido un lapsus, sí que está incluido el nombre de la tabla
sqlvarios .text := " ALTER TABLE nombretabla add NOMBRECAMPO varchar(4)"
sqlvarios.execSQL

y sigue dando el mismo error

Que componente estas usando? Yo uso Firedac con Firebird 2.5 y nunca he tenido ningun problema.

Código Delphi [-]
FDQuery.ExecSQL('ALTER TABLE MiTabla ADD MiCampo VARCHAR(4);');

identsoft 04-12-2024 16:08:10

Utilizo los DBExpres en este caso sqlQuery
Yo tampoco había tenido este problema hasta ahora. De echo, esta aplicación tiene casi 200 tablas y algunas de ellas con muchos campos. En concreto, en este caso la tabla tiene 116 campos y muchos de ellos creados a través de sqlquery.
Pero el problema también me lo da al intentar crear una columna a través de FLAMEROBIN por lo que no creo que sea un problema del componente
Gracias por contestar.

Casimiro Noteví 04-12-2024 17:43:21

Pásanos, si quieres la estructura de la base de datos / tabla para probar.

identsoft 05-12-2024 11:14:49

Gracias a todos por contestar.
Parece que el problema no es de la estructura de la BD sino de los datos en sí.
He probado a crear los campos sobre otra BD de otro cliente, pero con la misma estructura y ha funcionado, también lo he probado sobre Firebird 2.5 ( de otro cliente pero con la misma estructura de la BD) y también funciona.
Conclusión: el alter table es correcto, la BD está bien y ahora falta encontrar el / los registros que no son correctos, p.e. campos not null que sí están a null, fechas con formato no adecuado, etc...

De nuevo gracias a todos.

Casimiro Noteví 05-12-2024 11:19:05

Ah, que la tabla tiene datos, entonces ese es el problema, busca por ahí.

Neftali [Germán.Estévez] 05-12-2024 12:09:59

Seguramente en una tabla vacía funcione.
Si la tabla tiene datos y es un campo NOT NULL deberás hacerlo en varios pasos.

1) Mover todos los datos a otra tabla
2) Borrar el contenido de esa
3) Asignar valor por defecto
4) Volver a volcar todos los datos a la tabla original.


navbuoy 08-12-2024 12:52:20

y REZAR neftali..... rezar porque todo el volcado salga bien

Casimiro Noteví 08-12-2024 13:57:14

Si sabes que el problema es un campo null entonces dale un valor predeterminado según el tipo de campo.
Ejemplo:
Código SQL [-]
update tbClientes set nombre='' where nombre is null

Neftali [Germán.Estévez] 09-12-2024 09:10:23

Cita:

Empezado por navbuoy (Mensaje 560566)
y REZAR neftali..... rezar porque todo el volcado salga bien

Eso siempre...
:D:D:D


La franja horaria es GMT +2. Ahora son las 05:02:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi