Avatar billede hugopedersen Nybegynder
13. november 2002 - 20:31 Der er 9 kommentarer og
1 løsning

Fil-finder rutine

Jeg står lige og mangler en rutine til Access der kan gøre følgende :

I et directory Q findes X subdirectories der hver kan indeholde Y filer.
Jeg ønsker en liste/tabel med 2 kolonner Directorynavn og filnavn for alle X subdirectories og Y filer.

How to do ?
Avatar billede amerikaner Nybegynder
14. november 2002 - 08:16 #1
Skal du har alt eller kan du gøre lidt selv.  Hvis du kan selv, kig under Help i Access før DIR() funktion, du kan brug et loop...
Her er en jeg brug:

' Display the names in C:\ that represent directories.
Sub Command1_Click()
  Dim strPath, strName
  strPath = "c:\"    ' Set the path.
  strName = Dir(strPath, vbDirectory)    ' Retrieve the first entry.
  Do While strName <> ""    ' Start the loop.
    ' Ignore the current directory and the encompassing directory.
    If strName <> "." And strName <> ".." Then
        ' Use bitwise comparison to make sure strName is a directory.
        If (GetAttr(strPath & strName) And vbDirectory) = vbDirectory Then
            ' Display entry only if it (OR Write to a table)           
            Debug.Print strName   
        End If    ' it represents a directory.
    End If
    strName = Dir    ' Get next entry.
  Loop
End Sub
Avatar billede hugopedersen Nybegynder
14. november 2002 - 09:01 #2
Jeg håber på at der er en eller anden der har lavet noget der ligner så jeg var fri for selv at skulle bruge min sparsomme tid til det:-)
Avatar billede amerikaner Nybegynder
14. november 2002 - 09:31 #3
OK, it's ugly and quick but it works...

Du har en list (List1) med 2 Antalkolonner og Rækkekildetype = Værdiliste

Private Sub Command1_Click()
  Dim strPath, strPath2, strName, X As Integer, Y As Integer
  Dim arMain As Variant
 
  ReDim arMain(100)
 
  strPath = "c:\MitMappe\"    ' Set the path.
  strName = Dir(strPath, vbDirectory)    ' Retrieve the first entry.
  ' Loop through all the directories
  Do While strName <> ""    ' Start the loop.
    ' Ignore the current directory and the encompassing directory.
    If strName <> "." And strName <> ".." Then
       
        ' Use bitwise comparison to make sure strName is a directory.
        If (GetAttr(strPath & strName) And vbDirectory) = vbDirectory Then
            ' Display entry only if it (OR Write to a table)
            X = X + 1
            arMain(X) = strName
        End If    ' it represents a directory.
    End If
    strName = Dir    ' Get next entry.
  Loop
  ' get files in diretories
  For Y = 1 To X
      strName = Dir(strPath & arMain(Y) & "\*.*")    ' Retrieve the files
        Do While strName <> ""    ' Start the loop.
            List1.RowSource = List1.RowSource & arMain(Y) & ";" & strName & ";"
            strName = Dir
        Loop
  Next
  List1.Requery
End Sub
Avatar billede hugopedersen Nybegynder
14. november 2002 - 09:37 #4
Jeg vil lige teste dit forslag i aften når jeg kommer i nærheden af min kode.

Jeg har noteret mig at du er den med det første forslag.
Avatar billede amerikaner Nybegynder
14. november 2002 - 09:42 #5
Ja, men hugo, Experten gøre det for dig
Svar: amerikaner
14/11-2002 08:16:54
:-))
Avatar billede amerikaner Nybegynder
14. november 2002 - 09:53 #6
Hugo, En ting mere...På Redim arMain(X) set X til max antal mappe. 

OBS, det er en 'limit' til hvor laænge RowSource må vare. 256 char? Det ved jeg ikke, er det nogen som ved det???
Avatar billede hugopedersen Nybegynder
14. november 2002 - 10:05 #7
Der er en eller anden grænse på rowsource mener jeg.  Jeg har i hvert fald før fået en fejl der siger at rowsource er for lang.

Jeg tror nu jeg laver det så datane jeg finder ryger ned i en tabel.
Avatar billede fynbohans Nybegynder
14. november 2002 - 10:28 #8
Der er eksempel i Visual Basic Help i Access.
Kig under FileSystemObject, Folders collection og Files collection.
Avatar billede hugopedersen Nybegynder
14. november 2002 - 17:49 #9
Fik koden til at virke med lidt omskrivning.
Avatar billede amerikaner Nybegynder
15. november 2002 - 15:33 #10
hugo >> du kan ligge kode herin fordi det vil hjelpe den næste man som søg efter en løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester