Newsgroup: it.comp.appl.access
Titolo: tabella con nome dei files contenuti in una cartella

ciao a tutti,
credo di voler fare il passo più lungo della gamba!
vorrei creare una tabella con il nome dei file presenti in una
cartella .
sul sito comune ho trovato il seguente codice, soltanto che essendo
alle prime armi (vi giuro sto studiando) non so da dove cominciare.
c'è qualcuno che ha voglia di darmi un indizio?
grazie 1000
Questa funzione fa uso della funzione DIR e restituisce una matrice a
2 colonne contenente il path ed il nome di tutti i file contenuti in
una determinata cartella ed in tutte le sue sottodirectory.
L'ho creata con Access '97, sinceramente non so se nel 2000 la
funzionalità della funzione dir sia stata ampliata o se siano stati
aggiunti nuovi metodi x la gestione del file system.
Option Compare Database
Option Explicit
Option Base 1
Private matrice() As String
Public Function creamatrice(PATDINIZIO As String) As Variant
   ReDim matrice(2, 1)
   If PATDINIZIO Like "?:\" Then
      caricamatrice PATDINIZIO, True
   Else
      caricamatrice PATDINIZIO
   End If
   If UBound(matrice, 2) > 1 Then
      ReDim Preserve matrice(2, UBound(matrice, 2) - 1)
   End If
   creamatrice = matrice
   Erase matrice
End Function
Private Sub caricamatrice(strpercorso As String, Optional blnIsRoot As
Boolean = False)
   Dim lngcnt2 As Long, lngcnt1 As Long, strnome As String
   strnome = Dir(strpercorso, vbDirectory)
   Do While strnome <> ""
      If blnIsRoot = True And lngcnt1 = 0 Then
         strnome = Dir(strpercorso, vbDirectory)
      Else
         strnome = Dir
      End If
      lngcnt1 = lngcnt1 + 1
      If strnome <> "" And strnome <> "." And strnome <> ".." Then
         If GetAttr(strpercorso & strnome) <> vbDirectory Then
            matrice(1, UBound(matrice, 2)) = strpercorso
            matrice(2, UBound(matrice, 2)) = strnome
            ReDim Preserve matrice(2, UBound(matrice, 2) + 1)
         Else
            caricamatrice (strpercorso & strnome & "\")
            strnome = Dir(strpercorso, vbDirectory)
            lngcnt2 = IIf(blnIsRoot = False, 0, 1)
            Do While lngcnt2 < lngcnt1
               strnome = Dir
               lngcnt2 = lngcnt2 + 1
            Loop
         End If
      End If
   Loop
End Sub
8-)> Fabià

 8-)> Fabià
Se la tabella dove vuoi registare i nomi dei file si chiama Pippo ed ha la
seguente struttura:
ID            Contatore e chiave primaria
Path          Testo
Se il percorso (path) della cartella che contiene i file è contento in un
controllo chiamato Percorso.
Il codice VBA che ti serve potrebbe essere il seguente:
    Dim rst As Recordset, i As Integer
    If IsNull(Me.Percorso) Then Exit Sub
    'Svuota la tabella Pippo da eventuali dati precedenti
    DoCmd.RunSQL "DELETE * FROM Pippo;"
    Set rst = CurrentDb.OpenRecordset("Pippo")
          With Application.FileSearch
            .NewSearch
            .FileType = msoFileTypeAllFiles
              .LookIn = Me!Percorso
              If .Execute > 0 Then
                  For i = 1 To .FoundFiles.Count
                      rst.AddNew
                      rst!Path = NomeLink(.FoundFiles(i))
                      rst.Update
                  Next i
              Else
                  MsgBox "La cartella è vuota", vbCritical, ""
              End If
          End With
    Set rst = Nothing
Tieni presente che, affinchè il tutto funzioni, occorre che nei Riferimenti
del tuo database tu aggiunga anche quelli relativi Microsoft Officice x.x
Object Library. C'è una soluzione che non prevede l'aggiunta di tali
riferimenti, ma con Windows Me non funziona.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------