Home > Artikel > Ausgabe 8/2013 > Bilder in Access, Teil I

Bilder in Access, Teil I

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Bilder kommen in Access an den verschiedensten Stellen vor: Als Daten der Datenbank etwa zur Darstellung von Personen oder Artikeln, in Menüs, Ribbons und Kontextmenüs, in ListView- und TreeView-Steuerelementen oder als Element einer Schaltfläche oder weiterer Steuerelemente. Es gibt verschiedene Möglichkeiten, Bilder in Access verfügbar zu machen. In dieser Artikelreihe schauen wir uns die unterschiedlichen Varianten an und gehen auf Vor- und Nachteile ein.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1308_Bilder.mdb.

Bilder in Access

Wenn Sie sich einmal verschiedene Anwendungen ansehen, die sich auf Ihrem Rechner befinden oder Vergleiche zu früheren Anwendungen ziehen, werden Sie feststellen, dass die Darstellung sich stetig verändert und durch den Einsatz von Icons eine hübsche und benutzerfreundliche Oberfläche erstellen lässt.

Dies bezieht sich allein auf die Elemente der Benutzeroberfläche. Eine ganz andere Rolle spielt die Darstellung von Daten in Form von Bildern – etwa durch die Abbildung von Personen oder Artikeln.

Beide Einsatzmöglichkeiten von Bildern haben verschiedene Ziele und es verbergen sich auch verschiedenste technische Ansätze dahinter. In dieser Artikelreihe werden wir uns diese von A bis Z ansehen.

Einige der hier beschriebenen Techniken sind erst ab Access 2007 mit der dort eingeführten neuen Version des Bildsteuerelements verwendbar.

Bilder in OLE-Feldern speichern

Seit ewigen Zeiten gibt es mit dem OLE-Feld eine Möglichkeit, sowohl Bilder als auch Dateien wie etwa Word-Dokumente in einem Feld einer Access-Tabelle zu speichern. Dies gelingt ganz einfach: Sie legen eine Tabelle mit einem OLE-Feld wie in Bild 1 an. Wechsel Sie dann in die Datenblattansicht und klicken Sie mit der rechten Maustaste auf das OLE-Feld (siehe Bild 2).

Tabelle mit einem OLE-Feld

Bild 1: Tabelle mit einem OLE-Feld

Füllen eines OLE-Feldes

Bild 2: Füllen eines OLE-Feldes

Wählen Sie dann aus dem Kontextmenü den Eintrag Objekt einfügen ... aus und es erscheint der Dialog zum Hinzufügen eines OLE-Objekts. Wählen Sie dort wie in Bild 3 die Option Aus Datei erstellen aus. Mit der Durchsuchen-Schaltfläche öffnen Sie einen Datei öffnen-Dialog, der bei der Auswahl der einzufügenden Datei hilft.

Dialog zum Einfügen eines Objekts in ein OLE-Feld

Bild 3: Dialog zum Einfügen eines Objekts in ein OLE-Feld

Nach der Auswahl können Sie mit der Option Verknüpfen noch festlegen, ob sich Änderungen an der Originaldatei auf die in der Tabelle gespeicherte Version auswirken sollen.

Nach dem Speichern zeigt das OLE-Feld ganz banal den Wert Paket an (gelegentlich auch Package). Ein Doppelklick auf dieses Feld bietet die Möglichkeit, die Datei mit der verknüpften Anwendung zu öffnen. Diesen Dialog können Sie für spätere Aufrufe deaktivieren (siehe Bild 4).

Öffnen einer in einem OLE-Feld gespeicherten Datei

Bild 4: Öffnen einer in einem OLE-Feld gespeicherten Datei

Wenn Sie ein Word-Dokument in das OLE-Feld einfügen, zeigt dieses nicht Paket oder Package an, sondern Word Document. Am Beispiel eines Word-Dokuments wollen wir kurz zeigen, wie sich die Verknüpfen-Option auswirkt. Dazu fügen Sie ein Word-Dokument bei aktivierter Verknüpfen-Option hinzu. Öffnen Sie das Word-Dokument testweise per Doppelklick auf das OLE-Feld.

Schließen Sie es und öffnen das Dokument dann über das Dateisystem. Ändern Sie den enthaltenen Text und speichern Sie das Dokument. Klicken Sie dann erneut doppelt auf das Dokument im OLE-Feld und überzeugen Sie sich davon, dass die Änderungen auch in das im OLE-Feld gespeicherte Dokument übernommen wurden. Davon abgesehen öffnet Access nun scheinbar das Ursprungsdokument, was dadurch sichtbar wird, dass die übliche temporäre Datei eines geöffneten Word-Dokuments im Windows Explorer angezeigt wird (siehe Bild 5).

Temporäre Word-Datei

Bild 5: Temporäre Word-Datei

Problematisch wird es, wenn Sie die Originaldatei im Dateisystem löschen: Dann meldet Access einen Fehler, wenn Sie versuchen, die Datei per Doppelklick auf die Verknüpfung im OLE-Feld zu öffnen.

OLE-Bild im Formular

Wie nun zeigen wir ein in einem OLE-Feld gespeichertes Bild in einem Formular an? Dazu erstellen wir zunächst ein neues Formular und speichern dieses unter dem Namen frm­OLE.

Stellen Sie die Eigenschaft Datenherkunft auf die Tabelle tblOLE ein. Ziehen Sie dann alle Felder der Datenherkunft aus der Feldliste in den Formularentwurf (siehe Bild 6).

Formular mit OLE-Feld

Bild 6: Formular mit OLE-Feld

Ein Wechsel in die Formularansicht liefert leider nicht den erwarteten Effekt: Das OLE-Feld zeigt lediglich ein Icon mit dem Namen des gespeicherten Dokuments an (siehe Bild 7).

Formular mit OLE-Feld in der Formularansicht

Bild 7: Formular mit OLE-Feld in der Formularansicht

Warum gelingt dies nicht? Die aktuellste Access-Version, mit der uns dies gelungen ist, war Access 2003 (siehe Bild 8).

OLE-Feld mit Abbildung unter Access 2003

Bild 8: OLE-Feld mit Abbildung unter Access 2003

Und selbst dort wurden teilweise nur .bmp-Bilder oder solche Bilder, die mit einem OLE-Server verknüpft waren, angezeigt.

Das bedeutet, dass Sie für eine Bilddatei mit der entsprechenden Dateiendung standardmäßig eine Bearbeitungssoftware auswählen mussten, die als OLE-Server genutzt werden kann. Dies ist die Grundvoraussetzung, um Bilder aus OLE-Felder in einem gebundenen Objektfeld anzuzeigen.

Um es kurz zu machen: Zur Behandlung von Bilddateien, die nativ in OLE-Feldern gespeichert werden, gibt es ausreichend Quellen im Internet, und in neueren Access-Versionen arbeitet man ohnehin mit anderen Varianten. Die hier vorgestellte Technik sollten Sie wirklich nur einsetzen, wenn keine halbwegs aktuelle Access-Version zur Verfügung steht – also Access 2007 und neuer.

Bild per Verknüpfung anzeigen

Eine versionsübergreifend funktionierende Variante zum Anzeigen von Bildern in einem Access-Formular ist das Anzeigen verknüpfter Bilder. Dabei ist Verknüpfung nicht im Sinne des vorhergehenden Beispiels gemeint, sondern so: Sie speichern in einem Feld einer Tabelle den Pfad zu der anzuzeigenden Bilddatei und zeigen diese im Formular an, wenn der entsprechende Datensatz aufgerufen wird.

Die Tabelle zu diesem Beispiel sieht im Entwurf wie in Bild 9 aus. Das Feld Bildverknuepfung, das wegen der Begrenzung der Zeichenzahl auf 255 nicht als Textfeld, sondern als Memofeld ausgelegt wird, nimmt dabei etwa einen Ausdruck wie den folgenden auf:

Speichern des Dateipfades einer Bilddatei in der Tabelle

Bild 9: Speichern des Dateipfades einer Bilddatei in der Tabelle

C:\Daten\Fachartikel\AiUBasic\Basics󡆝⏸\Bilder\pic001.png

Damit diese Bild in einem Formular angezeigt wird, müssen Sie dieses zunächst an die Tabelle tblVerknuepfteBilder binden.

Danach ziehen Sie alle Felder der Datenherkunft in den Entwurf des Formulars. Zur Anzeige des Bildes verwenden wir ein Bildsteuerelement. Dieses ziehen Sie aus der Steuerelementleiste an die gewünschte Stelle im Formular.

Access öffnet nun automatisch einen Datei öffnen-Dialog, weil es davon ausgeht, dass Sie gleich ein Bild für dieses Steuerelement auswählen möchten. Dies ist nicht der Fall, also schließen Sie den Dialog einfach wieder. Das Formular sieht nun wie in Bild 10 aus.

Entwurf eines Formulars zur Anzeige einer Bilddatei per Bildsteuerelement

Bild 10: Entwurf eines Formulars zur Anzeige einer Bilddatei per Bildsteuerelement

Die Eigenschaft Bild hat, entsprechend unserem Wunsch, keinen Wert und das Bildsteuerelement zeigt auch kein Bild an – auch nicht nach einem Wechsel in die Formularansicht.

Damit dies geschieht, benötigen wir eine kleine VBA-Prozedur. Diese soll beim Anzeigen eines jeden Datensatzes ausgelöst werden, damit das Bildsteuerelement immer das im Feld Bildverknuepfung angegebene Bild anzeigt. Es gibt einen Sonderfall: Wenn der Datensatz soeben neu angelegt wurde, kann natürlich kein Bild angezeigt werden. In diesem Fall soll das Bildsteuerelement einfach leer bleiben.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!