Entwickler-Ecke
Datenbanken - TTable und FieldDefs
RedArcus - Do 07.05.09 09:45
Titel: TTable und FieldDefs
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 - 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:
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 - 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ß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!