Help and Support

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

Identificativo articolo:285820
Ultima modifica:giovedì 2 febbraio 2006
Revisione:6.0
Per la versione di questo articolo relativa a Microsoft Access 2000, vedere 210100 (http://support.microsoft.com/kb/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).

Su 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.

Torna all'inizio

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.

Torna all'inizio

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                                |
-------------------------------------------------------------------------
					

Torna all'inizio

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.

Torna all'inizio

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.

Torna all'inizio

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.

Torna all'inizio

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.

Torna all'inizio

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
				

Torna all'inizio


Le informazioni in questo articolo si applicano a
?Microsoft Office Access 2003
?Microsoft Access 2002 Standard Edition

Torna all'inizio

Chiavi: 
kbhowto kbinterop kbdatabase kbprogramming kbreport kbdesign kbdisplay kbgraphic KB285820

Torna all'inizio

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.

Traduzione articoli

 

Related Support Centers

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.