Al momento sei offline in attesa che la connessione Internet venga ristabilita

Visualizzazione di immagini di una cartella in una maschera, in un report o in una pagina di accesso ai dati

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Per la versione di questo articolo relativa a Microsoft Access 2000, vedere 210100.

Utenti esperti: sono richieste conoscenze avanzate di gestione di codice, interoperabilità e funzioni multiutente.

Le informazioni contenute in questo articolo si applicano ai database di Microsoft Access (mdb) e ai progetti di Microsoft Access (adp).

Sommario
A volte risulta poco pratico memorizzare le immagini in una tabella di Microsoft Access. Se le immagini sono numerose o di grandi dimensioni, la dimensione del file del database di Microsoft Access può aumentare rapidamente.

In questo articolo viene illustrata una funzione personalizzata che è possibile utilizzare per:
  • Memorizzare i percorsi e i nomi file delle immagini in una tabella.
  • Visualizzare le immagini mediante un controllo immagine.
  • Nascondere il controllo immagine se non sono disponibili immagini.
  • Fornire informazioni sullo stato di visualizzazione dell'immagine.
Questo articolo contiene inoltre un esempio di script di Visual Basic che è possibile utilizzare per visualizzare le immagini in una pagina di accesso ai dati.

NOTA: sebbene in questo esempio vengano utilizzate immagini bitmap (bmp), è possibile utilizzare anche altri tipi di immagini, ad esempio jpg, pcx e gif.
Informazioni
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare procedura, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare procedure atte a soddisfare specifiche esigenze.

Creazione della tabella per la memorizzazione di dati su file e percorsi

  1. Aprire il database di esempio Northwind.mdb o il progetto di esempio NorthwindCS.adp.
  2. Creare la seguente tabella in Northwind.mdb o in NorthwindCS.adp.

    In Northwind.mdb:
       Tabella: tblImage   ---------------------------------------   Nome campo: ImageID   Tipo dati: AutoNumber   Indicizzato: Sì (Duplicati non ammessi)   Nome campo: txtImageName   Tipo dati: Text   Proprietà tabella: tblImage   ---------------------------   ChiavePrimaria: ImageID						
    In NorthwindCS.adp:
       Tabella: tblImage   ------------------------------   Nome colonna: ImageID   TipoDati: Int   Ammetti Null: Non selezionata   Identità: Sì   Nome colonna: txtImageName   TipoDati: varchar   Proprietà tabella: ImageTable   -----------------------------------   Vincolo di chiave primaria: ImageID					
  3. Aprire la tabella tblImage in visualizzazione Foglio dati, quindi aggiungere il percorso e il nome di un file bitmap a ciascun record. Nella seguente tabella di esempi viene illustrato come potrebbero apparire i record:
    -------------------------------------------------------------------------| Tipo                     | Esempio                                    |-------------------------------------------------------------------------| Assoluto (locale)        | C:\Windows\Zapotec.bmp                     || Assoluto (percorso UNC)  | \\Nomeserver\nomecondivisione\Zapotec.bmp  || Relativo                 | Zapotec.bmp                                |-------------------------------------------------------------------------					

Creazione della funzione personalizzata

  1. Creare un nuovo modulo, quindi incollare o digitare il seguente codice:
    Option Compare DatabaseOption ExplicitPublic Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As StringOn Error GoTo Err_DisplayImageDim strResult As StringDim strDatabasePath As StringDim intSlashLocation As IntegerWith ctlImageControl    If IsNull(strImagePath) Then        .Visible = False        strResult = "No image name specified."    Else        If InStr(1, strImagePath, "\") = 0 Then            ' Path is relative            strDatabasePath = CurrentProject.FullName            intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))            strDatabasePath = Left(strDatabasePath, intSlashLocation)            strImagePath = strDatabasePath & strImagePath        End If        .Visible = True        .Picture = strImagePath        strResult = "Image found and displayed."    End IfEnd With    Exit_DisplayImage:    DisplayImage = strResult    Exit FunctionErr_DisplayImage:    Select Case Err.Number        Case 2220       ' Can't find the picture.            ctlImageControl.Visible = False            strResult = "Can't find image in the specified name."            Resume Exit_DisplayImage:        Case Else       ' Some other error.            MsgBox Err.Number & " " & Err.Description            strResult = "An error occurred displaying image."            Resume Exit_DisplayImage:    End SelectEnd Function	
  2. Salvare il modulo come Module1.

Utilizzo della funzione personalizzata in una maschera

  1. Creare la nuova maschera seguente basata sulla tabella tblImage.
       Maschera: frmImage   ------------------------   Etichetta: Image Form   OrigineRecord: tblImage   Controllo immagine   ----------------------------------   Nome: ImageFrame   Immagine: "C:\Windows\Zapotec.bmp"   Casella di testo   -------------------------   Nome: txtImageID   OrigineControllo: ImageID   Casella di testo   ------------------------------   Nome: txtImageName   OrigineControllo: txtImageName   Casella di testo   -------------------------   Nome: txtImageNote   OrigineControllo: <Vuoto>						
    NOTA: se si desidera che il percorso non venga visualizzato nella maschera, è possibile impostare la proprietà Visibile del controllo txtImageName su False.
  2. Scegliere Codice dal menu Visualizza, quindi incollare o digitare il seguente codice:
    Option Compare DatabaseOption ExplicitPrivate Sub Form_AfterUpdate()    CallDisplayImageEnd SubPrivate Sub Form_Current()    CallDisplayImageEnd SubPrivate Sub txtImageName_AfterUpdate()    CallDisplayImageEnd SubPrivate Sub CallDisplayImage()    Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName)End Sub					
  3. Aprire la maschera frmImage in visualizzazione Maschera. Nella maschera viene visualizzata la bitmap corrispondente per ogni record. Se il campo txtImageName è vuoto o se non è possibile trovare l'immagine, vengono visualizzati i messaggi appropriati anziché la cornice dell'immagine.

Utilizzo della funzione personalizzata in un report

  1. Creare il nuovo report seguente basato sula tabella ImageTable.
       Report: rptImage   -----------------------   Etichetta: Image Report   OrigineRecord: tblImage   Controllo immagine   ----------------------------------   Nome: ImageFrame   Immagine: "C:\Windows\Zapotec.bmp"   Casella di testo   -------------------------   Nome: txtImageID   OrigineControllo: ImageID   Casella di testo   ------------------------------   Nome: txtImageName   OrigineControllo: txtImageName   Casella di testo   -------------------------   Nome: txtImageNote   OrigineControllo: <Vuoto>						
    NOTA: se si desidera che il percorso non venga visualizzato nel report, è possibile impostare la proprietà Visibile del controllo txtImageName su False.
  2. Scegliere Codice dal menu Visualizza, quindi incollare o digitare il seguente codice:
    Option Compare DatabaseOption ExplicitPrivate Sub Detail_Print(Cancel As Integer, PrintCount As Integer)    Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName)End Sub					
  3. Riaprire il report rptImage in anteprima di stampa. Nel report viene visualizzata la bitmap corrispondente per ogni record. Se il campo txtImageName è vuoto o se non è possibile trovare l'immagine, vengono visualizzati i messaggi appropriati anziché la cornice dell'immagine.

Duplicazione della funzione personalizzata in una pagina di accesso ai dati

  1. Creare la nuova pagina di accesso ai dati seguente basata sulla tabella tblImage.
       Pagina di accesso ai dati: dapImage   -----------------------------------   Titolo: Image Data Access Page   Controllo immagine   ------------------   ID: ImageFrame     Casella di testo   -------------------------   ID: txtImageID   OrigineControllo: ImageID   Casella di testo   ------------------------------   ID: txtImageName   OrigineControllo: txtImageName						
    NOTA: se si desidera che il percorso non venga visualizzato nella pagina, è possibile impostare la proprietà Visibilità del controllo txtImageName su Nascosto.
  2. Scegliere Macro dal menu Strumenti, quindi scegliere Microsoft Script Editor.
  3. Aggiungere il seguente script all'evento corrente di MSODSC nella parte di tag HEAD del documento HTML.

    NOTA: è necessario passare un parametro per attivare l'evento.
    <SCRIPT language=vbscript event=Current(oEventInfo) for=MSODSC><!--	ImageFrame.src=txtImageName.value--></SCRIPT>					
  4. Aprire la pagina dapImage in visualizzazione Pagina. Nella pagina viene visualizzata la bitmap corrispondente per ogni record. Se il campo txtImageName è vuoto, viene visualizzata un'icona di controllo. Se non è possibile trovare l'immagine, nel controllo immagine viene visualizzata l'icona di una X.

Utilizzo di un percorso http:// path in una maschera

Per utilizzare un percorso http:// in una maschera, utilizzare il controllo browser Web (shdocvw.dll) come segue:
  1. Aggiungere un controllo browser Web alla maschera e denominarlo WebBrowser.
  2. Aggiungere a un modulo il seguente codice:
    Public Function DisplayImageWeb(ctlBrowserControl As Control, _strImagePath As Variant)On Error GoTo Err_DisplayImageDim strDatabasePath As StringDim intSlashLocation As IntegerWith ctlBrowserControl    If IsNull(strImagePath) Then    ElseIf Left(strImagePath, 4) = "http" Then        .Navigate (strImagePath)    Else        If InStr(1, strImagePath, "\") = 0 Then            ' Path is relative            strDatabasePath = CurrentProject.FullName            intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))            strDatabasePath = Left(strDatabasePath, intSlashLocation)            strImagePath = strDatabasePath & strImagePath        End If        .Navigate (strImagePath)    End IfEnd With    Exit_DisplayImage:    Exit FunctionErr_DisplayImage:    Select Case Err.Number        Case Else            MsgBox Err.Number & " " & Err.Description            Resume Exit_DisplayImage:    End SelectEnd Function				
  3. Aggiungere il seguente codice dietro la maschera:
    Option Compare DatabaseOption ExplicitPrivate Sub Form_AfterUpdate()    CallDisplayImageEnd SubPrivate Sub Form_Current()    CallDisplayImageEnd SubPrivate Sub txtImageName_AfterUpdate()    CallDisplayImageEnd SubPrivate Sub CallDisplayImage()    DisplayImageWeb Me.WebBrowser9, Me.txtImageNameEnd Sub				
link point inf image jpg bmp event graphic filter path picture tif tiff gif store table ACC2002 ACC2003
Proprietà

ID articolo: 285820 - Ultima revisione: 05/17/2011 11:14:00 - Revisione: 7.0

Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbdatabase kbdesign kbgraphic kbdisplay kbreport kbhowto kbinterop kbprogramming KB285820
Feedback