Einzelnen Beitrag anzeigen

DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#37

Re: Feld an den Anfang einer Tabelle hinzufügen

  Alt 13. Jul 2003, 16:36
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
  Mit Zitat antworten Zitat