Office: (Office 2003) Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad

Helfe beim Thema Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Abend Forumaner und Foruminesinnen Windows Vista Access 2003 Ausgangslage: Es existieren diverse Projekte. Für jedes Projekt sind die... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Köbi, 5. März 2008.

  1. Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad


    Guten Abend Forumaner und Foruminesinnen

    Windows Vista
    Access 2003

    Ausgangslage:
    Es existieren diverse Projekte. Für jedes Projekt sind die zugehörigen Dateien in einer eigenen Verzeichnisstruktur gespeichert, wie auf dem beigefügten Screen dargestellt. Die Anzahl der Unterverzeichnisse ist aber nicht bei jedem Projekt gleich, und auch die Tiefe der Verschachtelung ist variabel.

    Nun lese ich für ein oder mehrere Projekte die Dateien in eine Tabelle ein (Dateipfad, Dateiname, Grösse, etc.). Auf die Verzeichnisse und die Dateien habe ich später keinen Zugriff mehr.

    Was ich möchte
    Da die Unterverzeichnisse so schön "sprechende" Bezeichnungen haben, möchte ich nun den Verzeichnisbaum anhand der gespeicherten Daten (Dateipfad, Dateiname) in einem Treeview anzeigen. Mit einem Klick auf das gewünschte Unterverzeichnis sollen in einem Unterformular (Endlos oder Datenblatt) die dazugehörigen Dateien angezeigt werden. Es muss eine Unterformular sein und kein Listview, weil die Datensätze editiert werden sollen.

    Kann mir jemand bei der Geschichte mit dem Treeview helfen? Ich blicke bei diesen einfach nicht durch.

    Danke zum voraus für hilfreiche Antworten.

    :)
     
    Köbi, 5. März 2008
    #1
  2. Hallo Köbi,

    Wenn dem so ist, kannst du doch einfach den Dateipfad, den du in der Datei gespeichert hast als Key verwenden.

    Z.B. C:\Projekte\Maier\Energie hat den Node.Key Energie und .Relativ Maier
    . C:\Projekte\Maier\Energie\Irgenwas hat den Node.Key Irgendwas und .Relativ Energie.

    Zum Anzeigen der Dateien selektierst du einfach nach dem übergeordneten Ordner
     
    petbay, 7. März 2008
    #2
  3. Sebastian Schulz, 7. März 2008
    #3
  4. Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad

    Hallo

    Danke für die Antworten.

    @Sebastian
    Das Beispiel kenne ich, hilft mir aber nicht wirklich weiter, weil ich kein real existierendes Verzeichnis mehr habe. Die Verzeichnisse und Daten liegen auf einem ganz anderen PC.

    @Peter
    Für Dich ist das vielleicht einfach, für mich leider nicht.*frown.gif*
    Wie schon erwähnt, sind mir Treeviews und wie man mit ihnen arbeitet relativ fremd.

    Weisst Du evtl. ein Beispiel oder eine Seite, wo man es lernen kann?

    Für meine Anwendung sehe ich auch ein Problem darin, dass ja die Anzahl Unterverzeichnisse und die Tiefe ihrer Verschachtelung variabel sind. Irgendwie merke ich noch nicht, wie ich den Dateipfad so auseinandernehmen und dann weiterverwursten kann, dass daraus die Reihenfolge der Verzeichnisse abgeleitet werden kann. Also welches Verzeichnis steht am Schluss, wie heisst das übergeordnete usw.
     
    Köbi, 7. März 2008
    #4
  5. Geht es nur um Verzeichnisse und Dateien die darin abgelegt werden
    Dann könntest du wirklich nur die Pfade in einer Tabelle ablegen und diese Aufschlüsseln lassen. Durch die Slashes kannst ja sehr einfach aufteilen. Klar die Tree-View-Erstellung ist dann nicht super-trivial, aber auch nicht extrem schwierig. Sollte mit einer sortierten Abfrage kein grösseres Problem darstellen.

    Ein paar Fragen:
    - Was genau muss editiert werden? ein paar einzelne Felder? mehrere Datensätze 1:N zur Datei?

    Ideen:
    Falls es um recht wenige Infos geht, könntest du diese auch mit einem Trick in einem Array im TreeView ablegen und beim anklicken der Datei diese Daten abfragen und in ein form schreiben lassen, wenn du es updatest, soll sowohl treeview Daten als auch Dateigrundlage upgedatet werden.

    Kommt bissel drauf an was du genau für daten editieren möchtest...
     
    WeinGeist, 8. März 2008
    #5
  6. Sali Weingeist

    Danke für die Antwort.
    Es geht nur um die Verzeichnisse und die Dateien. Auf die Dateien könnte ich sogar verzichten, wenn es möglich ist, diese beim Klick auf ein Verzeichnis im Unterformular zu filtern.

    Editiert werden müssen pro Datensatz (=Datei) nur ein paar Felder, keine 1:n-Geschichten.

    Ich habe mir jetzt eine Erklärung zu den Treeviews geholt
    http://www.access-im-unternehmen.de/...&BeitragID=319

    Aber bis ich da durch bin!

    Wenn Du mir weiterhelfen kannst, evtl. gar mit einem Beispiel *rolleyes.gif* ,könntest Du Dich nachher von meiner Dankbarkeit kaum mehr erholen.
     
    Köbi, 8. März 2008
    #6
  7. Tach,

    Ich gehe davon aus, das es einfacher sein dürfte, die Dateien auch gleich mit ins Treeview zu packen. Dann kannst den Datensatz auch direkt ansprechen und somit entweder Daten aus einem Array im Treeview laden oder aber was wohl einfacher ist, die Source eines Unterfomulars per Code zu bestimmen und dadurch den Datensatz zu übergeben. Dann musst du nämlich nicht noch zusätzlich in einem Endlosformular über irgendwelche funktionen filtern. Natürlich auch alles möglich...

    Gehe ich richtig in der Annahme das Datenstruktur so ist:
    - Ein Datensatz pro Datei, mit komplettem Pfad, bereits vorhanden
    - Die zusätzlichen Felder sind auch in diesem Datensatz enthalten oder wenigstens per 1:1 verknüpfung verfügbar

    TreeView ist eigentlich eine recht einfache, logische Sache, mann muss nur mal durchblicken wies funktioniert mit den Childs. Das geschieht am besten per Try and Error und hinzuname irgend eines Beispiels. *wink.gif*

    Eine Fix fertige Lösung wäre ja fast schon langweilig :P
    Ich aber ma kurz ob ich da was schustern kann! Aber vorher such ma noch nen bissel, das klingt nach etwas, was bestimmt schon einige gepgroggt haben und schon im NEtzt verfügbar sein sollte. *wink.gif*
     
    WeinGeist, 8. März 2008
    #7
  8. Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad

    Hallo

    Die Datenstruktur ist so, wie Du sie beschreibst.

    Wie gesagt, ich versuche mich da einzuarbeiten. Bisher habe ich einfach noch nie mit Treeviews gearbeitet.
    Wäre für die "hinzunahme irgend eines Beispiels" nicht das besonders geeignet, das Du eventuell gerade zusammenschusterst? *biggrin.gif*
     
    Köbi, 8. März 2008
    #8
  9. Grundsätzlich hätte ich schon die idee wie man das machen könnte, ich frage mich nur gerade ob dies am ende auch performant ist, deshalb auch der Hinweis erstmal suchen mit google. Das grundproblem ist hier nicht das es einfach zu machen ist, sondern das es am ende auch einigermassen performant bleibt.

    Faktisch habe ich mir mal folgendes überlegt:
    Einmal das angehen jeden Pfades und dessen ausplittung zur laufzeit, und jeden ordner überprüfen obs ihn auch gibt. Hier habe ich etwas bedenken, dass dies am Ende auch wirklich performant abläuft. Zu programmieren wäre das wohl am einfachsten. Hierbei wäre ich so vorgegangen, dass ich erst den ganzen Pfad exkl. der Datei geguckt hätte obs nen Node gibt --> zbsp. grad im Key oder Tag so ablegen und dann wenn nicht vorhanden rückwärts rechnend alle überprüfen und herausfinden ab wann schon Nodes bestehen.

    Ein andere Ansatz:
    Vorrangig herausfinden welcher Datensatz die grösste tiefe, also meisten unterodner hat, und auf dieser Basis die Anzahl Select Distincts immer auf einen Teil des Strings durchlaufen zu lassen. Aber auch hier habe ich bedenken mit der Performance.

    Noch einer wäre ähnlich wie in Var1, also alle Files durchzulaufen und Pfade sowie Teilpfade in einem Array oder Recordset abzulegen, dann auf doppel rauszufiltern und dann ordnerstruktur erstellen. Sobad dies geschehen ist, die Files in der vorhandenen Struktur integrieren.

    Das schwierige beim TreeView ist nicht die eigentliche Erstellung, sondern die sinnvolle Bereitstellung der Daten und überprüfungen ob der Pfad schon so dasteht oder von anfang an auszuschliessen dass man ihn nicht doppelt erstellen möchte, damit das am Ende auch schnell ist.

    Vielleicht hat ja noch jemand eine gute Idee oder kann sagen welche der Ansätze am ehesten performant gelingen? Vielleicht gibts auch noch bessere Ansätze...
    Ich bin sicher sowas muss schon irgendwo als Beispiel vorhanden sein welches auch auf Performance hin getuned wurde. Und jetzt "einfach" zig Beispiele zu machen, hab ich leider keine Zeit zu. *frown.gif*

    Vielleicht wäre auch gut zu wissen um wie viele Datensätze es sich handelt, wieviele so jährlich hinzukommen etc. Je nach dem muss man sich die Gedanken zur Performance auch gar nicht zwingend soooo ernsthaft machen... Schadet aber in der Regel nicht, weil man häufig in späteren Projekten auch den alten Code wieder einsetzt *wink.gif*

    EDIT: Wenn ich wüsst welcher Ansatz der richtige ist, würde ich das machen!
     
    WeinGeist, 8. März 2008
    #9
  10. Hallo Weingeist

    Danke für Deine Ideen. Vorweg: Es handelt sich nicht um eine grosse Anzahl von Datensätzen, je Projekt vielleicht etwa 200. Und ich muss auch nicht eine grosse Anzahl von Projekten gleichzeitig darstellen, höchstens etwa 10. Das wären dann 2000 Datensätze.

    Ich habe in der Zwischenzeit die Treeview-Geschichte angesehen, und glaube, das Grundprinzip zu verstehen.
    Das Problem sehe ich auch darin, die Knoten anhand des Dateipfades zu bestimmen. Leider ist die Verschachtelungstiefe variabel. Und es ist ja auch durchaus möglich, dass ein Unterverzeichnis leer ist (keinen DS enthält) und erst das nachfolgende Unter-Unterverzeichnis wieder Daten enthält.

    Ich habe zwar schon nach Lösungen gegoogelt, aber ich mach mich da nochmals dahinter.

    Wenn Dir oder sonst einem hilfreicher Geist etwas einfällt, bin ich nach wie vor daran interessiert.

    Vielen Dank, Weingeist, für die Hilfe.
     
  11. Hmm, das sind doch eine ganze Menge, da sollte man schon von Anfang an aufs richtige Pferd setzen. Sont wartet der arme Anwender ne halbe Ewigkeit.

    Das die Verschachtelungstiefe variabel ist, ist nicht wirklich schlimm. sowas sollte man eh immer Variabel gestalen, sonst kannst es für nix brauchen später.

    Du sagst es wären auch leere Ordner vorhanden, sind diese auch als pfad in der gleichen Tabelle abgelegt?

    Da stellt sich mir gleich die nächste Frage, hast du jeden einzelnen Ordnerpfad auch separat, ohne den Dateipfad als Datensatz zu Verfügung, bzw. planst das so? Dann wäre das ganze wohl wieder einfacher, da man einfach sämtliche Datensätze hinzufügt, ohne Rücksicht auf Verluste *wink.gif* Wichtig wäre hier lediglich, das auch die Grundlage dementsprechend stimmt und vorher geprüft ist. Dann braucht es die laufende, zeitraubende Überprüfung nicht.
     
    WeinGeist, 8. März 2008
    #11
  12. Leere Ordner sind nicht als Pfad in der Tabelle enthalten. Diese müsste man aus dem Pfad einer Datei aus dem untergeordneten Verzeichnis ermitteln. Was wohl für Deinen Vorschlag spricht, zuerst die grösste Tiefe zu ermitteln.

    Ist damit gemeint, dass ich zuerst einfach mal jeden Ordnerpfad einlese, ohne Datei? Das liesse sich sicher machen. Und dann?
     
  13. Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad

    Also das ist ja kein Problem wenn so keine Datei abgelegt ist.

    Das war so gemeint: Wenn du in deine Tabelle nicht nur die Dateipfade, sondern auch sämtliche Ordnerpfade ablegen würdest, hättest du folglich sämtliche möglichen verfügbaren Pfade, inkl. deren wo nicht mal in der tiefsten Strutkur eine Datei abgelegt ist. Dadurch könntest auch alle problemlos referenzieren auf den nächst tieferen Key, indem einfach der letzte Teil abgeschnitten wird und als Parent-Key verwendet wird.

    Diese Methode ist natürlich extrem abhängig auf die Grunddaten, also dass diese wirklich zuverlässig komplett vorhanden sind. Fehlt eine kriegst evtl. nur noch müll als Ergebnis.

    Ein Beispiel:
    Für C:\Windows\System32\irgendwas.dll müssten folgende Datensätze vorhanden sein:

    C:\
    C:\Windows\
    C:\Windows\System32\
    C:\Windows\System32\irgendwas.dll

    Dann müsste mann nur jeweils einfach alle Adden, ohne irgendwelchen Stress. Gibt aber halt ne Menge Datensätze hinzu. Schnell wärs aber bestimmt. Wenn jemand aber Datensätze löscht, das hast ein Theater *wink.gif*
     
    WeinGeist, 8. März 2008
    #13
  14. Das sollte sich machen lassen, dass ich die Ordnerpfade nach diesem Muster einlese:

    \PROJEKT_1
    \PROJEKT_1\Abwasser
    \PROJEKT_1\Abwasser\Meteorwasser
    \PROJEKT_1\Abwasser\Meteorwasser\Dach

    Meinst Du das?

    Und jetzt sehe ich gerade, dass Du in der Zwischenzeit Deine Antwort ergänzt hast. Daher die Zusatzfrage, müsste für jeden einzelnen Datensatz dieses Spiel mit den Ordnerpfaden wiederholt werden? Kann man nicht einfach, so wie oben, einmal die Ordnerpfade einlesen, und anhand dieser die Dateien zuordnen?
     
  15. Genau so in der Art.

    Finde es fast noch sinnvoller die Ordnerstruktur-daten separat zu halten und erst ins treeview einfügen und danach die files. Wobei könntest sie aber auch mit einem zusätzlichen Typfeld unterscheiden, dann ist alles in einer Tabelle.

    Einfacher in der Erstellung und performanter wäre es auf alle fälle!

    PS: Ich neige dazu meine antworten öfter zu editieren... *rofl*
     
    WeinGeist, 8. März 2008
    #15
Thema:

Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad

Die Seite wird geladen...
  1. Treeview, Verzeichnisbaum nachbilden aufgrund Dateipfad - Similar Threads - Treeview Verzeichnisbaum nachbilden

  2. Listenfeld per Doppel Klick in Treeview füllen

    in Microsoft Access Hilfe
    Listenfeld per Doppel Klick in Treeview füllen: Hallo an alle, ich habe folgendes Problem. Ich möchte ein einfaches Listenfeld per Doppelklick in einem Treeview füllen. Das SelectedItem des Treeview wird in ein Label übergeben und in den...
  3. Treeview... suche Tipps, Literatur, Beispiele & Erklärungen

    in Microsoft Access Hilfe
    Treeview... suche Tipps, Literatur, Beispiele & Erklärungen: Hallo zusammen, ich möchte mich etwas intensiver mit dem Thema Treeviews befassen und suche Weblinks, Beispiele oder frei zugängliche Literatur dazu. Ziel ist es Daten aus zwei Tabellen...
  4. TreeView umstricken

    in Microsoft Access Hilfe
    TreeView umstricken: Moin allerseits, nach langen will ich mich mal wieder an einer Bastelarbeit versuchen. Bin aber total raus aus der Materie. Hab was in der DB Wiki gefunden was ich gerne hätte. Nämlich eine...
  5. TreeView-Alternative mit MS-Bordmitteln

    in Microsoft Access Hilfe
    TreeView-Alternative mit MS-Bordmitteln: Hallo zusammen, da ich seit letztem Jahr auch viele Probleme mit dem MS-TreeView habe und nach Alternativen gesucht habe, hier eine freie TreeView-Alternative, die vollständig mit MS-Boardmitteln...
  6. Treeview funktioniert nicht mehr ( nicht registriert)

    in Microsoft Access Hilfe
    Treeview funktioniert nicht mehr ( nicht registriert): Hallo, Ich habe hier ein RIESEN Problem. Seit heute Morgen funktionieren keine TreeViews mehr. Wir haben mehrere verschiedene Datenbanken auf unterschiedlichen Rechnern im Netzwerk. Die...
  7. TreeView-Steuerelement mit einer großen Anzahl von Knoten bewirkt eine Ausnahme in Access

    in Microsoft Access Tutorials
    TreeView-Steuerelement mit einer großen Anzahl von Knoten bewirkt eine Ausnahme in Access: TreeView-Steuerelement mit einer großen Anzahl von Knoten bewirkt eine Ausnahme in Access Access für Microsoft 365 Mehr... Weniger...
  8. Treeview in Excel 2013 32bit nicht verfügbar?

    in Microsoft Excel Hilfe
    Treeview in Excel 2013 32bit nicht verfügbar?: Hallo, wollte mir eine Treeview in eine Userform basteln- ich kann mich dunkel daran erinnern, dass es Anfang des Jahres, als ich anfing mich mit der ganzen VBA - Geschichte zu beschäftigen,...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden