Access & SOHO-Datenbanken
Von: MPunkt, 3.1.2010 16:42 Uhr
Hallo zusammen,

ich müsste in meiner Datenbank eine Ordnerstruktur über VBA einlesen.
Leider kann ich selber nicht viel in VBA und hab auch mit Google nicht wirklich etwas gefunden.

Also folgendes:
Ich habe in einem Ordner mehrere Unterordner und in diesen Ordnern ein bis mehrere Dateien.
Jetzt soll das Auslesen fogendermaßen funktionieren, dass die Unterordner in der ersten Spalte untereinander stehen, und die enthaltenen Dateien in der zweiten bis n-ten Spalte beim zugehörigen Ordner.

Bsp:
Unterordner1 Datei11 Datei12
Unterordner2 Datei21
Unterordner3 Datei31 Datei32 Datei33
Unterordner4 Datei41

In die weiteren Spalten wird dann händisch etwas dazugeschrieben.
Wenn in dem Verzeichnis oder den Unterordnern etwas geändert oder hinzugefügt wird soll die Tabelle aktualisiert, aber nichts gelöscht werden.

Hoffe es war irgendwie verständlich.

mfg MPunkt



  1. Antwort von Netwolf 0
    Re: Unterordner und Dateien auflisten
    Hallo, ich müsste in meiner Datenbank eine Ordnerstruktur über VBA
    einlesen.
    welche Version hast du denn? Leider kann ich selber nicht viel in VBA und hab auch mit
    Google nicht wirklich etwas gefunden.
    da reicht ja auch die Hilfe von Access vollkommen aus :-)

    Lese dir mal die Hilfe für DIR durch In die weiteren Spalten wird dann händisch etwas
    dazugeschrieben.
    nun stelle dir mal vor, du hast 100 Dateien in einem Ordner.
    D.h. du musst 100 Felder dafür in der Datenbank erstellen.
    Und was ist, wenn es 101 Dateien werden? Willst du dann jedes Mal die Tabelle ändern?

    Dein Datenbankkonzept ist nicht praktikabel!
    Bedenke bitte auch: Datenbanken verwalten die Daten vertikal und nicht horizontal!
    Wie du das später verwaltest, bzw. anzeigen lässt, ist eine andere Geschichte. Wenn in dem Verzeichnis oder den Unterordnern etwas geändert
    oder hinzugefügt wird soll die Tabelle aktualisiert, aber
    nichts gelöscht werden.
    das kann man programmieren :-) Hoffe es war irgendwie verständlich.
    ja, auch wenn du mit deinem Konzept auf dem Holzweg bist :-(

    Grüße aus Rostock
    Wolfgang
    (Netwolf)
    7 Kommentare
    • von MPunkt 0
      Re^2: Unterordner und Dateien auflisten
      Hallo, ich müsste in meiner Datenbank eine Ordnerstruktur über VBA
      einlesen.
      welche Version hast du denn?
      Access2007 Leider kann ich selber nicht viel in VBA und hab auch mit
      Google nicht wirklich etwas gefunden.
      da reicht ja auch die Hilfe von Access vollkommen aus :-)

      Lese dir mal die Hilfe für DIR durch
      Danke hab ich gemacht, und eine Datei aus dem Verzeichnis bekomme ich schon in ne MsgBox :-) .... aber mehr geht halt noch nicht.
      Wie zum Beispiel JEDEN Ordner auslesen und dann noch die Dateien zugehörig zu den Ordnern bekommen???? In die weiteren Spalten wird dann händisch etwas
      dazugeschrieben.
      nun stelle dir mal vor, du hast 100 Dateien in einem Ordner.
      In den Ordnern sind maximal 5 Dateien in den meisten Fällen 1 bis 2. D.h. du musst 100 Felder dafür in der Datenbank erstellen.
      Und was ist, wenn es 101 Dateien werden? Willst du dann jedes
      Mal die Tabelle ändern?

      Dein Datenbankkonzept ist nicht praktikabel!
      Bedenke bitte auch: Datenbanken verwalten die Daten vertikal
      und nicht horizontal!
      Das is mir schon klar.
      Aber es geht eben um die Zugehörigkeit und dass ich dann pro Unterordner etwas dazuschreiben will.
      Andere möglichkeit wäre noch für jeden Unterordner eine eigene Tabelle erstellen zu lassen .... dann hab ich aber 200 Tabellen in denen jeweils nur 1 oder 2 Felder sind .... ist das sinnvoller?
      Lass mich auch gerne mit weiteren Vorschlägen belehren! Wie du das später verwaltest, bzw. anzeigen lässt, ist eine
      andere Geschichte. Wenn in dem Verzeichnis oder den Unterordnern etwas geändert
      oder hinzugefügt wird soll die Tabelle aktualisiert, aber
      nichts gelöscht werden.
      das kann man programmieren :-) Hoffe es war irgendwie verständlich.
      ja, auch wenn du mit deinem Konzept auf dem Holzweg bist :-(
      Wie gesagt, wie würdest du es machen?
      Grüße aus Rostock
      Wolfgang
      (Netwolf)
    • von df6gl 0
      Re^3: Unterordner und Dateien auflisten
      Hallo,


      ohne VBA nichts gewesen...


      kopier folgenden Code in ein Modul und ruf make_Dirlist mit Übergabe des Start-Verzeichnisses auf. Anstelle dem Schreiben in eine Textdatei kannst Du ja die Pfadnamen in eine Tabelle speichern.

      Von einer "horizontalen Auflistung" der Dateien in einem Datensatz (für je ein Verzeichnis) solltest Du Abstand nehmen.


      Dim fs As New Scripting.FileSystemObject
      Dim fld As Folder
      Dim subf As Folder
      Dim liste, Filenames, file


      Function make_dirlist(StartVerz As String)
      Set fs = CreateObject("Scripting.FileSystemObject")
      Set fld = fs.GetFolder(StartVerz)
      Listordner fld
      Set Filenames= fs.OpenTextFile("C:\Files.txt", 8, True, 0)
      Filenames.WriteLine liste
      Filenames.Close
      MsgBox ("fertig")
      End Function
      Sub Listordner(pFld)
      For Each file In pFld.Files
      liste = liste & file.Path & vbCrLf
      Next
      For Each subf In pFld.SubFolders
      liste = liste & subf.Path & vbCrLf
      Listordner subf
      Next
      End Sub



      Viele Grüße vom Bodensee
      Franz , DF6GL

      PS: Feedback erwünscht!
    • von MPunkt 0
      Re^4: Unterordner und Dateien auflisten
      Hallo,

      also wenn ich diesen Code in ein Modul speicher und dann auf "Ausführen" klicke, kommt bei mir ein Fenster und will dass ich ein Makro auswähle.

      Muss ich da noch was bestimmtes beachten, oder steh ich komplett daneben :-)

      mfg MPunkt
    • von df6gl 0
      Re^5: Unterordner und Dateien auflisten
      Hallo,



      also wenn ich diesen Code in ein Modul speicher und dann auf
      "Ausführen" klicke, kommt bei mir ein Fenster und will dass
      ich ein Makro auswähle.

      Muss ich da noch was bestimmtes beachten, oder steh ich
      komplett daneben :-)
      so einfach geht es auch wieder nicht..



      Gibt im Direktfenster mal

      make_dirlist "C:\temp"


      ein (oder ein geigneteres Verzeichnis) und drück Return.



      Viele Grüße vom Bodensee
      Franz , DF6GL

      PS: Feedback erwünscht!
    • von MPunkt 0
      Re^6: Unterordner und Dateien auflisten
      Wenn ich dass mache, kommt die Fehlermeldung: "Fehler beim Kompilieren"

      für diese Zeile "Dim fs As New Scripting.FileSystemObject"

      könntest du mir eventuell den Code einwenig erklären? wie gesagt ich bin ziemlicher Anfänger in VBA und möchte ja auch etwas lernen und nicht einfach nur fremden Code einfügen.

      mfg MPunkt
    • von df6gl 0
      Re^7: Unterordner und Dateien auflisten
      Hallo,


      ja, sorry, hatte vergessen zu erwähnen, den Verweis auf MICROSOFT SCRIPTING RUNTIME (scrrun.dll) im VBA-Editor zu setzen.


      M. E. ist der Code selbsterklärend: für jedes Unterverzeichnis ab dem angebenen Verzeichnis werden dessen Dateien durchlaufen und dabei jeder Dateinamen zu einem Gesamtstring zusammengebaut. Dieser String ("liste") wird dann in eine Datei geschrieben.


      Viele Grüße vom Bodensee
      Franz , DF6GL

      PS: Feedback erwünscht!
    • von MPunkt 0
      Re^8: Unterordner und Dateien auflisten
      Danke vielmals, jetzt funkts.
      werd mich am WE mal hinsetzten und schaun was ich da alles daraus machen kann.
      Auf jeden Fall vielen Dank für die Tipps auch für den mit dem Tabellenaufbau.
      Hoffe ich bring es jetzt alleine fertig :-)

      mfg MPunkt
  2. Antwort von drambeldier 0
    Re: Unterordner und Dateien auflisten
    Moin, MPunkt, Wenn in dem Verzeichnis oder den Unterordnern etwas geändert
    oder hinzugefügt wird soll die Tabelle aktualisiert, aber
    nichts gelöscht werden.
    Access kriegt von solchen Änderungen nichts mit, Du müsstest das also beim nächsten Aufruf der Funktion prüfen. Einfacher ist vermutlich, das Ganze gleich neu zu erstellen, wenn die Applikation geöffnet wird.

    Gruß Ralf
    • Antwort von drambeldier 0
      Zur Datenstruktur
      Moin, MPunkt, Unterordner1 Datei11 Datei12
      Unterordner2 Datei21
      Unterordner3 Datei31 Datei32 Datei33
      Unterordner4 Datei41
      zum Speichern ist diese Struktur völlig ungeeignet. Bau Dir zwei Tabellen auf:

      Ordner (OrdnerId, Ordnername, FS_OrdnerId, ...)
      
      Datei (Datei, Dateiname, FS_OrdnerId, ...)
      

      In Ordner.FS_OrdnerId steht die ID des übergeordneten Ordners (wenn es denn einen gibt), in Datei.FS_OrdnerId die ID des Ordners, der die Datei enthält.

      Dieses Gerüst befüllst Du erstmal, dann kannst Du es darstellen, wie immer Du magst. Die gewünschte Listenstruktur - Dateien nebeneinander - bekommst Du natürlich nicht per SQL, sondern nur per sequentieller Verarbeitung.

      Frage am Rande: Wozu dient das Ganze? Im Windows Explorer gibt es doch das Feld "Kommentar", um Dateien und Ordener zu beschreiben.

      Gruß Ralf