Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Der Häufigkeit von Fragen in Foren nach zu schließen, scheint der Umgang mit Bildern in Formularen und Berichten für viele Entwickler ein Thema hoher Priorität zu sein. Zwar geht es dort meist um das Laden von Bilddateien über VBA-Routinen, doch dass es neben dem Access-eigenen Bildsteuerelement noch weitere Möglichkeiten zur Darstellung gibt, wird dabei gerne übersehen. Hier ein überblick über die Alternativen und ihre Vor- und Nachteile.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1604_ImageCtls.zip.
Bilddateien unter Access
Selbst Microsoft hat erkannt, dass Bilder in Datenbanken eine zunehmend größere Rolle spielen. Ob Fotos von Personen oder Gegenständen, ob Kataloge oder Produktdatenbanken, Privatgebrauch oder Gewerbe, überall finden sich Fälle, in denen Bilder in Datenbanken ein zusätzliches Informationselement darstellen können.
Bis zur Version von Office 2007 beschränkten sich die Möglichkeiten auf das eingebaute Bildsteuerelement oder auf das OLE-Feld oder -Steuerelement. Letzteres war, wenn man von aufwändiger VBA-Programmierung absehen wollte, zugleich die einzige Lösung, um Bilddateien binär direkt in Tabellen abzuspeichern. Deren Anzeige im Formular war dann immer ein Risiko, weil der hierfür erforderliche OLE-Server in Gestalt eines externen Programms, wie PaintBrush, auf dem System vorliegen muss. Auch ein Photoshop-Bild lässt sich auf diesen Weg einbetten, doch das geht dann eben nur mit installierten Photoshop sowohl auf Entwickler-, wie Zielmaschine. über die Performance dieser Lösung kann auch nichts Positives berichtet werden.
Darum gab es zwei Weiterentwicklungen: Zum einen lässt sich ein Bildsteuerelement nun direkt an ein Tabellenfeld binden, das die Pfade zu den Bilddateien enthält, zum anderen bietet die Kombination von neuem Anlagefeld und Anlagesteuerelement einen komfortablen Ersatz für die in die Jahre gekommene OLE-Lösung. Einst von vielen Entwicklern verschrien, weil Binärformate in Datenbanken angeblich nicht zu suchen hätten, ist das inzwischen ein alter Hut von gestern. Alle DBMS-Systeme haben längst den Support für Binärdaten eingebaut und setzen teilweise darauf noch spezielle Bibliotheken, wie jene der Geoinformationssysteme (GIS) mit ihren komplexen Datenformaten. Klar muss man sich durchaus noch Gedanken darüber machen, ob die großen Dateien wirklich in Tabellen untergebracht sein müssen. Schließlich weist Access ein Limit von 2 GB für eine Datenbank auf. Bei kleineren Fotos in komprimiertem Format und bei überschaubarer Datensatzzahl sollte das jedoch kein Problem darstellen.
Hier geht es nicht um die Anwendungsbereiche für Bilder in Datenbanken. Dazu fällt Ihnen sicher selbst genug ein. Wir nehmen sechs Steuerelementlösungen unter die Lupe und zeigen deren Ansteuerung, sowie deren Eigenschaften. Im Einzelnen sind dies die Folgenden:
- das Access-Bildsteuerelement,
- das OLE-Feld,
- das Anlagesteuerelement,
- das MS-Forms Image Control,
- die Access-Schaltfläche und
- das Webbrowser Control.
Auf einen Blick
Im Formular frmBilder der Beispieldatenbank sind alle sechs Steuerelemente miteinander vereint und zeigen jeweils dasselbe Foto an. So können Sie sie direkt vergleichen und Verhalten, Features und Qualität begutachten. Die Steuerelemente haben alle die gleichen Abmessungen. Quelle für die Fotos sind Bilddateien im Datenbankverzeichnis, beim Anlage- und OLE-Steuerelement jedoch auch direkt in einer Tabelle gespeicherte Bilddaten.
Bild 1 zeigt das Formular zur Laufzeit, wobei hier der zweite Datensatz der Tabelle tblBilder eingeblendet ist, welcher auf der Bilddatei piano.jpg basiert. Bis auf das OLE-Steuerelement stimmt die Anzeige mit den Erwartungen überein. Bildsteuerelement, Anlagesteuerelement und MS Forms Image zeigen eine identische Darstellung und Skalierung, während die Schaltfläche und das Webbrowser Control offenbar die Originalgröße des Bilds wiedergeben. Bei genauerem Hinsehen unterscheidet sich allerdings auch die Anzeigequalität. Bild– und Anlagesteuerelement geben das Bild etwas unscharf wieder, was sich auf ein Antialiasing zurückführen ließe. Das MS Forms Control hingegen zeigt beim Skalieren kein Antialiasing, was teilweise zu verpixelten Kanten führt. Den besten Kompromiss liefert das Webbrowser Control ab.
Bild 1: Die sechs Steuerelemente im Formular frmBilder zeigen alle dieselbe Bilddatei an – fast jedenfalls!
Warum das gebundene OLE-Feld nur ein Symbol statt des Inhalts anzeigt, führen wir später aus.
Den Entwurf des Formulars erläutern wir später – vorher werfen wir einen Blick auf die Daten, die ihm zugrunde liegen.
Bilddaten
Die Tabelle tblBilder hat den Aufbau aus Bild 2. Bilddatei ist ein Textfeld, welches nur den Dateinamen aufnimmt, etwa piano.jpg. Pfad enthält das Verzeichnis, in dem die Datei liegt. Der Inhalt dieses Felds ist zunächst leer und wird erst beim Start der Datenbank über eine VBA-Anweisung im Intro-Formular mit dem aktuellen Verzeichnis festgesetzt:
Bild 2: Diese fünf Felder stehen im Entwurf der Tabelle tblBilder
CurrentDb.Execute _ "UPDATE tblBilder SET Pfad='" _ & CurrentProject.Path & "'"
Damit steht in jedem Datensatz der Tabelle in Pfad das Verzeichnis aus CurrentProject.Path.
Bildanlage ist ein Attachment (Anlagefeld) mit der Beschriftung Anlagebild, welches später das Anlagesteuerelement speisen soll. Und BildOLE schließlich ist ein Feld vom Typ OLE-Objekt, an das im Formular das Gebundene OLE-Steuerelement gehängt wird. Die Datenblattansicht der Tabelle zeigt Bild 3. Hier wurden bereits die entsprechenden Bilddateien in das Attachment geladen, und ebenso als OLE-Objekte in das Feld BildOLE. Interessant ist, was Access aus den geladenen Daten im OLE-Feld in der Ansicht macht. Im einen Fall zeigt es die Beschriftung Package, im anderen ein Bitmap Image. Die Vorgehensweise, falls Sie noch nie ein OLE-Objekt in eine Tabelle speicherten: Klicken Sie rechts in die gewünschte Tabellenzelle und wählen aus dem Kontextmenü (Bild 4) den Eintrag Objekt einfügen….
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo