Newsgroup: it.comp.appl.access
Titolo: funzione di recupero files

Buongiorno a tutto il Ng :-)
Dall'help Access ho copiato e adattato la funzione (su click di un pulsante)
sottoriportata e funziona, ma vorrei cortesemente sapere come salvare il
risultato in una tabella con l'elenco delle sottodirectory e relativi files
e nella stessa maschera dove ho messo il pulsante la visualizzazione del
risultato della ricerca .
Ho provato a vedere nell'help la funzione Application.FileSerch (su
consiglio di Alex) ma non ne ho capito piu di tanto purtroppo..dato il mio
livello di conoscenza di VBA
Public Sub cerca()
Set fs = Application.FileSearch
With fs
    .LookIn = "C:\documenti"
    .FileName = "*.*"
    If .Execute > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
        " file(s) found."
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i)
        Next i
    Else
        MsgBox "Non ho trovato files!."
    End If
End With
End Sub
Grazie a tutti !
Paolo

 ha scritto nel messaggio
news:7OWQ9.8215$lj5....@tornado.fastwebnet.it...

 Creati una tabella chiamata Links che abbia la seguente struttura:
Id                    Contatore e chiave primaria
Tipo                Testo
Path                Testo
Creati una maschera con visualizzazione a Maschere continue che abbia come
origine record la tabella Links.
Nell'intestazione della maschera inserisci una casella di testo non
associata chiamata Percorso.
A fronte dell'evento "Dopo aggiornamento" della casella di testo Percorso
genera il seguente codice VBA:
Private Sub Percorso_AfterUpdate()
Dim rst As Recordset
Dim MyName As String
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Links;"
DoCmd.SetWarnings True
If IsNull(Me!Percorso) Then Exit Sub
Set rst = CurrentDb().OpenRecordset("Links")
MyName = Dir(Me!Percorso, vbDirectory)
Do While MyName <> ""
    If MyName <> "." And MyName <> ".." Then
        rst.AddNew
        rst!Path = Me!Percorso & MyName
        If (GetAttr(Percorso & MyName) _
        And vbDirectory) = vbDirectory Then
            rst!Tipo = "Directory"
        Else
            rst!Tipo = "File"
        End If
        rst.Update
    End If
    MyName = Dir
Loop
Set rst = Nothing
Me.Requery
End Sub
Apri la maschera di cui sopra e nella casella di testo Percorso digita il
percorso completo della directory di cui vuoi memorizzare e visualizzare il
contenuto seguito da una barra rovesciata, quindi se vuoi vedere il
contenuto della directory Documenti che è contenuta nel disco rigido C,
nella casella di testo digita:
C:\Documenti\
Premi il tasto invio: nel corpo della maschera visualizzerai il contenuto
della directory che avrai anche memorizzato nella tabella Links.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

[SUPERCUT]
ATTENZIONE!!
La routine VBA che ti ho postato nel messaggio precedente fa riferimento
alla libreria Microsoft DAO, quindi se usi una versione di Access successiva
ad Access97, al tuo database aggiungi i riferimenti a tale libreria, avendo
cura che nell'elenco dei riferimenti tale riferimento preceda il riferimento
alla libreria Microsoft ADO.


 ha scritto nel messaggio
news:njZQ9.71823$Ou4.2...@twister2.libero.it...

Ciao Roberto e mille grazie per la soluzione che mi hai postato, ho (credo
...) scritto i riferimenti DAO nella funzione e ho provato a farla girare mi
restituisce un errore di run time 91 "variabile oggetto o variabile blocco
With non impostata".
E probabile che io non abbia impostato bene qualcosa ma francamente non
riesco ad immaginare cosa..... mi puoi cortesemente dare una mano ancora
questa volta per favore? :-)
Di seguito la funzione :
Option Compare Database
Private Sub Percorso_AfterUpdate()
Dim rst As Recordset
Dim MyName As String
Dim db As DAO.database
Set db = CurrentDb()
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Links;"
DoCmd.SetWarnings True
If IsNull(Me!Percorso) Then Exit Sub
Set links = CurrentDb().OpenRecordset("Links")
MyName = Dir(Me!Percorso, vbDirectory)
Do While MyName <> ""
    If MyName <> "." And MyName <> ".." Then
        rst.AddNew
        rst!path = Me!Percorso & MyName
        If (GetAttr(Percorso & MyName) _
        And vbDirectory) = vbDirectory Then
            rst!tipo = "Directory"
        Else
            rst!tipo = "File"
        End If
        rst.Update
    End If
    MyName = Dir
Loop
Set rst = Nothing
Me.Requery
End Sub
Ti ringrazio per l'attenzione e la cortesia....... buona serata  !
Paolo

 Di seguito la funzione :
[CUT]
Sostituisci la seguente tua riga di codice:
Set links = CurrentDb().OpenRecordset("Links")
con la seguente che avevo scritto io:
Set rst = CurrentDb().OpenRecordset("Links")
Inoltre sono inutili queste due righe di codice VBA:
Dim db As DAO.database
Set db = CurrentDb()
Per tranquillità sostituisci:
Dim rst As Recordset
con:
Dim rst As DAO.Recordset
così non è necessario che i riferimenti alla libreria Microsoft DAO
precedano i riferimenti alla libreria Microdoft ADO.


 Roberto
Roberto ....non ho parole ! funziona perfettamente !!!!!! ed è esattamene
ciò che da tempo volevo realizzare........... finalmente potrò catalogare
tutto!
Come sempre e con piacere ti auguro una serena serata e grazie della tua
infinita disponibilità!
Mi scuso per gli errorii che ho fatto ma....tradito dall'emozione
....succede
Grazie senza cifra.........:-))
Paolo (che sta imparando)


 ha scritto nel messaggio
news:_g0R9.8474$lj5.1...@tornado.fastwebnet.it...

Spero di non disturbare troppo Roberto, esiste il modo di fargli scansire
anche le sottodirectory ?
Per il resto mi sono costruito quanto serve a dividere le stringhe e
preparare i report e le automazioni per i conteggi vari ....sono molto
contento !
Grazie e a presto
Paolo

 Paolo
--
Roberto


 ha scritto nel messaggio
news:3%dR9.74806$TC5.2...@twister1.libero.it...

Ciao Roberto e grazie per la risposta, adesso mi documenterò bene su quanto
hai riportato e spero di riuscire a interpretare bene le cose....
Riguardo lo scopo del database ti diro che è quello di poter catalogare una
sterminata moltitudine di Cd che altrimenti non riuscirei piu a gestire
(sapere dove si trovano i file o i documenti ect.....)....
Una nota.... stamattina riprendendo il database mi è capitata una cosa per
me incomprensibile che è la seguente (alla digitazione del percorso da
scansire) :
errore di run-time  3125
"" non è un nome valido
verificare che non includa caratteri o punteggiatura non validi e che sia
troppo lungo
Mi sono letto le possibili cause da Help :
Regole standard per la denominazione
Set di regole specifiche per la denominazione degli oggetti DAO. I nomi
possono avere una lunghezza massima di 64 caratteri e possono includere
qualsiasi combinazione di lettere, numeri, spazi e caratteri speciali tranne
il punto (.), il punto esclamativo, l'apice inverso (`) e le parentesi
quadre ([ ]). Inoltre, non è possibile utilizzare spazi iniziali o caratteri
di controllo, corrispondenti ai valori ASCII compresi tra 0 e 31.
Quello che non comprendo e come sia potuto succedere dato che non è cambiato
nulla da ieri sera.
Riprovero da subito a vedere di capire meglio il fatto
Nel frattempo ti auguro una buona giornata!
Paolo

 Paolo
--


 Roberto
Roberto, ciao, la riga dove l'errore appare nel listato è il seguente :
CurrentDb.TableDefs.Append t
P.s. nel consultare l'help ho trovato un qualcosa che riguarda le directory
ricursive ....non appena mi è piu chiara ...provo...
Grazie per l'aiuto e la cortesia !
Paolo


 Paolo
--
Roberto


 ha scritto nel messaggio
news:RTiR9.75870$TC5.2...@twister1.libero.it...
