Prüfen ob Pfadangaben aus einer Tabelle existieren

HI Leute,
ich habe eine Datenbank erstellt, die auch auf Dateien zugreifen soll. Damit man den Speicherort der Dateien auch mal ändern kann, ohne den VB-Code ändern zu müssen, habe ich ein Formular zum Einstellen der Pfade erstellt. Die Einstellungen in diesem Formular werden in einer Tabelle mit nur einem Datensatz und den zwei Spalten „Pfad1“ und „Pfad2“ (es sind nur zwei Pfade). Bevor der Code aber auf die Dateien zugreift, soll erstmal geprüft werden, ob diese Pfadangabe überhaupt existiert. Hier mein Versuch dazu - das Problem ist, dass der Code auch existierende Pfade nicht findet:

Public Function Installieren(Programm As String)

'mit der Variable Programm wird dieser Funktion je nach
'Bedarf entweder Pfad1 oder Pfad2 übergeben

Dim rs As New ADODB.Recordset
Dim sqlstring As String
Dim fld As Field
Dim fso As New FileSystemObject

'Für FileSystemObject muss übrigens Microsoft Scripting Runtime
'unter Verweise aktiviert sein

Dim Text, Pfad As String

sqlstring = „Select " & Programm & " from Pfade“

With rs
.ActiveConnection = CurrentProject.Connection
.LockType = adLockOptimistic
.CursorType = adOpenDynamic
.Open sqlstring
End With
rs.MoveFirst
For Each fld In rs.Fields
Pfad = fld.Value
Next fld

'Diese For…Next-Schleife ist nicht so schön, ich weiß,
'aber sie erfüllt ihren Zweck, da ja nur ein Feld existiert.

If fso.DriveExists(Pfad) = False Then
Text = „Pfad existiert nicht (“ & Pfad & „).“
MsgBox Text

'Hier ist das Problem: kein Pfad wird gefunden - diese
'Meldung erscheint immer!

rs.Close
Exit Function
End If
rs.Close

'Der Rest ist nicht mehr relevant für mein Problem
End Function

Zunächst einmal sehen die hiesigen Regeln vor, daß Beiträge nicht doppelt gepostet werden - dein Beitrag steht auch in Access - Soho.

Zur Frage: Die benötigte Methode heißt fso.FolderExists(), fso.DriveExists fragt nach dem Laufwerk.

Wenn Du die ganze Sache etwas schneller haben möchtest:

Dim str_Path As String
str_Path = CurrentProject.Connection.Execute(„Select " & Programm & " From Pfade“).Fields(0).Value

If Not fso.FolderExists(str_Path) Then

Bei solchen Einmalabfragen ist kein adOpenDynamic-Cursor notwendig, da reicht ein Forward-Only - schreibgeschütztes RS völlig aus. Und wenn Du nur eine Zelle hast, kannst Du diese mit .Fields(0) direkt bekommen.


Gruß, Jürgen Auer