Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Sauerländer am März 10, 2014, 09:51:29

Titel: Rekursive Verzeichnissuche
Beitrag von: Sauerländer am März 10, 2014, 09:51:29
Kann mir bitte mal jemand einen Tipp geben, was bei folgendem Programmcode falsch ist ?

Mit einer For Each-Next-Schleife wird auf einem bestimmten Laufwerk ( ,,J" ) ein Unterverzeichnis gesucht.
Wird das Verzeichnis gefunden, soll der Pfad in die Variable ,,Suchpfad" eingelesen und die Schleife abgebrochen werden. 
Danach soll der Inhalt der Variable ,,Suchpfad" ausgewertet werden:
Ist die Variable leer soll eine "Nicht gefunden" -  Meldung ,, und andernfalls eine
,,Datei  gefunden"  – Meldung ausgegeben werden.

Allerdings funktioniert bei meinem Code scheinbar der Schleifenabruch bei Datei gefunden nicht,
sondern ich bekomme in einer Endlosschleife die Msgbox ,,Dateiordner wurde nicht gefunden"
angezeigt.
Weiß  jemand wass da falsch läuft ??

Private Sub T_AufNr_Click()
SucheOrdner "J:\Auftragsordner", Forms![frmInteressenten-Projekte-Kunden]![frmUFAnlagen].Form![T_AufNr]
End Sub

Sub SucheOrdner(StartVerzeichnis, Suchtext)
Dim FSO, Verzeichnis, Unterverzeichnis, Suchpfad, Ergebnis
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Verzeichnis = FSO.GetFolder(StartVerzeichnis)
For Each Unterverzeichnis In Verzeichnis.SubFolders
    If InStr(UCase(Unterverzeichnis.Name), UCase(Suchtext)) > 0 Then
        Suchpfad = Verzeichnis & "\" & Unterverzeichnis.Name
        Exit For
    End If   
SucheOrdner Unterverzeichnis.Path, Suchtext
Next

'Nach Durchlauf der Suchschleife wird der Inhalt der Variable "Suchpfad" ausgewertet
If Suchpfad = "" Then
   MsgBox "Der gesuchte Dateiordner wurde nicht gefunden"
Else
   MsgBox "Der gesuchte Ordner wurde gefunden"
End If
End Sub
Titel: Re: Rekursive Verzeichnissuche
Beitrag von: bahasu am März 10, 2014, 14:30:00
Hi,

anbei im Anhang eine leichte Modifikation Deiner Routine {in vereinfachter Ausführung: also ohne Form, aus dem der zu suchende Inhalt kommt}.
Einige Variablen habe ich als public außerhalb der rekursiven sub deklariert.

Ansonsten kann vielleicht  auch http://www.office-loesung.de/ftopic80878_0_0_asc.php helfen.

Harald