Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Felder nachträglich erweiterter Tabellen definieren (https://www.delphipraxis.net/42656-felder-nachtraeglich-erweiterter-tabellen-definieren.html)

Kevin 22. Mär 2005 10:03

Datenbank: Advantage Local Server • Version: 7.1 • Zugriff über: Advantage TDataSet

Felder nachträglich erweiterter Tabellen definieren
 
Hallo zusammen,

entgegen meiner Profilangabe geht es hier noch um eines meiner D7-Projekte.


Suchfunktion des Boards...

...habe ich selbstverständlich bemüht. Bin allerdings, vielleicht aufgrund der falschen Suchkriterien, nicht auf eine brauchbare Lösung gestossen... :?


Situation:

Ich erweitere eine oder mehrere Tabellen um ein oder mehrere Felder. Da die Anwendung diese neuen Felder ja noch nicht kennen kann, müssen die Felddefinitionen um die entsprechenden Felder erweitert werden.


Grundgedanke:

Ich muß nun wohl beim Anwendungsstart alle Tabellen, die evtl. geändert sein könnten, überprüfen, ob neue Felder hinzugefügt wurden oder nicht, um dann die neuen Felder in die Definition zu übernehmen.


Problem:

Da es für mich das erste Mal ist, daß sich Tabellen ändern, habe ich keine Ahnung wie ich das anstellen soll... :pale:


Fragen:
  • Wie erkenne ich überhaupt, ob neue Felder hinzugefügt wurden?

    und
  • Wie muß/sollte ich dann weiter vorgehen?



Ich zähl auf Euch :thumb:

franktron 22. Mär 2005 10:07

Re: Felder nachträglich erweiterter Tabellen definieren
 
Da ich leider nicht weis ob der Advantage Local Server das kann versuchs einfach mal.

SQL-Code:
ALTER TABLE tabname ADD feldname CHAR(20);
Kannst natürlich auch andere feldtypen nehemn.

Kevin 22. Mär 2005 14:01

Re: Felder nachträglich erweiterter Tabellen definieren
 
Danke Frank, das werde ich mal testen. Hilft mir aber im ersten Schritt nicht weiter, da ich ja zunächstmal erkennen (lassen) muß, welche Felder dazugekommen sind...

Union 22. Mär 2005 14:15

Re: Felder nachträglich erweiterter Tabellen definieren
 
Wenn Du auf die Felder zugreifen willst, brauchst Du sie doch nicht als Objekte zu definieren. Es reicht doch FieldByName().

Kevin 22. Mär 2005 14:35

Re: Felder nachträglich erweiterter Tabellen definieren
 
Aber woher hat die Anwendung dann die Namen der neuen Felder?

Union 22. Mär 2005 14:48

Re: Felder nachträglich erweiterter Tabellen definieren
 
Zitat:

Zitat von Kevin
Aber woher hat die Anwendung dann die Namen der neuen Felder?

Wenn Du mit TDataSet Komponenten arbeitest, gibt es zwei Möglichkeiten:
Du liest die Felder mit einem Doppelklick und dem Feldeditor ein. Dann hast Du eine persistente Liste von Feldern. Oder Du läßt die Feldliste leer, dann wird diese intern beim Öffnen der Tabelle generiert und Du kannst auf jedes Feld zugreifen z.B. per FieldByName. Auch ein DbGrid holt sich dann standardmässig alle Felder zur Anzeige.

Jetzt ist die Frage: Soll Dein Programm beliebige Tabellen öffnen können oder sind dem Programm die Tabellenstrukturen bekannt? Wenn nicht, solltest Du die Feldlisten leer lassen. Wenn ja, dann musst Du die neuen Felder hinzufügen, wenn Du sie brauchst, z.B. für Displayformat, Caption etc.

Kevin 22. Mär 2005 15:12

Re: Felder nachträglich erweiterter Tabellen definieren
 
Ok, etwas genauer:

Das Programm greift auf einige Tabellen zu, die mit der Zeit vergrößert werden, also neue Felder/Spalten erhalten. Bisher habe ich die Feldliste immer selbst erstellt ("liest die Felder mit einem Doppelklick und dem Feldeditor ein"), das Programm neu erzeugt und weitergegeben. Das ist aber ziemlich unpraktisch und natürlich auch irgendwie unnötig.

Wenn ich dann per FieldByName auf ein neues Feld zugreife, kommt es zu einem Fehler, da das Feld nicht bekannt ist.

alcaeus 22. Mär 2005 15:22

Re: Felder nachträglich erweiterter Tabellen definieren
 
Wie gesagt,

lass die Felddefinition einfach leer, und mach einen "Select *" im DataSet. Das sollte dann 100%ig mit FieldByName klappen.

Greetz
alcaeus

Kevin 22. Mär 2005 15:30

Re: Felder nachträglich erweiterter Tabellen definieren
 
Prima, dann werde ich das nachher mal testen. Klingt nach einer ziemlich einfachen Lösung :thumb: Ich geb dann Bescheid, wie es funktioniert hat.

Danke schonmal an alle :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz