Autor Beitrag
RedArcus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Win Vista; Windows7; Win10
D5 Prof; Delphi XE5; Delphi Tokyo
BeitragVerfasst: Do 07.05.09 09:45 
Guten Morgen,

habe ein Problem mit TTable. Bei einer TTable habe ich alle Felder der Datenbank in das Fenster FieldDefs(doppeltklick auf TTable) eingetragen. Da sich die Datenbank mittlerweile um weitere Felder erweitert hat, die aber nicht unbedingt schon zur Verfügung stehen, möchte ich die noch fehlenden Felder, falls in der DatenBank schon vorhanden, zur LAUFZEIT in die FieldDefs-Liste aufnehmen. Gibt es da eine Möglichkeit?

Vielen Dank
Gruß Hans
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 765
Erhaltene Danke: 130



BeitragVerfasst: Do 07.05.09 18:17 
Das Aufnehmen in die FieldDefs-Liste geht mit Add, danach passiert leider nichts.
Wenn Du anschließend CreateTable aufrufst, wird die Tabelle mit der neuen Struktur erstellt, leider werden dabei alle Daten gelöscht:(

Ich kenne keine andere Methode, würde aber im Ernstfall über eine zweite Tabelle "umschaufeln", das geht mit einer Schleife relativ einfach. Hier nur mal so als Schnipsel zum Weiterbasteln:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var i, Feldgroesse : Integer;
    Felddefinition : TFieldDef;
    Feldname, Wert, Ordner, Dateiname : String;
    Feldtyp : TFieldType;
begin
Table1.Open;
while not Table1.Eof do
  begin
    Table1.Edit;
    for i:=0 to Table1.FieldDefs.Count-1 do
      begin
        Felddefinition:=Table1.FieldDefs[i];
        Feldname:=Felddefinition.Name;
        Feldtyp:=Felddefinition.DataType;
        Feldgroesse:=Felddefinition.Size
        ...
      end;
    Table1.Next;
  end;
Table1.Close;

ub60
RedArcus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Win Vista; Windows7; Win10
D5 Prof; Delphi XE5; Delphi Tokyo
BeitragVerfasst: Fr 15.01.10 12:25 
Hallo,

bin zwar etwas spät dran mit diesem Thema, das Problem ist aber immer noch offen.
In der FieldDefs-Liste sind, so weit ich weiß, ja nur die Felder der DB-Datei enthalten. In meiner Feldliste (TTable -> doppeltclick) habe ich aber noch zusätzliche berechnete Felder (deshalb musste ich diese Liste auch füllen). Wenn ich meine Datenbank jetzt um ein Feld erweitere muss dieses Feld in die Felderliste eingefügt werden, damit es erkannt wird. Ich untersuche vor dem Öffnen der Datenbank diese und lasse das entsprechende Feld ggf. vorher erzeugen. Scheitert das, (warum auch immer) möchte ich die Datenbank trotzdem öffnen können. Damit das möglich ist muss ich das neue Feld (das ich beim Entwurf schon in die FelderListe eingefügt hatte) wieder entfernen.
Deshalb nochmal meine Frage, besteht eine Möglichkeit diese Liste zu verändern?

Vielen Dank
Gruß