window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Bilder in Access, Teil II: Bilder in OLE-Feldern

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).

Tabelle mit einem OLE-Feld

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.

Formular zum Importieren und Exportieren von Bilddateien

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

Schreibe einen Kommentar