PDA

View Full Version : Sto impazzendo...ma per voi sarà elementare!!


marco1474
16-01-2004, 15:47
Ciao a tutti,
questa ala del forum mi mancava....e finalmente eccomi qua!! :)


E' da ieri che studio access per creare un database dei miei brani musicali. Hocreato 2 tabelle, una query di ricerca nella tabella 1 e una maschera con cui gestire il tutto :D

In questa tabella/query/maschera ci sono vari campi: Titolo, durata, autore, genere e così via.

Ho creato una maschera dove inserisco il titolo e lui riempie i dati mancanti grazie alle relazioni tra tabelle (non tutti i dati sono in una tabella).

Ora volevo fare in modo di poter ascoltare il brano trovato direttamente dalla maschera. Quindi ho creato un pulsante di azione collegato al link del brano!

Come potrete capire, al di la del brano che ho ricercato, mi fa ascoltare sempre lo stesso (quello inserito nel link)!!!!!!!

C'è un modo o un comando in VBA che associ al tasto il campo [Titolo] e ci aggiunga .MP3 di seguito???? In questo modo dopo aver trovato il titolo che cercavo, premendo il tasto PLAY lui legge il titolo dal campo [Titolo], ci aggiunge .MP3 in coda e fa partire mediaplayer!!!!!


Vi prego sto impazzendo

Penso sia l'unico modo per risolvere il problema. :(


Grazie in anticipo :D

Marco1474

marco1474
16-01-2004, 18:15
Forse non era prorpio così facile.....

Non potete proprio aiutarmi?? :)

matpez
16-01-2004, 18:33
Basta che all'evento di quel tasto ci metti una cosa del genere...

Private Sub Comando6_Click()

Call Shell(txtTitolo & ".mp3")

End Sub

Dove txtTitolo è il campo che contiene il titolo... solo che a shell gli serve la path vera del tuo mp3, altrimenti nn lo trova! :p

marco1474
19-01-2004, 09:21
Grazie matpez,
sono appena arrivato in studio. Ora provo subito e ti dico....comunque grazie ancora!! :D

marco1474
19-01-2004, 09:40
Eccomi quì...

Non funziona come dovrebbe. Mi scrive OVERFLOW!!!

Ti faccio vedere il VB inerente al pulsante in questione:

Private Sub Play_Click()
On Error GoTo Err_Play_Click


Call Shell(Brani / txtTitolo & ".mp3")

Exit_Play_Click:
Exit Sub

Err_Play_Click:
MsgBox Err.Description
Resume Exit_Play_Click

End Sub


Il files si trova nella stessa cartella del database Archivio.mdb sotto la cartella BRANI. Ho provato a mettere anche il path esteso ma niente.
Come posso risolvere????

Grazie in anticipo :D

Ciao :D



Marco1474

bsummer
19-01-2004, 09:56
Prova coì :

Call Shell("./Brani/" & txtTitolo & ".mp3")

Ciao :)

marco1474
19-01-2004, 12:13
Ho provato anche così ma mi dice FILE NON TROVATO!!! :eek:

Allora ho provato a scrivere:

Call Shell("./Brani/Parish.mp3")

Ho sostituito il txtTitolo con il files preciso ma stesso risultato: FILE NON TROVATO!!!!! :eek: :eek:

Poi ho messo il percorso completo preso dalla proprietà del files (quindi giusto):

Call Shell("C:\Documents and Settings\Marco1474\Documenti\Archivio Titania\BRANI\Parish.mp3")


Ma stessa cosa:

FILE NON TROVATO!!!!!! :eek: :eek: :eek:


Cosa altro posso provare....CI SONO VICINO :D


Grazie


Marco1474

cisky
19-01-2004, 13:05
Forse dico una boiata ma mi sembra che con il comando Shell si possano eseguire solo dei file eseguibili.
Perciò prova a fare una cosa di questo tipo.

P.S: In questo caso ho presupposto che usi Winamp, ma se usi un software diverso basta che controlli i parametri della riga di comando del software associato all'estensione .MP3.


Private Sub Comando0_Click()

Dim lRetVal As Long ' *** Hwnd Applicazione avviata
Dim sSongFullName As String ' *** Path + Nome canzone MP3 da suonare
Dim sShellExecute As String ' *** Comando Shell da eseguire

sShellExecute = "C:\Programmi\Winamp\Winamp.exe %1"
sSongFullName = "W:\Documenti\prova.mp3"

sShellExecute = Replace(sShellExecute, "%1", sSongFullName)

lRetVal = Shell(sShellExecute)

' *** Se lRetVal > 0 significa che è tutto OK!

End Sub



Ciao! ;)

marco1474
19-01-2004, 13:09
Ciao e grazie x l'interessamento :)

Il programma che uso e mediaplayer 9.

Potresti scrivere il listato completo in modo che possa fare un copia e incolla? Te ne sarei grato.

Comunque, se ho capito bene, così apro un file specifico e non il contenuto del record selezionato nella colonna Titolo!!!!


Grazie ancora


Marco1474

marco1474
20-01-2004, 09:49
Ho risolto grazie a Matpez (che non ringrazierò mai abbastanza per la pazienza e la disponibilità)

Posto di seguito il code così che possa essere d'aiuto a qualcun'altro:

code:-----------------------------------------------------------------------------
Private Sub Play_Click()
On Error GoTo Err_Play_Click

Dim sSong As String
Dim sShell As String


sSong = Chr(34) & CurrentProject.Path & "\BRANI\" & Titolo & ".mp3" & Chr(34)
sShell = "C:\Programmi\Windows Media Player\wmplayer.exe " & sSong

Call Shell(sShell)


Exit_Play_Click:
Exit Sub

Err_Play_Click:
MsgBox Err.Description
Resume Exit_Play_Click

End Sub-------------------------------------------------------------------------

L'unico problema è che mediaplayer non verrà visualizzato alla prima pressione del tasto ASCOLTA. Quindi non si potrà gestire il brano che si sta ascoltando con i tasti stop - pausa- avanti ecc. Questo problema non si presenta se il tasto viene premuto una seconda volta (mentre già si sta ascoltando il brano)!!!!
:eek:


Qualcuno può suggerirmi una soluzione????


In realtà dovrei gestire altri 2 pulsanti ma non vorrei chiedere troppo (soprattutto a Matpez).

Comunque io ci provo:


Un pulsante dovrebbe cancellare tutti i files dentro la cartella CD mentre l'altro dovrebbe copiare il brano del campo [Titolo].mp3 della cartella BRANI dentro la cartella CD.


Grazie ancora a tutti quelli che si sono resi disponibili nell'aiutarmi.

Marco1474

bsummer
20-01-2004, 10:29
Un possibile modo per cancellare tutti i files di una directory. La copia è molto simile.




Private Sub button_Click()

call deleteFolder("path assoluto o relativo alla directory")

end sub



sub deleteFolder(path as String)

dim fs,folder,files,file

set fs = CreateObject("Scripting.FileSystemObject")
set folder = fs.getFolder(path)
set files = folder.Files
for each file in files
file.Delete 1
next

end sub

marco1474
20-01-2004, 11:08
Grazie Bsummer.

Posso approfittare visto che ti vedo così disponibile?

Potrtesti scrivermi il codice dei 2 pulsanti (anche con i path giusti) in modo che io possa incollare quello che tu mi dai???

La directory è così fatta:

dentro documenti c'è una cartella chiamata ARCHIVIO TITANIA.
Dentro ARCHIVIO TITANIA ci sono ARCHIVIO.DB (il database), la cartella CD (dove dovranno essere cancellati tutti i files (pulsante 1) o copiato il file con nome = a [Titolo].mp3 (pulsante 2), la cartella BRANI dove ci sono i files.mp3.

Puoi farmi questo favore :p


Ti ringrazio comunque x la disponibilità.

bsummer
20-01-2004, 16:31
Prova così. In Vb dovrebbe funzionare, ma in VBA non te lo assicuro.


Private Sub Button1_Click()

dim fs,folder,files,file

set fs = CreateObject("Scripting.FileSystemObject")
set folder = fs.getFolder("c:\documenti\archivio titania\cd")
set files = folder.Files
for each file in files
file.Delete 1
next

end sub

Private Sub Button2_Click()

dim fs
dim origine as String
dim dest as String

set fs = CreateObject("Scripting.FileSystemObject")
origine = "c:\documenti\archivio titania\brani\" & [titolo] & ".mp3"
dest = "c:\documenti\archivio titania\cd\"
fs.copyFile origine, dest, true

end sub

marco1474
20-01-2004, 17:01
E' PERFETTO!!!!!!! :eek: :) :D :D :D :D


GRAZIIIIIIEEEEEEEEEE!!!!!!


Già così lo posso usare alla perfezione. Posso farti un'ultima domanda? :D


Io la faccio, se esagero mandami a quel paese:)

E' possibile sul tasto di cancellazione aggiungere un "SEI SICURO DI VOLER CANCELLARE IL VECCHIO CD?" prima di cancellare la directory CD??? E sul tasto di AGGIUNGI A CD un messaggio che dice "BRANO COPIATO" una volta copiato il file???

Se non è possibile va bene lo stesso.


Ancora grazie a BSUMMER e MATPEZ per la loro pazienza. Grazie ancora.

matpez
20-01-2004, 17:48
Private Sub Button1_Click()

dim fs,folder,files,file

If MsgBox("SEI SICURO DI VOLER CANCELLARE IL VECCHIO CD?" ", vbExclamation + vbYesNo) = vbYes Then
set fs = CreateObject("Scripting.FileSystemObject")
set folder = fs.getFolder("c:\documenti\archivio titania\cd")
set files = folder.Files
for each file in files
file.Delete 1
next
End If

end sub

Private Sub Button2_Click()

dim fs
dim origine as String
dim dest as String

set fs = CreateObject("Scripting.FileSystemObject")
origine = "c:\documenti\archivio titania\brani\" & [titolo] & ".mp3"
dest = "c:\documenti\archivio titania\cd\"
fs.copyFile origine, dest, true
msgbox "BRANO COPIATO"

end sub

bsummer
20-01-2004, 17:49
LOL.
Matpez mi ha preceduto :D

matpez
20-01-2004, 17:54
Originariamente inviato da bsummer
LOL.
Matpez mi ha preceduto :D

:cry: Scusa :cry:

marco1474
20-01-2004, 18:12
A Roma vi direbbero che vi meritate il mezzobusto(scultura del busto di un personaggio da ricordare) ar pincio (zona di roma dove sono ricordati grandi della storia:

VI MERITATE ER MEZZOBUSTO AR PINCIOOOO!!!!


Ragazzi lo provo subito e poi parto con i ringraziamenti :D