| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mie 23 Mar, 2005 11:26 am Asunto: Cambiar tipo de datos de un campo |
|
|
Tengo una tabla en paradox7 y en ella tengo dos campos con tipo de datos SHORT. Me gustaría que al pulsar un botón en mi programa se comprobara el tipo de datos de esos dos campos y cambiarlo a NUMBER. He intentado con sentencias SQL con Alter Table pero no me ha resultado. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Jue 24 Mar, 2005 11:10 pm Asunto: |
|
|
Lo puedes hacer con varias sentencias SQL si es que no te permite hacerlo directamente, la posible idea es como sigue:
La idea:
- Te creas un nuevo campo del tipo que quieres.
- Copias todos los datos del viejo campo al nuevo campo mediante una instrucción UPDATE haciendo el casting oportuno si es que te hace falta.
- Luego borras el antiguo campo de la tabla.
- Y posteriormente renombras el nuevo campo al antiguo.
La idea en SQL.
ALTER TABLE tabla ADD campo_nuevo nuevo_tipo;
UPDATE tabla SET campo_nuevo=CAST(campo_viejo AS nuevo_tipo);
ó
UPDATE tabla SET campo_nuevo=campo_viejo; (si se permite hacerlo).
ALTER TABLE tabla DROP campo_viejo;
ALTER TABLE tabla RENAME campo_nuevo TO campo_viejo;
En fín no sé si lo soportará tu gestor yo no uso Paradox.
Suerte!
Por supuesto esto solo una sugerencia, y desde luego solo si tu SGBD no te permite cambiar el tipo directamente. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Vie 25 Mar, 2005 12:46 am Asunto: |
|
|
Muchísimas gracias XyVy , Tu sugerencia ha sido crucial para poder resolverlo. Finalmente mi SGBD no soporta RENAME así que he tenido que hacerlo así:
| Código: |
ALTER TABLE servicios add nuevo_campo float
UPDATE servicios SET nuevo_campo=CAST(festivas as float)
ALTER TABLE servicios DROP festivas
ALTER TABLE servicios ADD Festivas float
UPDATE servicios SET Festivas=nuevo_campo
ALTER TABLE servicios DROP nuevo_campo
|
En lugar de usar RENAME (que no lo soporta mi SGBD) he tenido que alargar un poco más añadiendo campos y eliminándolos posteriormente pero lo importante es que ha funcionado y sin tu ayuda no lo habría hecho, así que ... Muuuuuuuuuuchas gracias. Salud y buen rollito para todos. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Vie 25 Mar, 2005 10:07 am Asunto: |
|
|
Ok has cogido mi solución y la has elevado al cuadrado!! Genial, la verdad es que no pensé en hacerlo sin renombrar y era igual de tonto!
Venga gracias, ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
|