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

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2008.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Fügen Sie Bilddateien zur Datenbank hinzu und zeigen Sie diese ohne Umweg über das Dateisystem an.

Techniken

Formulare, GDI, VBA

Voraussetzungen

Access 2000 oder höher

Beispieldateien

Buecherverwaltung.mdb

Shortlink

630

Bilder on the fly

André Minhorst, Duisburg

Es gibt immer mal wieder eine Gelegenheit, Bilder in Datenbanken zu speichern, anzuzeigen oder von dort auf die Festplatte zu speichern. Die meisten Wege führen dabei über das Zwischenspeichern im Dateisystem, manch eine Anwendung belässt die Bilddateien auch direkt im entsprechenden Ordner. Mit einem Image-Steuerelement und einer Tabelle mit einem OLE-Feld behält man alles an einem Ort - nämlich in der Datenbank.

Als Beispiel für diesen Artikel dient die Bücherverwaltung aus dem gleichnamigen Beitrag in dieser Ausgabe von Access im Unternehmen (Shortlink 633). Diese speichert Bilder direkt in der Tabelle tblBuecher zusammen mit den anderen Buchinformationen und zeigt die Bilder im Formular frmBuch zum jeweils passenden Exemplar an (s. Abb. 1). Dabei bezieht sie die Bilddateien aus verschiedenen Quellen: Wenn Sie die Bücher manuell eintragen, können Sie selbst eingescannte oder anderweitig verfügbare Buchcover in der Datenbank speichern, indem Sie einfach auf die Bild hinzufügen-Schaltfläche klicken und das gewünschte Bild mit dem anschließend erscheinenden Datei öffnen-Dialog auswählen.

pic001.tif

Abb. 1: Das Beispielformular mit einem Buchcover im Image-Steuerelement

Die Anwendung bietet auch die Möglichkeit, Buchinformationen per Webservice direkt von Amazon einzulesen. Diese Informationen enthalten auch Links zu Coverbildern in verschiedenen Auflösungen und die Anwendung liefert die Möglichkeit, diese Bilder von Amazon herunterzuladen und in der Datenbank zu speichern.

Werkzeug

Als Werkzeug für die in diesem Beitrag beschriebene Lösung dienen einige VBA-Routinen und API-Funktionen, die aus der Beispieldatenbank zum Beitrag Bilder im Griff mit VBA und GDI+ (Shortlink 337) stammen. Die hier verwendete Zusammenstellung wurde teilweise von Sascha Trowitzsch weiterentwickelt und vom Autor des vorliegenden Beitrags für den hier beschriebenen Anwendungsfall zusammengestellt.

Vom Web ins Image-Steuerelement

Für das Herunterladen einer Bilddatei aus dem Internet und ihre Anzeige in einem Formular brauchen Sie zunächst einmal die Funktion GetPictureFromURL aus dem Modul mdlOLE der Beispieldatenbank.

Diese Routine erwartet als Parameter die URL der Bilddatei, zum Beispiel http://www.access-im-unternehmen.de/fileadmin/images/aiu_2008_01.png.

Um die Routine auszuprobieren, brauchen Sie nur ein Microsoft Forms 2.0 Image-Steuerelement in ein Formular einzufügen, dieses beispielsweise objImage zu nennen und beim Laden des Formulars die folgende Routine auszuführen:

Private Sub Form_Load()

    Me!objImage.Picture = _

    GetPictureFromURL( _

    "http://www.access-im-unternehmen.de/” _

    â€fileadmin/images/aiu_2008_01.png”)

    End Sub

Vom Web ins OLE-Feld

Nun soll das Bild aber nicht direkt angezeigt, sondern möglichst erstmal in der Datenbank gespeichert werden - und zwar in einem OLE-Feld in einer Tabelle Ihrer Wahl. In der Beispieldatenbank Buecherverwaltung.mdb heißt das Feld Bild und befindet sich in der Tabelle tblBuecher.

Die oben vorgestellte Funktion GetPictureFromURL dient als Ausgangspunkt für die folgende Vorgehensweise: Sie liefert nämlich immerhin schon einmal ein StdPicture-Objekt, das auf das Bild verweist.

Was aber muss passieren, damit dieses Bild-Objekt nun im OLE-Feld einer Tabelle landet und obendrein leicht wiederherstellbar ist? Dank der Funktionen in den beiden Modulen mdlGDIPlus und mdlOLE lässt sich das ganz leicht herleiten. Genau genommen ist es fast wie bei Rechenaufgaben aus technischen Bereichen: Wenn man dort gar nicht mehr weiter weiß, schaut man sich halt die Einheiten an, in denen die Funktions- und Ergebniswerte angegeben werden müssen. Wenn man Einheiten durch Datentypen ersetzt, ist das eine interessante Analogie. Und eine zusätzliche Hilfe bieten natürlich die Funktionsnamen.

Wenn Sie ein StdPicture-Objekt in ein OLE-Feld einfügen möchten, durchsuchen Sie also erstmal die beiden Module nach Routinen, die irgendwas in ein OLE-Feld einsetzen.

Das erledigen sowohl SaveFileToOLEField als auch ArrayToOLEField. Die erste erwartet die Angabe einer Datei und speichert diese im OLE-Feld einer Tabelle, die zweite ein Byte-Array.

Wir müssen aus unserem StdPicture-Objekt also entweder eine Datei erstellen oder dieses in ein Byte-Array umwandeln. Ein Blick in die Liste der zur Verfügung stehenden Routinen zeigt, dass wir mit der Umwandlung von StdPicture zu Byte-Array richtig liegen - die Funktion ArrayFromPicture aus dem Modul mdlGDIPlus macht so etwas.

Wir arbeiten uns also wie folgt durch Funktionen: GetPictureFromURL liefert uns die auf einem Webserver liegende Bilddatei frei Haus als StdPicture-Objekt. Dieses wandelt die Routine ArrayFromPicture in ein Byte-Array um und dieses speichert schließlich die Funktion ArrayToOLEField im OLE-Feld der Zieltabelle.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Bilder skalieren

Access 2007: Bilder und Schaltflächen

Bücherverwaltung

Google Earth ferngesteuert, Teil II

Kontextmenüs von A bis Z

Bildverwaltung in Access

Performanter Webzugriff auf MySQL-Datenbanken

© 2003-2015 André Minhorst Alle Rechte vorbehalten.