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
