Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Treeview in Firebird-DB (https://www.delphipraxis.net/103462-treeview-firebird-db.html)

Opa Knack 16. Nov 2007 01:48

Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS

Treeview in Firebird-DB
 
Hallo,

sicherlich finde ich irgendwo hier im Forum schon die Antwort, nur war ich (vielleicht auch angesichts der Uhrzeit) bisher nicht in der Lage, die richtigen Suchbegriffe zu definieren.

Also:

Ich habe ein Treeview, in dem ich für die Nodes einen Record definiert habe:

Delphi-Quellcode:
type
  NodeEx = class(TTreeNode)
  private
    _Typ: String;
    _ID: String;
  protected
  public
  published
    property Typ: String read _Typ write _Typ;
    property ID: String read _ID write _ID;
  end;
Diese Treeview möchte ich nun in einer Firebird-Datenbank ablegen und natürlich auch wieder in den laufenden Betrieb umsetzen, wobei die Data-Eigenschaften mit ausgelesen werden sollen. Alle meine bisherigen Lösungsansätze waren - gelinde gesagt - absolut unbrauchbar, was langsam zu rundgenagten Tischkanten führt.

Nun zu meiner Frage: Hat zufälligerweise jemand einen Tipp zur Hand, der seniorengerecht umsetzbar wäre?

Nebenbei bemerkt: Ich habe versucht, das ganze mit dem VirtualTreeView umzusetzen, was aber irgendwie (wahrscheinlich auch aufgrund der geringen Einarbeitungszeit) absolut in die Hose gegangen ist. Schade, hätte die eigentlich lieber verwendet...

Danke und Gruß
Opa

mkinzler 16. Nov 2007 05:38

Re: Treeview in Firebird-DB
 
Was steckt hinter Data?

hoika 16. Nov 2007 06:47

Re: Treeview in Firebird-DB
 
Hallo,

du legst nicht den Treeview ab,
sondern die Daten.

Bei Bäumen wird der Node als

Id, PreId, (Data)

gespeichert.

PreId ist die Id des Parent-Nodes,
bie Root-Nodes steht dort 0.
Sinnvollerweise packt man einen Dummy-Record mit Id=0 und PreId=0
mit in die DB, der natürlich nicht geladen wird.
Wozu ?

Um left joins zu vermeiden.

Such mal in google nach "Baum Interbase",
oder "recursive Interbase"
da hatte ich schon mal was gelesen.


Heiko

Opa Knack 16. Nov 2007 23:58

Re: Treeview in Firebird-DB
 
Hallo,

Danke für den Tipp. Ich habe zwar in Google nichts vernünftiges finden können, aber das mit der PreID ist ja eigentlich ziemlich logisch. Ich werde mich mal daran setzen, das umzusetzen...

Gruß
Opa

omata 17. Nov 2007 00:17

Re: Treeview in Firebird-DB
 
Hallo Opa Knack,

hier und hier gibt es auch noch Überlegungen dazu, ist zwar für MySQL und MsSQL aber vielleicht hilft dir das weiter...

Gruss
Thorsten

mkinzler 17. Nov 2007 07:29

Re: Treeview in Firebird-DB
 
Grundsätzlich sollte ein rekursives Schema mit jedem (richtigen) DBMS möglich sein. Für den VirtualTreeView gibt es auch eine Erweiterung für die Verwendung von Datenbanken.

Opa Knack 19. Nov 2007 00:28

Re: Treeview in Firebird-DB
 
Hallo,

Danke für die Tipps.

Da ich datenbanktechnisch das letzte Mal noch mit Clipper und DBase gearbeitet habe, muss ich mich noch ein wenig eingewöhnen. Ich hatte gehofft, dass es vielleicht schon eine funktionierende Lösung für mein Vorhaben gäbe (nun ja, man ist nun mal bequem), aber anscheinend muss ich wohl noch ein wenig weiterexperimentieren.

Mit dem VST komme ich absolut nicht zurecht. Sicherlich eine tolle Komponente, aber irgendwie kriege ich damit nicht das hin, was ich vorhabe.

Gruß
Opa

mkinzler 19. Nov 2007 06:36

Re: Treeview in Firebird-DB
 
Im Grundsatz unterschiedet sich das Ablegen von rekursiven baumstrukturen in eine DB in FB nicht von dBase. Nur das FB (ab 2.1) mit dem with recursive eine Erweiterung für rekursive Abfragen enthält


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.

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