Toon posts:

[VB] Zoeken naar mdb's

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een programma gemaakt (klik hier om de .exe versie er van te bekijken, praat wellicht makkelijker) die een pad uitleest op Access databases, deze vervolgens kan openen en waarbij de records bekeken kunnen worden. Het programma staat nog in zijn kinderschoenen, maar het werkt op dit moment prima.

Er is één nadeel: Ik moet door middel van de drive-, folder- en filelists bladeren naar de gewenste map om zo de inhoud te krijgen. Wellicht staan er in de geselecteerde map databases, misschien ook wel niet, dat weet je dus nooit.
Ik zoek nu een procedure die een gegeven pad (bijv. C:\Data) geheel doorzoekt (dus inclusief subfolders) naar *.mdb bestanden. Deze bestanden moeten vervolgens getoond worden in een listbox.

Wat heb ik al geprobeerd?
- www.planet-source-code.com bezocht en daar 15 programmatjes gedownload waarvan ik dacht dat de code daar wel in zou zitten, helaas dat mocht niet baten;
- FileSystemObject aangezet door middel van de Microsoft Scripting Runtime, maar ook hier kom ik niet uit (terwijl ik daar toch best ver mee kan komen heb ik het idee);
- Uiteraard behoorlijk op Google gezocht, maar geen code gevonden die ik zocht.

Heeft iemand een oplossing voor mij?

  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 21:47
Filesystem object is wel the way to go volgens mij :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub process_dir(dirnaam As String, incsub As Integer)
Dim fso As New FileSystemObject
Dim fsodrives As Drives, fsodrive As Drive
Dim fsofolders As Folders, fsofolder As Folder
Dim fsosubfolders As Folders, fsosubfolder As Folder
Dim fsofiles As Files, fsofile As File
Dim naam As String
If fso.FolderExists(dirnaam) Then
    Set fsofolder = fso.GetFolder(dirnaam)
    Set fsofiles = fsofolder.Files
    For Each fsofile In fsofiles
        If Right(UCase(fsofile.Name), 4) = ".MP3" Then
            goodmp3s = goodmp3s + 1
            Call parse(fsofile.ParentFolder, fsofile.Name)
        End If
    Next
    If incsub = 1 Then
        Set fsosubfolders = fsofolder.SubFolders
        For Each fsosubfolder In fsosubfolders
            naam = fsosubfolder.Path
            process_dir naam, 1
        Next
    End If
End If

End Sub


Even gecut-en-paste uit een eigen vb-frutsel. Doet wel ongeveer wat jij wilt, als er (in dit geval .MP3) een matching file wordt gevonden, wordt er een functie aangeroepen (parse in dit geval), wordt er een (sub)directory gevonden roept de functie zichzelf recursief aan om die directory ook door te spitten.

Whatever


Verwijderd

Topicstarter
sjis schreef op 02 maart 2004 @ 15:37:
Filesystem object is wel the way to go volgens mij :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub process_dir(dirnaam As String, incsub As Integer)
Dim fso As New FileSystemObject
Dim fsodrives As Drives, fsodrive As Drive
Dim fsofolders As Folders, fsofolder As Folder
Dim fsosubfolders As Folders, fsosubfolder As Folder
Dim fsofiles As Files, fsofile As File
Dim naam As String
If fso.FolderExists(dirnaam) Then
    Set fsofolder = fso.GetFolder(dirnaam)
    Set fsofiles = fsofolder.Files
    For Each fsofile In fsofiles
        If Right(UCase(fsofile.Name), 4) = ".MP3" Then
            goodmp3s = goodmp3s + 1
            Call parse(fsofile.ParentFolder, fsofile.Name)
        End If
    Next
    If incsub = 1 Then
        Set fsosubfolders = fsofolder.SubFolders
        For Each fsosubfolder In fsosubfolders
            naam = fsosubfolder.Path
            process_dir naam, 1
        Next
    End If
End If

End Sub


Even gecut-en-paste uit een eigen vb-frutsel. Doet wel ongeveer wat jij wilt, als er (in dit geval .MP3) een matching file wordt gevonden, wordt er een functie aangeroepen (parse in dit geval), wordt er een (sub)directory gevonden roept de functie zichzelf recursief aan om die directory ook door te spitten.
Thanks, het werkt! _/-\o_

Verwijderd

Topicstarter
sjis, zou je mij nog kunnen vertellen waar de integer "incsub" voor dient? De code werkt prima hoor maar ik snap niet precies het nut van de incsub :).

  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 21:47
Incsub geeft aan of er subdirectories moeten worden doorzocht (incsub = 1). Als je de functie aanroept met incsub = 0, worden geen subdirectories doorzocht.

Whatever


Verwijderd

Topicstarter
sjis schreef op 02 maart 2004 @ 17:03:
Incsub geeft aan of er subdirectories moeten worden doorzocht (incsub = 1). Als je de functie aanroept met incsub = 0, worden geen subdirectories doorzocht.
Stom van me, incsub = Including Subfolders :o. Bedankt wederom ;)
Pagina: 1