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

Traduzione articoli Traduzione articoli
Identificativo articolo: 285820 - Visualizza i prodotti a cui si riferisce l?articolo.
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).

Espandi tutto | Chiudi tutto

In questa pagina

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 Database
    Option Explicit
    
    Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String
    On Error GoTo Err_DisplayImage
    
    Dim strResult As String
    Dim strDatabasePath As String
    Dim intSlashLocation As Integer
    
    With 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 If
    End With
        
    Exit_DisplayImage:
        DisplayImage = strResult
        Exit Function
    
    Err_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 Select
    End 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 Database
    Option Explicit
    
    Private Sub Form_AfterUpdate()
        CallDisplayImage
    End Sub
    
    Private Sub Form_Current()
        CallDisplayImage
    End Sub
    
    Private Sub txtImageName_AfterUpdate()
        CallDisplayImage
    End Sub
    
    Private 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 Database
    Option Explicit
    
    Private 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_DisplayImage
    
    Dim strDatabasePath As String
    Dim intSlashLocation As Integer
    
    With 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 If
    End With
        
    Exit_DisplayImage:
        Exit Function
    
    Err_DisplayImage:
        Select Case Err.Number
            Case Else
                MsgBox Err.Number & " " & Err.Description
                Resume Exit_DisplayImage:
        End Select
    End Function
    				
  3. Aggiungere il seguente codice dietro la maschera:
    Option Compare Database
    Option Explicit
    
    Private Sub Form_AfterUpdate()
        CallDisplayImage
    End Sub
    
    Private Sub Form_Current()
        CallDisplayImage
    End Sub
    
    Private Sub txtImageName_AfterUpdate()
        CallDisplayImage
    End Sub
    
    Private Sub CallDisplayImage()
        DisplayImageWeb Me.WebBrowser9, Me.txtImageName
    End Sub
    				

ProprietÓ

Identificativo articolo: 285820 - Ultima modifica: martedý 17 maggio 2011 - Revisione: 7.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Chiavi:á
kbdatabase kbdesign kbgraphic kbdisplay kbreport kbhowto kbinterop kbprogramming KB285820
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com