Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Für alle, die Bilder flexibel in allen Access-Versionen einbinden und verwenden möchten, bietet sich das OLE-FEld an. Dabei füllen Sie die Daten nicht so hinein, wie es der erste Teil dieser Artikelreihe beschrieben hat, sondern als Byte-Array. Das heißt, dass Sie die komplette Datei, so wie sie auch auf der Festplatte liegt, in das OLE-Feld schreiben. Von dort aus können Sie die Datei beispielsweise wieder auf die Festplatte zurückschreiben oder diese als Bild an verschiedenen Stellen anzeigen – beispielsweise als Icons im TreeView- oder ListView-Steuerelement.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1309_Bilder.mdb.
Bild binär im OLE-Feld speichern
Bevor wir uns diese Technik ansehen, gleich die schlechte Nachricht: Es gelingt ausschließlich mit VBA. Aber das ist kein Problem, auf diesem Wege erhalten Sie gleich einige interessante Grundlagen. Bevor wir beginnen, erstellen wir eine kleine Beispieltabelle namens tblOLEBilder, welche die drei Felder OLEBildID, OLEBild und Bildname enthält (siehe Bild 1).
Bild 1: Tabelle mit einem OLE-Feld
Außerdem erstellen wir ein Formular, mit dem wir den Import und den Export der Bilder steuern. Dieses Formular soll frmOLEBilder heißen. Wir statten es zunächst mit einer Schaltfläche aus, mit der Sie einen Dateiauswahl-Dialog anzeigen können. Diese erhält die Beschriftung Dateien hinzufügen und den Namen cmdDateienHinzufuegen. Eine weitere Schaltfläche mit der Beschriftung Datei exportieren und dem Namen cmdDateiexport legen Sie gleich daneben an. Das Formular enthält außerdem ein Unterformular-Steuerelement, welches das Unterformular sfmOLEBilder aufnimmt. Dieses Formular verwendet die soeben erstellte Tabelle tblOLEBilder als Datenherkunft und zeigt diese in der Datenblatt-Ansicht an. Im Entwurf sieht das Formular wie in Bild 2 aus.
Bild 2: Formular zum Importieren und Exportieren von Bilddateien
Einlesen einer Bilddatei
Die Schaltfläche cmdDateiHinzufuegen löst die Prozedur aus Listing 1 aus. Diese deklariert zunächst zwei Variablen: strDatei nimmt eine durch das Tabulator-Zeichen getrennte Liste mehrere Dateien auf, strDateien() ist ein String-Array, dass jeweils einen der durch die Tabulator-Zeichen getrennten Zeichenketten pro Datenfeld aufnimmt. Was steckt dahinter Wir verwenden eine Funktion namens OpenFileNameMultipe zum Anzeigen eines Dateiauswahl-Dialogs, der die Auswahl mehrerer Dateien gleichzeitig erlaubt. Diese Funktion ist so ähnlich aufgebaut wie die aus dem Artikel Dialog zur Auswahl von Dateien anzeigen. Sie finden diese Funktion im Modul mdlTools der Beispieldatenbank.
Private Sub cmdDateienHinzufuegen_Click() Dim strDatei As String Dim strDateien() As String Dim i As Integer strDatei = OpenFileNameMultiple(CurrentProject.Path, "Bild auswählen", _ "Bilddateien (*.png;*.bmp,*.jpg,*.tif,*.gif)|Alle Dateien (*.*)") strDateien = Split(strDatei, vbTab) For i = LBound(strDateien) To UBound(strDateien) DateiEinlesen strDateien(i) Next i End Sub
Listing 1: Vorbereitungen für das Einlesen einer oder mehrerer Dateien in ein OLE-Feld
Der Aufruf der Funktion OpenFileNameMultiple erwartet als Parameter das Startverzeichnis (hier das mit CurrentProject.Path ermittelte aktuelle Anwendungsverzeichnis), einen Titel sowie die Angabe des Filters für die anzuzeigenden Dateien.
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