Dateien einlesen und finden mit Access

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Christoph Spielmann, Düsseldorf, und Klaus Gießen, Wuppertal

Die Speicherkapazität von Festplatten hat gerade in den letzten Jahren rasant zugenommen. Momentan sind Festplatten mit 80 bis 100 MB handelsüblich, und Festplatten mit mehreren Terabyte für normale PC-Systeme bereits im Gespräch. Mit zunehmender Größe des zur Verfügung stehenden Speicherplatzes wächst erfahrungsgemäß auch die Anzahl der gespeicherten Dateien. Folglich wird die Suche nach bestimmen Dateien in solch großen Datenbeständen mit den üblichen Dateimanagern, wie beispielsweise dem Windows-Explorer, immer unübersichtlicher und schwieriger – und vor allem: wesentlich zeitaufwendiger. Die hier vorgestellte Lösung zeigt Ihnen, wie Sie umfangreiche Datenbestände mit Hilfe von Access in den Griff bekommen.

Das Organisieren von Datenbeständen ist eine der bekannten Domänen von Datenbanksystemen wie Access. Also liegt die Verwendung einer entsprechend gestalteten Datenbank zur Verwaltung und zur Suche nach Dateien nahe.

Auch Microsoft ist inzwischen auf diese Idee gekommen und hat bereits den Nachfolger des SQL Servers 2000 (Codename Yukon) als Ersatz für das Dateisystem des Windows-XP-Nachfolgers Longhorn angekündigt.

Die daraus resultierenden Vorteile werden sicherlich revolutionär sein. So wird es beispielsweise möglich, z. B. eine Datei mit Daten zu Ihrer Steuererklärung gleichzeitig unter den Pfaden EKSteuer/2002 und 2002/Steuer/EK abzulegen.

Dass die Suche nach Dateien bei Einsatz einer Datenbank sehr schnell vonstatten geht, versteht sich hierbei von selbst – und das ist auch einer der wesentlichen Aspekte der vorgestellten Lösung. Wer gelegentlich verschollen geglaubte Dateien auf einer großen Festplatte mit vielen Daten sucht, wird gerade den Geschwindigkeitsvorteil zu schätzen wissen.

Um Ihnen die Wartezeit bis zum Erscheinen von Longhorn etwas zu versüßen, stellen wir Ihnen hier eine Lösung namens FileScanner für Access vor, die zumindest die Suche nach Dateien dramatisch beschleunigt.

Der Einsatzbereich dieser Lösung umfasst in erster Linie Festplattenlaufwerke – lokal oder im Netzwerk.

Die Archivierung von CD-ROMs und anderen Medien ist sicher sinnvoll, wird aber im Rahmen des vorliegenden Beitrags nicht behandelt.

Hinweis

Sie finden die Beispieldatenbank der Musterlösung FileScanner für Access 2000 und höher auf der beiliegenden CD-ROM unter dem Dateinamen FileScanner.mdb.

Eine Version einer Musterlösung für Access 97 liegt leider nicht vor, da der Programmcode von Klassenmodulen ausgelöste Ereignisse verwendet.

Dieses Feature steht erst ab Access 2000 zur Verfügung.

Die wichtigste Forderung bei der Entwicklung des FileScanners ist das schnelle Auffinden von Dateien auf Medien mit festen Pfaden wie beispielsweise Festplatten auf lokalen oder Netzwerkrechnern.

Die Kernfunktion ist dementsprechend das Einlesen von Laufwerken mit allen Verzeichnissen und Unterverzeichnissen. Zusätzlich stellt die hier vorgestellte Datenbank ein Formular zur Suche nach Dateien sowie zum öffnen einer gefundenen Datei direkt aus der Datenbank heraus zur Verfügung. Eine .mdb-Datei wird beim Anklicken beispielsweise mit Access geöffnet.

Das Datenmodell des FileScanners besteht aus einer einzigen Tabelle namens tblFiles, deren Entwurfsansicht Sie in Bild 1 finden.

Bild 1: Die Tabelle tblFiles in der Entwurfsansicht

Einige Felder der Tabelle tblFiles weisen Besonderheiten auf:

  • Das Feld DirName hat den Felddatentyp Memo, um auch die Namen von tiefer geschachtelten Unterverzeichnissen speichern zu können. Die 255 Zeichen eines Textfelds reichen unter Umständen dafür nicht aus. Ein Blick auf Ihre eigene Verzeichnisstruktur dürfte dies eventuell deutlich machen.
  • Das Feld FileSize hat die Feldgröße Double, damit die Tabelle auch die Dateigröße sehr großer Dateien speichern kann.
  • Das boolesche Feld IsExisting stellt sicher, dass nach einem Scan alle nicht mehr existierenden Dateien – verschoben oder gelöscht – aus der Datenbank entfernt werden. Nähere Einzelheiten dazu finden Sie weiter unten.
  • Die Beispiellösung enthält lediglich zwei Formulare und ein Unterformular, die Sie in den folgenden Abschnitten näher kennen lernen.

    Das Formular frmScan

    Das Formular frmScan steuert das Durchsuchen (Scannen) eines Laufwerks. Es enthält im Wesentlichen ein ungebundenes Textfeld zur Eingabe des Startverzeichnisses und zwei Schaltflächen (siehe Bild 2).

    Bild 2: Das Formular frmScan in der Entwurfsansicht

    Weiterhin ist in diesem Formular noch ein ungebundenes Textfeld zur Anzeige von Statusmeldungen vorhanden. Dies ist sinnvoll, da das Einscannen eines Laufwerks je nach Anzahl der Dateien längere Zeit in Anspruch nehmen kann.

    Das Formular frmFind

    Das Formular frmFind erledigt die Suche nach einer Datei. Es enthält neben einem ungebundenen Textfeld zur Eingabe eines Suchbegriffs noch eine Schaltfläche zum Start der Suche (siehe Bild 3).

    Bild 3: Das Dialogfenster Optionen

    Das Unterformular frmFind_Sub zeigt den Verzeichnis- und Dateinamen der gefundenen Dateien als Datenblatt an (siehe Bild 4).

    Damit haben Sie – abgesehen vom VBA-Code – schon alle Objekte der Musterlösung kennen gelernt.

    Bevor wir Ihnen die Funktionsweise des FileScanners vorstellen, finden Sie in diesem Abschnitt zunächst seine Anwendung beschrieben.

    Bild 4: Das Formular frmFind in der Entwurfsansicht

    Bild 5: Entwurfsansicht des Unterformulars frmFind_Sub

    Vor dem Experimentieren beachten Sie jedoch Folgendes:

    Weil Sie in der Anfangsphase sicherlich häufig neue Scans durchführen und wieder löschen, sorgen Sie am besten für eine automatische Komprimierung der FileScanner-Datenbank beim Schließen. Hierzu gehen Sie wie folgt vor:

  • öffnen Sie mit dem Menübefehl Extras/Optionen das Dialogfenster Optionen und aktivieren Sie das Register Allgemein.
  • Markieren Sie dann das Kontrollkästchen Beim Schließen komprimieren (siehe Bild 5). (
  • Dateien und Verzeichnisse einlesen

    Die Bedienung des FileScanners ist sehr einfach. öffnen Sie das Formular frmScan und geben Sie in das Feld Start-Verzeichnis das gewünschte Laufwerk oder Verzeichnis ein.

    Mit einem Klick auf die Schaltfläche Start wird das Einlesen der Dateien gestartet (siehe Bild 6). Ausgangspunkt des Einlesevorgangs ist das von Ihnen eingegebene Laufwerk bzw. Verzeichnis. Von dort aus werden ebenfalls alle eventuell vorhandenen Unterverzeichnisse durchsucht.

    Praxis-Tipp

    Wenn Sie das Root-Verzeichnis einer größeren und gut gefüllten Festplatte als Startpunkt angeben, kann der Scan ohne Weiteres 10 bis 20 Minuten dauern. Fassen Sie sich also in Geduld oder brechen Sie den Einlesevorgang mit der Abbrechen-Schaltfläche ab.

    Während des Suchvorgangs informiert Sie eine Statuszeile unterhalb der Schaltfläche Start über den Fortschritt des Einlesens (siehe Bild 7).

    Bild 6: Das Formular frmScan

    Bild 7: Statuszeile während des Suchvorgangs

    Das Ende des Suchvorgangs erkennen Sie in der Statuszeile des Formulars, die dann wieder den Schriftzug Bereit! anzeigt.

    Die eingelesenen Dateien sind danach mit den entsprechenden Angaben in der Tabelle tblFiles gespeichert (siehe Bild 8).

    Suchen

    Die Suche nach Dateien erfolgt vom Formular frmFind aus. Geben Sie in das Feld Suchen das gewünschte Suchkriterium ein und klicken Sie anschließend auf die Schaltfläche Suchen (siehe Bild 9).

    Bild 8: Eingelesene Dateien in der Tabelle tblFiles

    Der FileScanner erlaubt die Anwendung folgender Suchkriterien:

  • Freier Text: kann sich auf die Suche nach einem Verzeichnis- bzw. Dateinamen oder auf die Dateiextension beziehen.
  • Dateierweiterung: Sie können beispielsweise gezielt nach gif-, txt-, doc- oder allen anderen Dateierweiterungen suchen.
  • Wildcard: Beim Suchkriterium *.* werden alle Verzeichnisse und Dateien als Suchergebnis angezeigt.
  • Das Suchergebnis

    Das Suchergebnis wird als Datenblatt angezeigt (siehe Bild 9). Die Anzeige beschränkt sich hierbei auf den Verzeichnis- und Dateinamen.

    Verzeichnis öffnen

    Ein Doppelklick in ein beliebiges Feld der Spalte Verzeichnis öffnet dieses Verzeichnis im Windows Explorer.

    Hinweis

    Einen entsprechenden Hinweis finden Sie in der Statuszeile unten im Formular.

    Datei öffnen

    Ein Doppelklick auf einen Dateinamen öffnet die Datei zusammen mit der dazugehörigen Anwendung. Voraussetzung dafür ist allerdings, dass diese Dateiextension auch mit einer Anwendung verknüpft ist.

    Ein wesentlicher Teil der Funktionalität des FileScanners ist mit Hilfe von API-Funktionen realisiert, die Sie in den folgenden Abschnitt kennen lernen.

    Bild 9: Suchergebnis im Unterformular

    Declare Function FindFirstFile Lib "kernel32.dll" _    Alias "FindFirstFileA" (ByVal lpFileName As _    String, lpFindFileData As WIN32_FIND_DATA) As Long

    Quellcode 1

    Declare Function FindNextFile Lib "kernel32.dll" _    Alias "FindNextFileA" (ByVal hFindFile As Long, _    lpFindFileData As WIN32_FIND_DATA) As Long

    Quellcode 2

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    Testzugang

    eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar