Suche auf Fit-for-Access.de
|
Wie Sie bei Access die Beschränkungen des „Dir“-Befehls umgehenViele Entwickler nutzen eine Routine wie die folgende aus Access_aktuell, um automatisch Sicherungskopien von allen Datenbanken anzulegen, die noch nicht im Zielverzeichnis vorhanden sind:strPath = "Z:\Test\" strDatsi = "Z:\Datsi\" strFName = Dir$ (strPath & "*.mdb") While strFName<> "" DoEvents If Dir$(strDatsi & strFName) = "" Then FileCopy strPath & strFName, strDatsi & strFName End if strFName = Dir$() WendDie Prozedur funktioniert jedoch immer nur bis zur ersten Datenbank, die sich nicht im Zielverzeichnis befindet; danach wird das Fehlen weiterer zu sichernder Datenbanken nicht mehr erkannt. Ursache des Problems ist die Tatsache, dass „Dir$()“ nicht verschachtelt eingesetzt werden kann, da der Aufruf ohne Parameter (strFName = Dir$()) sich immer am letzten Aufruf mit Parameter (If Dir$(strDatsi & strFName) = „“ Then...) orientiert und so das ursprüngliche Ziel (strFName = Dir$(strPath & „*.mdb“)) „vergisst“. Access_aktuell-Tipp: Abhilfe schaffen Sie durch eine Alternative, die für die Abfrage von Dateien oder Verzeichnissen zum Einsatz kommt: Die Microsoft Scripting Runtime Library. Diese Systemerweiterung stellt Objekte bereit, über die Sie unter anderem auf das Dateisystem zugreifen und so Dateien und Verzeichnisse auf Vorhandensein prüfen können: - Öffnen Sie ein VBA-Modul im Entwurfsmodus.
- Wählen Sie das Menü EXTRAS > VERWEISE an, setzen Sie eine Referenz auf „Microsoft Scripting Runtime“ und übernehmen Sie die Änderungen mit OK.
- Geben Sie im Modul folgende Funktion ein:
Function CheckFileOrDirExists (strName As String) As Boolean Dim fso As Scripting. FileSystemObject Set fso = CreateObject ("Scripting.FileSystemObject") If Right$(strName, 1) = "" Then ‘Verzeichnis CheckFileOrDirExists = fso.FolderExists(strName) Else CheckFileOrDirExists = fso.FileExists(strName) End If End Function
- Speichern Sie die Änderungen.
In Zukunft können Sie diese Funktion nun ohne Rücksicht auf einen eventuellen Einsatz der „Dir$()“-Funktion nutzen, um das Vorhandensein von Dateien und Verzeichnissen z. B. wie folgt zu prüfen: If Not CheckFileOrDirExists (strDatsi & strFName) Then FileCopy strPath & strFName, strDatsi & strFName End ifSie übergeben der Funktion also entweder den Namen der zu prüfenden Datei samt Laufwerk oder den Pfad des Verzeichnisses mit abschließendem Backslash. An einem eventuell vorhandenen abschließenden Backslash erkennt die Funktion, ob ein Verzeichnis oder eine Datei zu prüfen ist. Abhängig davon wird dann entweder die Funktion „FolderExists()“ oder die Funktion „FileExists()“ der FileSystemObject-Bibliothek aufgerufen. Aus: Access_aktuell – Jetzt gratis testen!
Anzeige
PowerPoint aktuell "Klauen" Sie sich jetzt ganz einfach die besten Präsentations-Ideen - kostenlos
Mit PowerPoint wird so viel Schindluder getrieben - da stechen Sie mit einer professionellen und ansprechenden Präsentation aus der Masse heraus. Wie Sie die jetzt in Rekordzeit erstellen und trotzdem richtig Eindruck machen, verrät PowerPoint-Experte Dieter Schiecke Ihnen völlig kostenlos, wenn Sie hier klicken.
Lesen Sie hier mehr über PowerPoint aktuell
|
Diese aktuellen News & Tipps könnten Sie interessieren:
Leider wurde kein Beitrag gefunden.
Hier finden Sie eine Übersicht aller Beiträge
|
|
|