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


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Sab 26 Nov, 2005 11:34 am Asunto: Modificar una estructura Paradox |
|
|
Buenas a todos después de muchos meses sin entrar aquí. Tengo un pequeño problema que no sé como resolver. Vamos a ver: Necesito modificar en tiempo de ejecución la estructura de uan tabla Paradox que ya está cargada. Es esto:
| Cita: | | Tengo que pasar un campo llamado domicilio, de tipo string y 30 posiciones ampliando el tamaño a 50 posiciones. |
¿Cómo puedo hacerlo? Por más vueltas que he dado no encuentro la manera y con la ayuda de Builder no me aclaro. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Dom 27 Nov, 2005 4:23 pm Asunto: |
|
|
Hola Angel, bienvenido otra vez. Si no te ha servido lo de este link:
https://cppbuilder.es/viewtopic.php?t=9869&highlight=alter+table
Prueba lo siguiente con sentencias SQL que yo se que de eso tu controlas bastante :
Se añade un nuevo campo temporal a la tabla con el tipo de datos que deseamos así como su número de posiciones:
| Código: |
alter table mi_tabla add campo_temporal varchar(50)
|
pasamos los valores del campo que queremos modificar al campo temporal:
| Código: |
update mi_tabla set campo_a_modificar=campo_temporal
|
Eliminamos definitivamente el campo que tenía 30 posiciones:
| Código: |
alter table mi_tabla drop campo_a_modificar
|
Añadimos un nuevo campo con el mismo nombre del que hemos eliminado pero esta vez corregido a 50 posiciones:
| Código: |
alter table mi_tabla add campo_a_modificar varchar(50)
|
Pasamos los valores del campo temporal al nuevo campo creado que será ya el definitivo:
| Código: |
update mi_tabla set campo_a_modificar=campo_temporal
|
Por último borramos el campo temporal:
| Código: |
alter table mi_tabla drop campo_temporal
|
Espero haberte entendido y que fuera esto lo que buscabas. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 06 Dic, 2005 11:31 am Asunto: |
|
|
¡Hola! Gracias por la respuesta. No se me había ocurrido usar SQL. Al final lo solucioné de otra forma.
1. Copio, por seguridad, la tabla a modificar
| Código: | CopyFile((AnsiString("Tablas.db").c_str(), (AnsiString("NewAux.db").c_str(), FALSE); |
2. Defino los campos que me interesa modificar. Por ejemplo, un campo zona que hay que ampliar de 2 a 4 posiciones. Para ello me creado un TTable llamado tEntrada con esta tabla. Tablas.db
| Código: | tEntrada->FieldDefs->Add("Zona", ftString, 4, False);
tEntrada->CreateTable(); |
Esto me crea una tabla vacía con la nueva estructura
3. Ya sólo falta recargar los datos. Aquí si que he usado un query SQL
| Código: | INSERT INTO 'Tablas.db' SELECT * FROM 'NewAux.db' |
4. Y borrar el fichero de respaldo que se creó al principio
| Código: | DeleteFile((AnsiString("NewAux.db").c_str()); |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 06 Dic, 2005 5:05 pm Asunto: |
|
|
Pues si... no conocía los métodos que dices pero si te han servido para tu propósito estupendo. Tomo nota porque es bueno conocer cosas nuevas. Saludos. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
|