// Strukturanpassung von Adressen.DB (Freifeld1..4)
UP_DBActiv(Tab2, SessN, DataPath, fnAdr);
// TTable Tab2 öffnen
if Tab2.FindField('
Freifeld1') =
nil then begin // wenn Feld Freifeld1 nicht gefunden
AppFld(Tab2, '
Freifeld1', ftString, 60);
// DB-Struktur mit neuen Namen ergänzen
AppFld(Tab2, '
Freifeld2', ftString, 60);
AppFld(Tab2, '
Freifeld3', ftString, 60);
AppFld(Tab2, '
Freifeld4', ftString, 60);
// danach Index für DB neue aufbauen
UP_DBActiv(Tab1, SessN, SysPath, fnDBIdx);
FAllgUP2.UP_GenIdx(Tab1, Tab2, ChangeFileExt(fnAdr, '
'));
Tab1.Close;
end;
Tab2.Close;
procedure TFUPK.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;
FInput.lblRecNo.Caption := IntToStr(qtab.RecordCount) +cblk+ FU(cdatensaetze);
ztab.DatabaseName := tab.DatabaseName;
ztab.SessionName := SessN;
ztab.TableType := ttParadox;
ztab.TableName := '
tmp_' + tab.TableName;
ztab.FieldDefs.Clear;
//Tabellenstruktur übernehmen
for i:=0
to qTab.Fields.Count-1
do
ztab.FieldDefs.Add( qTab.Fields[i].FullName,
qTab.Fields[i].DataType,
qTab.Fields[i].Size,
qTab.Fields[i].Required);
try
//neue Felder hinzufügen
ztab.FieldDefs.Add(fldname, fldtyp, fldsize, false);
ztab.CreateTable;
qtab.Active:=false;
ztab.Active:=false;
// FInput nur für Anzeige eines Textes
FInput.Tag := 102;
FInput.lblHinw102.Caption := FU(cdaten)+cstruktur +cblk+ cvon +cblk+ qtab.TableName +cblk+ cwird +cblk+ cangepasst;
FInput.lblRecNoText.Caption := FU(cbitte) +cblk+ cwarten +cblk+ c4pkt+c4pkt;
FInput.Show;
Batchmove1.Mode:=batAppend;
i := Batchmove1.RecordCount;
Batchmove1.Source := qtab;
Batchmove1.Destination := ztab;
Batchmove1.Execute;
FInput.Hide;
// Showmessage('ztab : ' + ztab.TableName); // nur für Test
// Showmessage('qtab: ' + qtab.TableName);
alterTabellenName:=qTab.TableName;
qTab.Active:=false;
qTab.DeleteTable;
ztab.RenameTable(alterTabellenName);
ztab.Active:=False;
except
qtab.Active:=false;
ztab.Active:=false;
end;
finally;
//wird auf jeden Fall ausgeführt, auch bei exit
qtab.Close;
ztab.Close;
qtab.Destroy;
ztab.Destroy;
end;
end;