Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Modificar una estructura Paradox

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Modificar una estructura Paradox Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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 Wink :
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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¡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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.