Thema: Delphi Feld einfügen

Einzelnen Beitrag anzeigen

Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#3

Re: Feld einfügen

  Alt 28. Jul 2004, 15:36
Hallo Eggimaa,

ich glaube, das wurde hier schon mehrfach diskutiert.

Ich nutze dazu eine kleine Prozedur:

Code:
procedure TFAllgUP.AppFld(tab : TTable; fldname : string; fldtyp : TFieldType; fldsize : integer);
var i:Integer;
    alterTabellenName:String;
    ztab, qtab : TTable;
begin
  tab.Active := false;
  qtab := TTable.Create(self);
  ztab := TTable.Create(self);
  try
    qtab.DatabaseName := tab.DatabaseName;
    qtab.TableName := tab.TableName;
    qtab.SessionName := SessN;
    qtab.Active := true;

    ztab.DatabaseName := tab.DatabaseName;
    ztab.SessionName := SessN;
    ztab.TableType := ttParadox;
    ztab.TableName := '_tmp_' + tab.TableName;

    ztab.FieldDefs.Clear;
    for i:=0 to qTab.Fields.Count-1 do
      //Tabellenstruktur übernehmen
      ztab.FieldDefs.Add( qTab.Fields[i].FullName,
                          qTab.Fields[i].DataType,
                          qTab.Fields[i].Size,
                          qTab.Fields[i].Required);
    //neue Felder hinzufügen
    ztab.FieldDefs.Add(fldname, fldtyp, fldsize, false);
    ztab.CreateTable;

    qtab.Active:=false;
    ztab.Active:=false;

    Batchmove1.Mode:=batAppend;
    i := Batchmove1.RecordCount;
    Batchmove1.Source := qtab;
    Batchmove1.Destination := ztab;
    Batchmove1.Execute;
    alterTabellenName:=qTab.TableName;
    s := qtab.SessionName;
    if ztab.SessionName <> s then begin
      if (FindComponent(ztab.SessionName) is TSession)
        then TSession(FindComponent(ztab.SessionName)).Active := false;
    end;
    if (FindComponent(s) is TSession) then begin
      TSession(FindComponent(s)).Active := false;
    end;

    qTab.DeleteTable;
    ztab.RenameTable(alterTabellenName);
    ztab.Active:=False;

  finally; //wird auf jeden Fall ausgeführt, auch bei exit
    qtab.Close;
    ztab.Close;
    qtab.Destroy;
    ztab.Destroy;
  end;
end;
mfg
eddy
  Mit Zitat antworten Zitat