Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ausgeben von einer Datenbank mit TTreeView (https://www.delphipraxis.net/28782-ausgeben-von-einer-datenbank-mit-ttreeview.html)

ZeroQool007 30. Aug 2004 08:56


Ausgeben von einer Datenbank mit TTreeView
 
Moin KOllegen!

Hab folgendes Problem: Möchte diese Tabelle bzw. Datenbank mit der Komponente TTreeView ausgeben:


Hab bereits wie ein verrückter gegoogelt, aber nichts wirklich passendes gefunden....die Meisten benutzen Fremdkomponente wie zB VirtualTreeView ect., aber ich möchte bzw ich muss es von meinem Chef aus mit der TTreeView machen....WEr kann bitte helfen bzw auch ein paar Schnipsel anbieten...VIelen Dank im voraus....

ibp 30. Aug 2004 10:09

Re: Ausgeben von einer Datenbank mit TTreeView
 
... wo ist denn genauer dein problem? die daten zu sortieren, damit man diese den items zu weisen kann oder in der erstellung des trees?

ibp 30. Aug 2004 10:10

Re: Ausgeben von einer Datenbank mit TTreeView
 
... ach so herzlich willkommen in der dp :dp:

ZeroQool007 30. Aug 2004 10:11

Re: Ausgeben von einer Datenbank mit TTreeView
 
Die Darstellung des Trees, die Sortierung in Items usw. bzw die komplette Umsetzung der Aufgabe in die Praxis.....sorry

ibp 30. Aug 2004 10:14

Re: Ausgeben von einer Datenbank mit TTreeView
 
... was hast du denn schon ?

ZeroQool007 30. Aug 2004 10:16

Re: Ausgeben von einer Datenbank mit TTreeView
 
Bis auf das Struktogramm mehr oder weniger nichts...wie gesgt bin FIAE im 1. Lehrjahr...1.Monat u hab halt diese Aufgabe bekommen.... :( Halt die Umsetzung ist etwas schwer zur Zeit für mich, da ich leider nicht so viel Erfahrung in Delphi habe...

ibp 30. Aug 2004 10:26

Re: Ausgeben von einer Datenbank mit TTreeView
 
1. bekommst du denn die daten aus der db?
2. die daten solltest du dann nach der parent-id-spalte sortieren, kann man schon beim abrufen der daten machen, jedenfalls sieht es so aus, als wenn die unterkategorie eine größere id hat als die des parent
3. dann könntest du den baum erstellen
und 4.

hier im forum gibt es eine tolle suchfunktion und gute tutorien mit denen du anfangen könntest!

grüsse rené

ZeroQool007 30. Aug 2004 10:31

Re: Ausgeben von einer Datenbank mit TTreeView
 
Die Daten bekomm ich über die ADODataSet per SQL Anweisung raus:
Delphi-Quellcode:
select * from tblArtKategorie
order by intArtKatID, intArtKatParentID
Ich hab schon bereits im Board gesucht, aber nichts wirklich passendes gefunden...die Meisten benutzen andere KOmponenten und deshalb die Probs beim Darstellen des Baumes... :(

Jelly 30. Aug 2004 10:32

Re: Ausgeben von einer Datenbank mit TTreeView
 
Hallo,

da gehst du am besten rekursiv durch deine Tabelle, damit du deinen Baum aufbauen kannst... Angefangen wird, indem du dir einen Stammknoten bildest, und dich auf diesen positionierst. Das wär bei dir
SQL-Code:
select * from tabelle where intArtKarID = 0
und setzt dann ID := intArtKatID ;

Dann muss du folgende Abfrage rekursiv durchlaufen:
1.
SQL-Code:
select * from Tabelle where intArtKatParent = :ID
2. Eintrag in Tabelle einfügen, mit Parent :ID
3. ID := intArtKatID (hier dann rekursiver Aufruf)
4. auf nächsten Eintrag in deinem Resultset der Abfrage gehen und zurück zu Punkt 1., bis du am Ender deines Resultset angelangt bist

So würd ichs zumindest machen.

Gruß,
Tom

Igotcha 30. Aug 2004 10:35

Re: Ausgeben von einer Datenbank mit TTreeView
 
Erstmal ist folgende, grundsätzlich Frage zu klären, die eine mögliche Lösung betrifft:

Liegen die Hauptknoten (intArtKadID) immer in sortierter, aufsteigender Reihenfolge vor? Wenn nein, solltest Du das erstmal durch eine geeignete Sortierung in der Abfrage erreichen (erleichtert den späteren Vorgang erheblich).

Ich mache es (zwar mit einem VirtualTreeview) so:

- ich lese alle Datensätze ein, dann werden diese in einer Schleife abgearbeitet
- ist der aktuelle Knoten ein "root"-Knoten, dann als Root setzen (root-Kennzeichen ist in der DB hinterlegt)
- ist der aktuelle Knoten ein "child", dann als Child des betreffenden Roots anhängen (durch die vorherige Sortierung vermeidest Du, dass es ein Child geben könnte, wozu noch kein root-Knoten existiert)

Bei der normalen Treeview-Komponente gibt es jetzt das Problem, wo Du diese Relation speicherst, denn Du benötigst dazu mindestens 2 Informationen (KnotenID und Parent/Child-ID). Dazu gibt es die möglichkeit, diese Informationen in einer gesonderten Datenstruktur, die Du dann mittels "Tag" mit dem jeweiligen Node verknüpfst, zu hinterlegen - musst Du aber dann auch separat abspeichern.

Grds. rate ich Dir (trotz Deines Chefs) vom normalen Treeview für solche Aufgaben ab. Hintergrund: Du kannst nur die Abhängigkeit darstellen, aber keine zusätzlichen Informationen anzeigen, wie z.B. Anschaffungskosten, Standort, etc. Dies wäre eine Mischung aus TV und Listview - und genau das bietet der VirtualTreeview.

Schau Dir dazu mal den Windows Datei Explorer an. Links hast Du die Ordnerabhängigkeiten und rechts die Ordnerinhalte - sehr unschön für eine Anwendung, wie Du sie planst. Alternativ kann man evtl. Zusatzinformationen noch in einer separaten Form anzeigen lassen - noch unschöner ;-)

Gruß Igotcha


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.
Seite 1 von 4  1 23     Letzte »    

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