Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2003
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 24
Jose_Pérez Va por buen camino
Hola Roman:

Me refería a que lo solucionés tal como tú me sugerías en la primera respuesta.

Código:
procedure TfrmPrincipal.ModificarCampo(Tabla, NombreCampo: String; TipoCampo: TFieldType;
                                   Longitud: Integer);
var
  Consulta: String;
Begin

  // Añade un campo temporal con la nueva estructura.
  Consulta:='alter table "'+Tabla+'" add CampoTemp';

  Case TipoCampo Of
       ftBoolean: Consulta:=Consulta+' boolean';
       ftDate: Consulta:=Consulta+' date';
       ftString: Consulta:=Consulta+' char('+IntToStr(Longitud)+')';
       ftInteger: Consulta:=Consulta+' integer';
       ftFloat: Consulta:=Consulta+' numeric';
       End;

  With Datamodulo.qryConsultas Do
       Begin
       Close;
       SQL.Clear;
       SQL.Add(Consulta);
       ExecSQL;
       End;

  // Actualiza el campo temporal con la información del campo a modificar.
  Consulta:='update "'+Tabla+'" set CampoTemp='+NombreCampo;

  With Datamodulo.qryConsultas Do
       Begin
       SQL.Clear;
       SQL.Add(Consulta);
       ExecSQL;
       End;

  // Elimina el campo a Modificar
  Consulta:='alter table "'+Tabla+'" drop '+NombreCampo;

  With Datamodulo.qryConsultas Do
       Begin
       SQL.Clear;
       SQL.Add(Consulta);
       ExecSQL;
       End;

  // Vuelve a crear el campo modificado con la nueva estructura.
  Consulta:='alter table "'+Tabla+'" add '+NombreCampo;

  Case TipoCampo Of
       ftBoolean: Consulta:=Consulta+' boolean';
       ftDate: Consulta:=Consulta+' date';
       ftString: Consulta:=Consulta+' char('+IntToStr(Longitud)+')';
       ftInteger: Consulta:=Consulta+' integer';
       ftFloat: Consulta:=Consulta+' numeric';
       End;

  With Datamodulo.qryConsultas Do
       Begin
       Close;
       SQL.Clear;
       SQL.Add(Consulta);
       ExecSQL;
       End;

  // Actualiza el campo a modificar con la información del campo temporal.
  Consulta:='update "'+Tabla+'" set '+NombreCampo+'=CampoTemp';

  With Datamodulo.qryConsultas Do
       Begin
       SQL.Clear;
       SQL.Add(Consulta);
       ExecSQL;
       End;

  // Elimina el campo temporal.
  Consulta:='alter table "'+Tabla+'" drop CampoTemp';

  With Datamodulo.qryConsultas Do
       Begin
       SQL.Clear;
       SQL.Add(Consulta);
       ExecSQL;
       End;

End;
Un abrazo.

Última edición por Jose_Pérez fecha: 04-01-2005 a las 14:46:36.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:51:29.


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
Copyright 1996-2007 Club Delphi