Newsgroup: it.comp.appl.access
Titolo: Importazione nomi files

Ciao a tutti..
il mio problema č questo:
ho una tabella con i seguenti campi:
Id,Titolo,Autore
sull' hard-disk ho una cartella con dei files musicali...
esiste un modo per importare automaticamente il nome dei file nella tabella?
cosě evito di scrivere quasi 500 files a mano...
grazie
--------------------------------
Inviato via 
http://usenet.libero.it

Ciao a tutti!
il mio problema è questo:
ho una casella di riepilogo e dei pulsanti di ricerca(ricerca per titolo,
per autore, etc..)
la ricerca viene effettuata in una tabella che ha i seguenti campi:
Id Titolo Autore
come faccio ad importare nella tabella tutti i nomi dei files contenuti in
una cartella?
per evitare di scrivere tutto a mano dato che sono quasi 500!
dato che non credo sia possibile distinguere il titolo dall'autore..andrebbe
anche bene un nome unico..nel caso modifico la tabella..



scusate non volevo postare 2 volte


Esperti aiutatemi!
Bisio dove sei? :-(


 Bisio dove sei? :-(
  Zelig?
--
http://digilander.libero.it/SimonenomiS/
 

 grazie
_________
A me funziona cosě:
Dim rst As Recordset
Dim i As Integer
    With Application.FileSearch
        .LookIn = "c:\tmp"
        If .Execute() > 0 Then
            Set rst = CurrentDb.OpenRecordset("Tabella2")
            For i = 1 To .FoundFiles.count
              rst.AddNew
                rst!Titolo = miD(Application.FileSearch.FoundFiles(i),
Len(Application.FileSearch.LookIn) + 2, _
                            Len(Application.FileSearch.FoundFiles(i)) -
(Len(Application.FileSearch.LookIn) + 5))
              rst.Update
            Next
            rst.Close
        End If
    End With
ciao Riccardo


Se la tabella si chiama Tabella1 ed ha la struttura che hai sopra scritto.
Se vuoi caricare nel campo Titolo i nomi dei file mp3 che si trovano nella
cartella MiaMusica del disco C:, prova cosě:
Dim MyName As String
MyName = Dir("C:\MiaMusica\*.mp3")
DoCmd.SetWarnings False
Do While MyName <> ""
    DoCmd.RunSQL "INSERT INTO Tabella1 ( Titolo ) SELECT " & _
    Chr$(34) & MyName & Chr$(34) & " AS Espr1;"
    MyName = Dir
Loop
DoCmd.SetWarnings True
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Roberto
_______
sei troppo forte Roberto!
io mi sono impazzito con la risposta che ho dato, e tu con molte meno righe
hai ottenuto lo stesso!
ciao Riccardo

 _______
grazie funziona!
mentre crea la tabella è possibile inserire una percentuale di
caricamento?..è solo un fatto estetico questo..mi chiedevo se fosse
possibile..
grazie 1000!


i nomi dei files che importo nella tabella vengono poi inseriti in una
casella di riepilogo..è possibile fare in modo che cliccando sul nome del
file nella casella di riepilogo si apra il file?
grazie



Innanzitutto mi ero dimenticato, nel codice VBA che ti avevo postato
precedentemente l'esecuzione di una query di eliminazione che elimina tutti
i record eventualmenye presenti in Tabella1, pertanto dopo la riga di
codice:
DoCmd.SetWarnings False
inserisci questa riga di codice:
DoCmd.RunSQL "DELETE * FROM TAbella1;"
Per risolvere il tuo fatto estetico potresti usare una barra di
progressione: nella Sezione General del Sito Comune (link qui sotto) leggiti
la FAQ di Harry Evans intitolata "Creare barre di progressione":
naturalmente scaricati il database di esempio in essa allegato.
Molto piů facile, anche di minor effetto, č usare la barra di progressione
che č incorporata nella barra di stato (quella in basoo alla videata) di
Access.
Se ti va bene quest'ultima soluzione, per prima cosa dal menu Strumenti
scegli Avvio: nella finestra di dialogo che ti compare attiva la casella di
controllo Visualizza barra di stato nel caso fosse disattivata.
Quindi modifica l codice VBA che ti avevo postatto la volta scorsa in questa
maniera:
Dim MyName As String
Dim imax As Integer, ret As Variant, i As Integer
imax = 0
MyName = Dir("C:\Documenti\My Music\*.mp3")
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM TAbella1;"
Do While MyName <> ""
    imax = imax + 1
    MyName = Dir
Loop
MyName = Dir("C:\Documenti\My Music\*.mp3")
ret = SysCmd(acSysCmdInitMeter, "Carica i nomi dei file musicali in
tabella", imax)
i = 1
Do While MyName <> ""
    DoCmd.RunSQL "INSERT INTO Tabella1 ( NomeFile ) SELECT " & _
    Chr$(34) & MyName & Chr$(34) & " AS Espr1;"
    ret = SysCmd(acSysCmdUpdateMeter, i)
    i = i + 1
    MyName = Dir
Loop
ret = SysCmd(acSysCmdClearStatus)



Il modo per eseguire da codice VBA il suono di un file WAV lo trovi sul Sito
Comune (link qui sotto), nella Sezione General, nella FAQ di Stefano Bettini
intitolata Come gestire i "suoni" in VBA? (32 bit) .
Per i file musicali .MID e .AVI trovi la API da usare nella Sezione APIs nel
sito 
http://www.mvps.org/access/api/index.htm
 .
Non ho da darti indicazioni per eseguire da VBA file musicali di tipo mp3.
Però puoi ricorrere ad un trucchetto.
Se la casella di riepilogo si chiama Elenco.
Se la tabella è Tabella1 degli esempi discussi nei messaggi precedenti e nel
campo Titolo contiene solo il nome del file musicale ma non il suo
indirizzo.
Se la cartella che contiene i file musicali ha il seguente indirizzo
C:\Documenti\My Music\ .
Se la casella di riepilogo contiene una sola colonna ed ha come origine riga
il seguente codice SQL:
SELECT DISTINCTROW Tabella1.Titolo FROM Tabella1 ORDER BY Tabella1.Titolo;
Inserisci nella tua maschera anche un pulsante di comando chiamato Suona.
A fronte dell'evento "Su clic" della casella di riepilogo genera la seguente
riga di codice VBA:
Me!Suona.HyperlinkAddress = "C:\Documenti\My Music\" & Me!Elenco
In questa maniera puoi eseguire qualsiasi tipo di file musicale, però prima
verà aperto l'applicativo che è in grado di eseguirlo.


la casella di riepilogo ha questa origine:
SQL = "SELECT * FROM Lista WHERE titolo LIKE '*" & ric & "*' ORDER BY
titolo"
elenco.rowsource=SQL
elenco.requery
anche se si apre Windows Media Player per esempio non importa va bene
comunque.
e per gli altri tipi di file come funziona?(jpg, bmp x esempio)
ti ringrazio


 ti ringrazio


 comando viene prima aperto l'applicativo e poi il file.
la casella di riepilogo ha 2 colonne (0;6;50;4)
la tabella lista ha 2 campi Id e titolo
mentre ho una tabella Origine che ha i campi Id e percorso(in questo campo
salvo il percorso nel quale cercare i file che può essere cambiato)
come devo fare?
grazie



E le due tabelle (Lista e Origine) in base a quale campi sono in relazione
tra di loro; si, insomma, come leghi il titolo di un brano al percorso del
suo file?
Non č per caso che dovresti lavorare con un'unica tabella che contiene Id,
Titolo e Percorso.
Penso che la tabella Origine te la crei con la routine che ti ho postato nei
messaggi precedenti. E' cosě?
Mentre immagino che il campo Id della tabella Origine sia di tipo Contatore,
quello della tabella Lista che tipo di campo ha?
Il campo Percorso contiene il path completo del file (indirizzo + nome file
+ extention) oppure solamente il nome file + la sua extention come avevamo
discusso nei messaggi precedenti?
E poi i numeri (0;6;50;4) cosa sono?
Scusa se ti faccio tante domande, ma mi sembra che da quando abbiamo
iniziato la chiacchierata tu hai cambiato molte cose che solo tu conosci, ma
che sono importanti ai fini della soluzione complessiva del problema.
Ad esempio il fatto che tu vuoi spostare fisicamente il file cambia un po'
tutto lo scenario, specialmente per la creazione dei record delle due
tabelle.


 Roberto
ciao! hai ragione ho cambiato alcune cose...
il programmino funziona così:
si scegli un origine dati(una sola) nella quale cercare i files...quindi la
tabella origine avrà sempre e solo un record(quando si cambia l'origine dati
viene prima svuotata la tabella origine)
le due tabelle quindi non sono in relazione...la tabella origine mi serve
solo per andare a leggere il percorso
forse non è molto funzionale...vabbè...
come posso fare?


> > E poi i numeri (0;6;50;4) cosa sono?
sono "LARGHEZZA COLONNA"



Penso che hai deciso di mandarmi al manicomio!
Hai scritto precedentemente che le colonne della casella di riepilogo sono 2
e poi mi dai QUATTRO larghezze?
Beh, uno di noi due ha le traveggole.



Comincia ad esserci un po' di luce! :-)
Se la casella di riepilogo si chiama Elenco ed ha DUE colonne e l'origine
riga che hai postato tu nei messaggi precedenti.
Se la la tabella Lista ha solo due campi: id (Contatore e chiave primaria) e
Titolo (Testo).
Se la tabella Origine ha due campi : Id (Contatore e chiave primaria) e
Percorso (Testo)
Se il pulsante di comando si chiama Suona.
A fronte dell'evento "Su clic" della casella di riepilogo genera il seguente
codice VBA:
Private Sub Elenco_Click()
Me!Suona.HyperlinkAddress = _
DLookup("percorso", "Origine") & _
Me!Elenco.Column(1)
Me!Suona.SetFocus
SendKeys "{ENTER}"
End Sub
Ho apportato una modifica per cui non devi più pigiare il pulsante Suona
dopo che hai scelto il titolo del brano sulla casella di riepilogo, Access
se lo pigia da solo.


mi da questo errore:
Errore di sintassi (Operatore mancante) nell'espressione della query
'c:\prova\'.
ecco il listato:
Me.suona.HyperlinkAddress = DLookup("c:\prova\", "Origine") &
Me.Elenco.Column(1)
Me.suona.SetFocus
SendKeys "{ENTER}"
ma in Origine che devo metterci?


 ma in Origine che devo metterci?
Mi spieghi per quale cavolo di motivo hai sostituito nella DLookup
"percorso" con "c:\prova\".
Non hai scritto tu che il campo della tabella Origine si chiama
"percorso"???
Forse č bene che vai sull'help e ti leggi cosa c'č scritto riguardo la
funzione DLookup.
Capisco che hai ancora difficoltą a capire ciņ che scrivo, ma almeno copia
bene; io fossi in te farei un banalissimo copia/incolla di quello che ti ho
postato nel mio messaggio precedente.


ok funziona grazie..
e scusa x l'iniziativa..pensavo che bisognava specificare il percorso...
sbagliando s'impara no?
