Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Bilder in Access, Teil 2: Externe Bilder in Formularen anzeigen

Nachdem Sie im ersten Teil dieser Beitragsreihe erfahren haben, wie Sie Bilder als verknüpfte und nicht verknüpfte OLE-Objekte in der Datenbank speichern, erfahren Sie im zweiten Teil, wie Sie die Bilder in der Datenbank anzeigen können, ohne sie darin zu speichern.

 

Beiträge dieser Beitragsreihe:

Teil 1: OLE-Objekte in Tabellen speichern

Teil 2: Externe Bilder in Formularen anzeigen

Teil 3: Bilder als Datenstrom in Access speichern

Teil 4: Eingebettete Bilder als .jpg-Dateien exportieren

Beispieldatenbank

Die Beispieldatenbank BilderInAccess.mdb enthält die Beispiele der kompletten Beitragsreihe. Die Datenbank enthält eine Tabelle zum Speichern von Bildern sowie Formulare zur Anzeige und zum Importieren von Bilddaten.

Bilder per Verweis anzeigen

Der große Nachteil beim Speichern von Bilddateien in Datenbanken ist, dass sie nicht in dem herkömmlichen Format, sondern in einem Windows-internen Format abgespeichert werden, das dem von Bitmaps ähnelt. Dadurch können Datenbanken beim Speichern vieler Bilder schnell ins Unermessliche anwachsen. Um dieses Problem zu umgehen, speichern Sie die Bilder einfach auf der Festplatte und legen in der Datenbank ein Feld mit der genauen Pfadangabe zu der Bilddatei an:

  1. Legen Sie eine neue Tabelle namens tblBilderVerknuepft an und fügen Sie der Tabelle die drei Felder BildID, Bildpfad, Bilddatei und Bildbeschriftung hinzu.
  2. Stellen Sie die Zeichenanzahl der beiden Textfelder Bildpfad und Bildbeschriftung ruhig etwas großzügiger auf 255 Zeichen ein.

Damit ist die Tabelle bereits fertig. Fügen Sie fürs erste ein oder zwei Beispieldatensätze mit Bildpfaden zu existierenden Bilddateien ein, damit Sie das im nächsten Schritt zu erstellende Formular direkt ausprobieren können.

Externe Bilder im Formular

Damit Sie die Bilder mit den angegebenen Bildpfaden in einem Formular anzeigen können, benötigen Sie ein Bildsteuerelement. Mit den folgenden Schritten erstellen Sie ein Formular wie im ersten Teil der Beitragsreihe, allerdings mit externen Bildern:

  1. Zeigen Sie ein neues Formular in der Entwurfsansicht an und weisen Sie der Eigenschaft Datenherkunft den Wert tblBilderVerknuepft zu.
  2. Ziehen Sie die die drei Felder der Datenherkunft aus der Feldliste in den Detailbereich des Formulars.
  3. Fügen Sie ein Bildsteuerelement hinzu.

Beim Einfügen des Bildsteuerelements gehen Sie folgendermaßen vor: Klicken Sie auf das entsprechende Symbol der Toolbox und anschließend auf die gewünschte Stelle im Formular klicken. Es erscheint ein Dialog, der Sie nach der einzufügenden Bilddatei fragt. Sie müssen hier eine Bilddatei auswählen, da das Bildsteuerelement sonst nicht erstellt wird. Geben Sie hier am besten direkt ein Bild an, dass die Abmessungen der später einzufügenden Bilder hat - so wird das Steuerelement direkt in der richtigen Größe angelegt.

Fahren Sie nun folgendermaßen fort:

  1. Benennen Sie das Bildsteuerelement in picBildVerknuepft um.
  2. Löschen Sie das derzeit vorhandene Bild, indem Sie den Wert der Eigenschaft Bild wie in Abbildung 1 einstellen.
  3. Stellen Sie außerdem den Wert der Eigenschaft Bildtyp auf Verknüpft ein.

Schaltfläche zum Aktualisieren der Bildherkunft

Die Bildherkunft setzt sich aus den beiden Feldern Bildpfad und Bilddatei zusammen. Das Bildsteuerelement soll erst aktualisiert werden, wenn die Textfelder die benötigten Informationen enthalten. Damit der Benutzer diesen Zeitpunkt selbst festlegen kann, legen Sie außerdem eine Schaltfläche namens cmdAktualisieren an. Die dadurch ausgelöste Prozedur lernen Sie weiter unten kennen.

Abbildung 1: Einstellen der Bildeigenschaften

Wenn Sie jetzt in die Entwurfsansicht wechseln, passiert erwartungsgemäß nichts außer der Anzeige der in der Tabelle enthaltenen Daten. Das Bildsteuerelement bleibt leer. Damit das Bildsteuerelement das in dem in den beiden Textfeldern Bildpfad und Bilddatei angegebene Bild anzeigt,  benötigen Sie eine Prozedur, die durch das Ereignis Beim Anzeigen des Formulars und Beim Klicken der Schaltfläche cmdAktualisieren ausgelöst wird. Diese Prozedur sieht folgendermaßen aus:

Private Sub BildAktualisieren()

    On Error GoTo BildAktualisieren_Err

    Dim strBildpfad As String

    strBildpfad = Nz(Me!Bildpfad & Me!Bilddatei, "")

    If Dir(strBildpfad) = "" Then

        strBildpfad = ""

    End If

BildAktualisieren_Exit:

    Me!picBildVerknuepft.Picture = strBildpfad

    Exit Sub

BildAktualisieren_Err:

    MsgBox "Das Bild konnte nicht geladen werden." _

        & vbCrLf & "Fehler-Nr: " & Err.Number _

        & vbCrLf & "Fehler-Beschreibung: " & Err.Description

    strBildpfad = ""

    Resume BildAktualisieren_Exit

End Sub

Die Prozedur überprüft, ob der Wert des Feldes Bildpfad Null oder eine leere Zeichenfolge ist. Falls ja, wird die Eigenschaft Picture des Bildsteuerelements auf eine leere Zeichenfolge eingestellt. Anderenfalls wird das Bild mit dem angegebenen Pfad angezeigt, sofern die entsprechende Datei vorhanden ist.

Die Prozeduren für den Aufruf dieser Routine sehen folgendermaßen aus:

Private Sub cmdAktualisieren_Click()

    BildAktualisieren

End Sub

Private Sub Form_Current()

    BildAktualisieren

End Sub

 

Das fertige Formular sieht wie in Abbildung 2 aus.

Abbildung 2: Anzeige von externen Bilddateien im Formular

Fortschrittsbalken beim Import von Grafiken unterbinden

Bei manchen Grafikformaten (unter anderem .gif und .jpg) erscheint beim Laden von Bildern in das Bildsteuerelement ein Fortschrittsbalken. Bei kleinen Bildern flackert dieser nur kurz auf und kann kaum wahrgenommen werden. Wenn man aber schnell durch Datensätze scrollt, fällt das Flackern schnell unangenehm auf.

Die Anzeige der Fortschrittsanzeige können Sie abschalten, indem Sie den Registry-Schlüssel HKEY_CURRENT_USER\SOFTWARE\Microsoft\Shared Tools\Graphics Filters\Import\<Grafikformat>\Options\ShowProgressDialog auf No einstellen (siehe Abbildung 3). 

Abbildung 3: Deaktivieren der Fortschrittsanzeige beim Importieren von Bildern

© 2003-2015 André Minhorst Alle Rechte vorbehalten.