Pubblicato il 4 Luglio 2020 da Maurizio Matetich
Come estrarre il nome di una foto da un percorso
Pubblicato il 4 Luglio 2020 da Maurizio Matetich
Ho una tabella Access dove inserisco gli articoli con il codice, la descrizione, il prezzo e anche la foto. La foto è identificata dal percorso completo, ma io voglio ricavare solo il nome del file.
Il campo foto è di tipo testo e all’interno memorizzo il percorso completo del file. Ad esempio c:\articoli\categoria1\nome-articolo-01.jpg.
Alle volte mi serve conoscere il nome del file (nel nostro esempio è nome-articolo-01.jpg). Come posso fare ? Non posso ricavarlo manualmente perchè perderei molto tempo e potrei sbagliare. Dimenticavo … la tabella che sto utilizzando contiene oltre 10.000 articoli e quasi tutti hanno una foto!
Posso risolvere il problema con una semplice routine VBA in Access. A proposito, se vuoi sfruttare tutta la potenza di Access ti suggerisco il mio corso VBA per Access.
Il codice VBA da utilizzare
La tabella si chiama Articoli e il campo che contiene il percorso completo si chiama PercorsoFoto. Per comodità, ho aggiunto un campo di nome Foto dove andrò a scrivere il nome della foto senza il percorso completo.
In pratica, se PercorsoFoto = c:\articoli\categoria\sottocategoria\particolare-articolo-abc.jpg
allora Foto = particolare-articolo-abc.jpg
Le istruzioni VBA da utilizzare sono: For, Do While, Len, Right, Mid e il classico If-then
La soluzione che ho adottato
In pratica con l’istruzione Len trovo la lunghezza del percorso completo. Poi con un ciclo For parto dall’ultimo carattere del percorso e mi muovo all’indietro finchè non trovo il primo carattere “\”. Questo carattere mi dice che è finito il nome del file della foto.
A questo punto conosco la lunghezza del nome del file (ho contato i caratteri), quindi lo posso estrarre dal percorso e lo memorizzo nel campo Foto.
Ripeto queste istruzioni con un Do while per controllare tutti i record della tabella (sono oltre 10.000 !!!)
Dim LunghezzaPath, LunghezzaFoto, i As Integer
Dim rs1 As DAO.Recordset
Set rs1 = CurrentDb.OpenRecordset(“Articoli”, dbOpenTable)
‘mi posiziono sul primo record
rs1.MoveFirst
Do While Not rs1.EOF
rs1.Edit
‘trovo il numero di caratteri del percorso. Devo inserire anche Nz perchè alcuni articoli non hanno la foto e allora avrei un errore
LunghezzaPath = Nz(Len(rs1.Fields(“PercorsoFoto”)))
For i = 0 To LunghezzaPath – 1
CaratterePath = Mid(rs1.Fields(“PercorsoFoto”), (LunghezzaPath – i), 1)
If CaratterePath = “\” Then
LunghezzaFoto = i
i = LunghezzaPath
End If
Next i
rs1.Fields(“Foto”) = Right(rs1.Fields(“PercorsoFoto”), LunghezzaFoto)
rs1.update
‘fine estrazione nome foto
‘passo al record successivo
rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
MsgBox “Estrazione dei nomi delle foto completata”
Conclusioni
Anche un’operazione apparentemente complessa, come quella di ricavare il nome di una foto da un percorso completo, si può risolvere in modo semplice e veloce.
Ovviamente devi conoscere bene le istruzioni base di VBA quali il ciclo For, l’istruzione Do While e la scrittura nei campi di una tabella. Per imparare ad utilizzare bene queste istruzioni ti consiglio il mio corso di Access base e successivamente anche il mio corso di VBA per Access.
Hai provato le istruzioni che ho scritto sopra ? Quali difficoltà hai trovato ?
Scrivilo nei commenti.
Scrivi un commento