Bildverwaltung in Access

Autor: Klaus Giesen, Wuppertal

Mit Microsoft Access können nicht nur die üblichen Daten wie Nachname, Vorname oder Artikelnummern, sondern beispielsweise auch Bilder gespeichert und mit der entsprechenden Funktionalität verwaltet werden. Typische Anwendungsbeispiele dafür sind beispielsweise Abbildungen zu Artikeln und Produkten oder auch nur ein reines Bildarchiv.

Access stellt Ihnen verschiedene Möglichkeiten zur Speicherung von Bildern bzw. Bildinformationen in unterschiedlichen Steuerelementtypen zur Verfügung, die sich in verschiedener Hinsicht voneinander unterscheiden.

Access speichert Bilder als so genannte OLE-Objekte in einem entsprechenden Felddatentyp.

Zusätzlich tauchen in diesem Zusammenhang auch noch Begriffe wie gebunden und ungebunden, sowie Einbetten bzw. Verknüpfen auf.

Wir wollen uns an dieser Stelle aber nicht mit langen Erklärungen aufhalten, sondern mit einem ganz einfachen Beispiel beginnen. Die wichtigsten Begriffe zum Verständnis des gesamtem Vorgangs werden Sie dann im Verlauf dieses Beitrags näher kennen lernen.

OLE-Objekt in Datenbank speichern

Als Voraussetzung zur Speicherung von OLE-Daten muss ein Tabellenfeld auf den Felddatentyp OLE-Objekt eingestellt sein. Nur dann können verknüpfte oder eingebettete OLE-Objekte auch in einer Tabelle gespeichert werden.

Hinweis

Die folgende Methode ist von Access standardmäßig zum Speichern von OLE-Objekten vorgesehen.

Auch zum Einfügen eines solchen Objekts gibt es mehrere Möglichkeiten, von denen an dieser Stelle nun eine genauer beschrieben werden soll.

  • öffnen Sie die betreffende Tabelle mit dem OLE-Feld in der Datenblattansicht und klicken Sie in das OLE-Feld.
  • Wählen Sie aus dem Menü Einfügen den Befehl Objekt aus. Wählen Sie aus dem Listenfeld Objekttyp den Eintrag Bitmap-Bild aus und markieren Sie die Option Aus Datei erstellen (siehe Bild 1).
  • Wählen Sie in dem darauf folgenden Dialogfenster mit Hilfe der Schaltfläche Durchsuchen eine Grafikdatei auf Ihrer Festplatte aus (siehe Bild 2). Achten Sie bitte darauf, dass das Kontrollkästchen Verknüpfen nicht aktiviert ist.
  • Bild 1: Auswahl des Objekttyps

    Abb. 2: Objekt aussuchen und einfügen

    Bild 3: Anzeige des OLE-Servers im Tabellenfeld

    Praxis-Tipp

    Das Einfügen eines OLE-Objekts über dieses Dialogfenster ist aus naheliegenden Gründen für den Anwender sehr flexibel: Er kann dort jeden auf seinem Computer vorhandenen OLE-fähigen Dateityp bequem auswählen.

  • In dem Tabellenfeld wird daraufhin der OLE-Server des eingefügten Objekttyps angezeigt (siehe Bild 3).
  • öffnen Sie das zur Tabelle gehörende Formular in der Entwurfsansicht und ziehen Sie aus der Feldliste das Objektfeld ins Formular.
  • Wechseln Sie in die Formularansicht, um sich das eingefügte Bild anzusehen.
  • Um weitere Bilder in Ihre Datenbank einzufügen, klicken Sie einfach mit der rechten Maustaste auf das Objektfeld und wählen Sie aus dem Kontextmenü den Befehl Objekt aus. Daraufhin wird wieder das Dialogfenster Objekt einfügen (siehe Bild 1) angezeigt.

    Damit ist dieses einfache Beispiel abgeschlossen und das Bild wird im Formular angezeigt (siehe Bild 4).

    Einfügen von OLE-Objekten per VBA

    Es versteht sich von selbst, dass unter Access das Einfügen eines solchen Bildes auch per VBA möglich ist – beispielsweise über eine Schaltfläche Neu im Formular.

    Schon die einzelne Codezeile

    Me!oleBild.Action = acOLEInsertObjDlg

    innerhalb einer Beim Klicken-Ereignisprozedur öffnet das bereits bekannte Dialogfenster Objekt einfügen.

    Allerdings gilt es auch bei dieser einfachen Variante einiges zu beachten. Wenn ein Objekt eingefügt wird, wird auch der Programmcode weiter abgearbeitet. Beim Klick auf die Schaltfläche Abbrechen tritt allerdings ein Laufzeitfehler mit der Fehlernummer 2001 auf.

    Bild 4: Bilder einfügen per Schaltfläche

    Eine wiederum einfache Lösung ist, die Fehlerbehandlung von Access vollständig zu umgehen. Der Programmcode dazu sieht wie folgt aus:

    '' Beim Auftreten eines Laufzeitfehlers
    '' wird mit der nächsten Anweisung 
    '' fortgefahren
    On Error Resume Next
    '' öffnet den Dialog Objekt einfügen
    Me!oleBild.Action = acOLEInsertObjDlg
    '' Deaktiviert alle aktivierten
    '' Fehlerbehandlungsroutinen
    On Error GoTo 0

    Eine ausführlichere und auch elegantere Lösung würde den Laufzeitfehler 2001 explizit abfangen. Weiterhin bietet sich an zu überprüfen, ob in dem OLE-Feld bereits ein Objekt vorhanden ist.

    Daraufhin sollte der Anwender entscheiden können, ob dieses Feld überschrieben werden soll oder nicht.

    Begriffserläuterungen und Hintergrundinformationen

    An dieser Stelle ist es notwendig einige Begriffe zu klären, damit unmissverständlich deutlich wird, was eigentlich geschehen ist und welche Alternativen beim Import von Bildern möglich sind.

    Objekttyp

    In dem Listenfeld Objekttyp (Schritt 2) werden die Objekte aller OLE-fähigen Anwendungen auf Ihrem Computersystem angezeigt. Mit Hilfe der OLE-Technik können bekanntlich verschiedene Anwendungen innerhalb einer Anwendung miteinander kombiniert werden.

    Hierbei ist es jedoch von entscheidender Bedeutung, dass eine Anwendung zur Bearbeitung des OLE-Objektes – in unserem Beispiel ein entsprechendes Grafikprogramm – auf dem Computersystem auch ordnungsgemäß (= lauffähig) installiert ist. Nur dann kann das Objekt auch bearbeitet werden.

    Praxis-Tipp

    Wenn Sie eine derartige Datenbank weitergeben, müssen Sie auf jeden Fall sicherstellen, dass eine Anwendung zur Bearbeitung des entsprechenden Dateityps auch auf dem betreffenden Computer vorhanden ist.

    Neu erstellen – aus bestehender Datei erstellen

    Bei unserem Beispiel haben wir in Schritt 2 die Option Aus Datei erstellen ausgewählt. Das setzt allerdings das physikalische Vorhandensein der betreffenden Datei auf einem Datenträger voraus.

    Bei Auswahl der Option Neu erstellen braucht – wie die Bezeichnung vermuten lässt – die Datei nicht auf einem Datenträger vorhanden sein. In diesem Fall wird das zugehörige Anwendungsprogramm – beispielsweise das Programm Microsoft Paint – gestartet und Sie können eine Grafik erstellen.

    Anschließend kehren Sie über einen entsprechend angepassten Menübefehl von Paint zu Access zurück (siehe Bild 5).

    Bei dieser Vorgehensweise ist es wichtig im Hinterkopf zu behalten, dass die neu erstellte Grafikdatei – falls sie nicht ausdrücklich gespeichert wird – nur in der Datenbank und nicht als Datei auf einem Datenträger vorhanden ist.

    Bild 5: Erstellen einer Grafik in Paint

    Praxis-Tipp

    Auf die gleiche Art und Weise kann die in der Datenbank gespeicherte Grafikdatei auch bearbeitet werden.

    Einbetten – Verknüpfen

    Im Schritt 3 wurde das unscheinbare Kontrollkästchen Verknüpfen im mittleren Teil des Dialogfensters nicht aktiviert.

    Das aber impliziert automatisch, dass das Grafikobjekt eingebettet ist.

    Doch was bedeutet das genau und wo liegen die Unterschiede zwischen diesen beiden Methoden

    Zunächst zum Begriff Einbetten: Einbetten bedeutet vereinfacht ausgedrückt, dass eine Kopie der Herkunftsdatei in der Datenbank gespeichert wird.

    Das Original bleibt als solches separat erhalten und kann weiterhin bearbeitet werden. Diese änderungen werden allerdings vom Objekt, welches in der Datenbank gespeichert ist, nicht übernommen. Umgekehrt – für die Bearbeitung des in der Datenbank gespeicherten Objekts – gilt das Gleiche.

    Der Speicherplatzbedarf der Datenbank ist bei dieser Methode extrem hoch. Neben der Größe der importierten Grafikdatei ist dafür in erster Linie der so genannte OLE-Overhead verantwortlich, der ein Mehrfaches der Grafikdateigröße beträgt. Kurz gesagt: Die Datenbank wird extrem aufgebläht.

    Praxis-Tipp

    Je nach Hardwareausstattung Ihres Computers kann die Performance der Datenbank negativ beeinflusst werden.

    Dagegen kann sich je nach vorliegendem Fall eine Datensicherung vereinfachen. Bei einem Bildarchiv beispielsweise brauchen so nicht Hunderte von Bilddateien, sondern nur eine Datenbankdatei gesichert werden.

    Der Begriff Verknüpfen dagegen bedeutet, dass lediglich ein Hinweis auf ein Objekt erstellt wird. Dabei kann es sich entweder um eine bestehende Datei oder um ein mit der Herkunftsanwendung neu erstelltes Objekt handeln.

    Alle änderungen an der verknüpften Datei werden automatisch in der Datenbank sichtbar. Dabei ist unerheblich, ob Sie die für die Durchführung der änderung verwendete Anwendung direkt von der Datenbank aus oder außerhalb von Access öffnen.

    Praxis-Tipp

    Vor allem in einer Mehrbenutzerumgebung bietet sich diese Methode an, denn so können – falls erforderlich – mehrere Anwender das Herkunftsobjekt bearbeiten.

    Die vorhergehenden Ausführungen haben Ihnen hoffentlich deutlich gemacht, dass die Entscheidung für eine dieser beiden Methoden quasi von strategischer Bedeutung ist und in erster Linie vom jeweiligen Anwendungs- bzw. Verwendungszweck abhängt.

    Gebunden – Ungebunden

    Bei unserem Beispiel ist von Access ohne großes Nachfragen ein gebundenes OLE-Objekt erstellt worden. Grund dafür war, dass unser Ausgangspunkt das OLE-Feld in der Tabelle war. Damit steht auch schon die Definition:

    Gebundene OLE-Objekte sind immer an ein entsprechendes Tabellenfeld gebunden. Daraus ergibt sich eben auch, dass die in einem solchen Feld gespeicherten Objekte aus der Datenbank heraus angezeigt und bearbeitet werden können.

    Ungebundene OLE-Objekte definieren sich gegenteilig zum eben Beschriebenen: Sie werden nicht in einem Tabellenfeld, sondern lediglich in einem Formular oder Bericht gespeichert. Deswegen kann dieses Thema auch relativ schnell abgehandelt werden.

    Eine mögliche Einfügemethode ist der Weg über die Zwischenablage von Windows:

  • öffnen Sie ein Formular in der Entwurfsansicht.
  • Starten Sie ein Grafikprogramm. öffnen Sie eine Grafikdatei, markieren Sie die Datei und kopieren Sie diese in die Zwischenablage.
  • Wählen Sie in Access aus dem Menü Bearbeiten den Befehl Inhalte einfügen aus und klicken Sie in dem nachfolgenden Dialogfenster Inhalte einfügen auf OK.
  • Bild 6: Ungebundenes OLE-Objekt in einem Formular

    Ungebundene OLE-Objekte dienen in erster Linie dazu, statische Objekte wie beispielsweise Firmenlogos darzustellen oder auch Sounddateien abzuspielen.

    Andererseits eignen sich ungebundene OLE-Felder vorzüglich dazu, mit externen Daten verbunden zu werden. Ein Beispiel dazu finden Sie in Absatz 3.

    Ausgewählte Eigenschaften von OLE-Objekten

    Die Eigenschaften von gebundenen und ungebundenen OLE-Objekten können sich je nach Herkunfts- und Verknüpfungsart doch recht deutlich voneinander unterscheiden. Deshalb werden an dieser Stelle nur einige ausgewählte Eigenschaften vorgestellt.

    Bild 7: Das Eigenschaftsfenster

    Größenanpassung

    über die Eigenschaft Größenanpassung wird die Darstellung des OLE-Objekts im Formular beeinflusst. Dabei stehen drei Möglichkeiten zur Auswahl: Abschneiden, Dehnen und Zoomen.

    Bild 8: Bildanzeige mit der Größenanpassung Dehnen

  • Beim Abschneiden wird das OLE-Objekt in seiner tatsächlichen Größe angezeigt. Wenn es größer als das Steuerelement ist, werden seine Ränder abgeschnitten.
  • Beim Dehnen wird die Größe des OLE-Objekts so angepasst, dass das Steuerelement ganz ausgefüllt ist. Dadurch kann es, wie Bild 8 zeigt, zu unschönen Verzerrungen kommen.
  • Wenn als Wert der Eigenschaft Zoomen ausgewählt ist, wird das OLE-Objekt an die Größe des Steuerelements angepasst, wobei sein Seitenverhältnis bei-behalten wird. Dadurch treten keine Verzerrungen auf.

    Anzeigeart

    Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

    TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

    Schreibe einen Kommentar