Ver Mensaje Individual
  #2  
Antiguo 12-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola tarco35.

Un detalle; cotejar la existencia de la columna comparando el resultado de la función FindField con nil, te puede dar problemas ante un involuntario doble intento de creación.

Creo que es mas seguro hacerlo de este modo:
Código Delphi [-]
function ExistsField(aDataSet: TDataSet; const aFieldName: string): Boolean;
var
  TS: TStrings;
begin
  Result := False;
  TS := TStringList.Create;
  try
    aDataSet.GetFieldNames(TS);
    Result := TS.IndexOf(aFieldName) <> -1;
  finally
    TS.Free;
  end;
end;

El código para agregar una columna quedaría mas o menos así:
Código Delphi [-]
...
begin
 if not ExistsField(TablaTextos, 'TEXTO') then
  begin
    TablaTextos.Close;
    SQLReestructuraTabla.Close;
    SQLReestructuraTabla.SQL.Text := 'ALTER TABLE TU_TABLA ADD TEXTO VARCHAR(10)';
    SQLReestructuraTabla.ExecSQL;
    TablaTextos.Open;
  end;
end;

Y para eliminarla:
Código Delphi [-]
...
begin
  if ExistsField(TablaTextos, 'TEXTO') then
  begin
    TablaTextos.Close;
    SQLReestructuraTabla.Close;
    SQLReestructuraTabla.SQL.Text := 'ALTER TABLE TU_TABLA DROP TEXTO';
    SQLReestructuraTabla.ExecSQL;
    TablaTextos.Open;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita