Gestione di Immagini e Foto in Access

In una lezione precedente avevamo trattato di come implementare una semplicissima gestione dei clienti in Access, che potrebbe anche essere usata per qualsiasi altro tipo di anagrafica come gli articoli di magazzino. Nel mio nuovo software gestionale per il magazzino Calus, tutti i prodotti hanno la possibilità di mostrare una foto o immagine, a me sembra molto utile questa caratteristica perché consente di vedere immediatamente anche ad occhio l’oggetto che si sta modificando ed inoltre potrebbe anche essere utilizzata in un sito web per l’e-commerce. Ovviamente la gestione delle immagini e foto in Calus è molto potente perché consente oltre che di scegliere il file anche di acquisirlo tramite WIA ( Windows Image Acquisition ). In questa lezione noi faremo soltanto un semplice esempio, ma che può essere utilizzato in applicazioni reali. Le foto o immagini sono gestite come dati binari che vengono immagazzinati consecutivamente e vanno gestiti con i dati di tipo “Oggetto OLE“, che non sono altro che dati serializzabili, in particolare OLE è l’acronimo di Object Linking and Embedding. Se creiamo una maschera ed inseriamo un campo di tipo “Oggetto OLE“, automaticamente Access inserisce un controllo “Cornice Oggetto Associato” ed oltre a foto ed immagini è possibile inserire qualsiasi tipo di oggetto registrato nel nostro sistema operativo. Questo modo di procedere è molto semplice ed immediato, ma permette di inserire qualsiasi cosa e non possiamo gestire la grandezza dei dati che l’utilizzatore dell’applicativo immette nel database. Per ovviare a questi problemi possiamo far caricare un’immagine o foto con l’indirizzo del file, che in questo modo non andrà nel database, ma avremo soltanto il percorso al file, nella tabella, quindi, al posto di “Oggetto OLE” inseriamo un campo testuale di 250 caratteri e lo rinominiamo in “link”. Prepariamo la maschera con un controllo “Pulsante di Comando” ed uno “Immagine”, apriamo l’editor per il VBA ed inseriamo questo codice

Option Compare Database

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
     "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
   lStructSize As Long
   hwndOwner As Long
   hInstance As Long
   lpstrFilter As String
   lpstrCustomFilter As String
   nMaxCustFilter As Long
   nFilterIndex As Long
   lpstrFile As String
   nMaxFile As Long
   lpstrFileTitle As String
   nMaxFileTitle As Long
   lpstrInitialDir As String
   lpstrTitle As String
   flags As Long
   nFileOffset As Integer
   nFileExtension As Integer
   lpstrDefExt As String
   lCustData As Long
   lpfnHook As Long
   lpTemplateName As String
End Type

Function LaunchCD(strform As Form) As String
   Dim OpenFile As OPENFILENAME
   Dim lReturn As Long
   Dim sFilter As String
   OpenFile.lStructSize = Len(OpenFile)
   OpenFile.hwndOwner = strform.Hwnd
   sFilter = "Tutti i Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
      "JPEG Files (*.jpg)" & Chr(0) & "*.JPG" & Chr(0)
   OpenFile.lpstrFilter = sFilter
   OpenFile.nFilterIndex = 1
   OpenFile.lpstrFile = String(257, 0)
   OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
   OpenFile.lpstrFileTitle = OpenFile.lpstrFile
   OpenFile.nMaxFileTitle = OpenFile.nMaxFile
   OpenFile.lpstrInitialDir = "C:\"
   OpenFile.lpstrTitle = "Selezionare un file immagine"
   OpenFile.flags = 0
   lReturn = GetOpenFileName(OpenFile)
   If lReturn = 0 Then
      MsgBox "Nessun file selezionato!", vbInformation, _
           "Selezionare un file immagine"
   Else
       LaunchCD = Trim(Left(OpenFile.lpstrFile,
                 InStr(1, OpenFile.lpstrFile,
                 vbNullChar) - 1))
   End If

End Function

Private Sub Comando0_Click()

   Dim strFile As String
   strFile = LaunchCD(Me)
   If Not IsNull(strFile) Or Len(strFile) > 0 Then
      Immagine1.Picture = strFile
   End If

End Sub

Utilizziamo una funzione che risiede nelle librerie del sistema operativo e più precisamente in comdlg32.dll per fare in modo di visualizzare la finestra di scelta del file e poi inseriamo il percorso in un controllo “Immagine”. Potete modificare le proprietà del controllo “Immagine”, facendo in modo di non ritagliare l’immagine, ma espanderla. Ultimo lavoro da fare è prendere la stringa del percorso del file e salvarla nel campo link della tabella, ma se avete seguito le lezioni precedenti potete certamente farlo da soli. Il corso sulla creazione di applicazioni gestionali in Access si conclude qui, penso di avervi spiegato tutte le basi per cominciare a scrivere autonomamente i vostri programmi, se aveste bisogno di aiuto potete contattarmi nel nostro forum online. Per vedere una mia applicazione gratuita in formato sorgente su Access, potete scaricare MerciGest.

<< Lezione PrecedenteInizio Corso

Pubblicato
Etichettato come Office Taggato

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.

1 commento

  1. Grazie mille!!
    Esempio chiarissimo e facile da implementare.
    Praticamente ricercato, trovato, copiato, incollato ed eseguito in meno di cinque minuti.
    Complimenti e bravo
    Giorgio Roncolato

I commenti sono chiusi.