Nachdem ich im
OI Table1.Active auf false gesetzt hatte funktioniert es jetzt endlich.
Der Code zum hinzufügen einer AutoInc Spalte an den Anfang einer
Paradox-Tabelle sieht dann so bei mir aus (vielleicht gehts auch noch eleganter , aber so funktionierts bei mir zumindest) :
Delphi-Quellcode:
procedure TForm1.erzeugeClick(Sender: TObject);
var i:Integer;
alterTabellenName:String;
begin
Table1.Active:=true; //Table1 geöffnet
with Table2 do
begin
Active := false; //Table2 geschlossen
DatabaseName := 'STM';
TableType := ttParadox;
TableName := 'mitZaehler.db';
{ Dann die Felder in der Tabelle beschreiben }
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Zaehler';
DataType := ftAutoInc;
Required := True;
for i:=0 to Table1.Fields.Count-1 do
//Tabellenstruktur übernehmen
Table2.FieldDefs.Add( Table1.Fields[i].FullName , Table1.Fields[i].DataType,
Table1.Fields[i].Size, Table1.Fields[i].Required);
end;
end;
CreateTable;
end;
Table1.Active:=false;
Table2.Active:=false;
BatchMove.Mappings.Clear;
for i:=0 to Table1.Fields.Count-1 do
Batchmove.Mappings.Add(Table1.Fields[i].FullName + '=' + //Mappingsarray füllen
Table1.Fields[i].FullName );
Batchmove.Mode:=batAppend;
Batchmove.Execute;
Showmessage('Table2: ' + Table2.TableName);
Showmessage('Table1: ' + Table1.TableName);
alterTabellenName:=Table1.TableName;
Table1.DeleteTable;
Table2.RenameTable(alterTabellenName);
Table2.Active:=False;
Table2.AddIndex('','Zaehler',[ixPrimary]);
end;
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles