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:
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:
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:
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