Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 03-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
yo suelo utilizar esta función para añadir campos a una tabla en ejecución. Se le pasa el nombre de la tabla, el nombre del campo, el tipo del campo y la posición (la función es mejorable, pero bueno, es una opción )

Código:
function CheckCampo(Tabla, Campo, Tipo : String; Posicion: Integer): Boolean;
var
  tCambios   : TIbTable;
  QryCambios : TIbQuery;
begin
   Result := False;
   tCambios := TIBTable.Create(Application);
   try
     tCambios.Database  := BDades.IBDatabase1;
     tCambios.TableName := Tabla;
     tCambios.Open;
     if tCambios.FindField( Campo ) = nil then
     begin
       tCambios.Close;
       QryCambios := TIbQuery.Create(Application);
       try
          QryCambios.Database := BDades.IBDatabase1;
          QryCambios.SQL.Add('ALTER TABLE '+ TABLA + ' Add "'+ CAMPO +'" ' + TIPO );
          try
             QryCambios.ExecSQL;
             BDades.IBTransaction1.CommitRetaining;
             if Posicion >= 0 then
             begin
               if NOT BDades.IBTransaction1.InTransaction then
                  BDades.IBTransaction1.StartTransaction;
               QryCambios.Close;
               QryCambios.SQL.Clear;
               QryCambios.SQL.Add('UPDATE RDB$RELATION_FIELDS SET RDB$FIELD_POSITION=' + IntTostr(POSICION) );
               QryCambios.SQL.Add('WHERE RDB$FIELD_NAME=' + '''' + CAMPO + '''' +
                                  ' AND RDB$RELATION_NAME= ' + '''' + TABLA + '''' );
               QryCambios.ExecSQL;
               BDades.IBTransaction1.CommitRetaining;
               fSplash.ProgressBar1.StepIt;
             end;
             Result := True;
          except
             on e: exception do
               MessageDlg( 'Imposible reestructurar Tabla ' + Tabla +
                     '. No es posible acceder a la tabla '+ BDades.IBDatabase1.Databasename +
                     #13 + e.Message, mtError, [mbOk], 0);
          end;
       finally
         QryCambios.Free;
       end;
     end
     else Result := True;
     if tCambios.Active then tCambios.Close;
   finally
      FreeAndNil(tCambios);
   end;
end;
Espero te sirva
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:37:54.


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