Picture2OLE PDF Drucken E-Mail

Sie verwenden benutzerdefinierte Bilder in der Datenbank - beispielsweise in Steuerelementen wie TreeView und ListView, in Menüs, Symbolleisten und Kontextmenüs oder seit Access 2007 auf Schaltflächen oder im Ribbon? Und Sie haben ein ungutes Gefühl, weil Sie diese immer lose im Dateisystem speichern und diese dann bei Bedarf einlesen müssen? Dann machen Sie doch aus der Not eine Tugend und nutzen Sie das gute alte OLE-Feld, um den Bilddateien eine sichere Bleibe zu bieten. Natürlich nicht im proprietären Format, das Windows dafür vorsieht, sondern im Ausgangsformat. Wie aber bekommt man die Bilder ins OLE-Feld oder kann sich mal ansehen, welche Bilder die OLE-Felder einer Tabelle überhaupt enthalten? Nun: Hier hilft Picture2OLE weiter. Hereinspaziert, bitte!

 

Im Bilde

Wer nicht nur eine funktionale, sondern auch noch eine hübsche Datenbank abliefern möchte, wird früher oder später Icons in seiner Anwendung unterbringen. Und sagen Sie nicht, Sie bräuchten so einen Schnickschnack nicht! Können Sie sich vielleicht die Ordnerstruktur im Windows Explorer ohne die hübschen Ordner-Symbole oder gar die Dateiliste ohne die Icons, die auf die Dateiart hinweisen, vorstellen? Genau: Man hat sich schon so daran gewöhnt, dass es einem kaum noch auffällt, dass einem da die Arbeit mit grafischer Unterstützung stark vereinfacht wird. (Wer nun einwirft, es ginge nichts über den Charme weißer Schrift auf dem schwarzem Grund der DOS-Shell, mag sich an dieser Stelle aus dem Text ausklinken. ;-))

Icons bringen Sie an ganz verschiedenen Stellen in einer Anwendung unter:

  • auf Schaltflächen,
  • in TreeView-Steuerelementen,
  • in ListView-Steuerelementen,
  • in Menüs, Symbolleisten und Kontextmenüs,
  • seit Access 2007 im Ribbon oder
  • ganz einfach im Kopf oder Hintergrund von Formularen und Berichten.

    Woher aber nehmen Sie die Bilder - oder genauer: Wo bringen Sie diese unter, wenn Sie die Anwendung weitergeben oder an mehreren Arbeitsplätzen betreiben möchten? Klar: Schaltflächenbilder können Sie einbetten und Bilder für ListView und TreeView landen früher oder später im ImageList-Steuerelement, aber spätestens beim Ribbon sind Sie selbst für das Speichern der Bilder verantwortlich. Hier gibt es dann zwei Möglichkeiten: Entweder die Bilder landen im gleichen Verzeichnis wie die Datenbankanwendung oder in einem Unterverzeichnis, oder sie speichern diese direkt in der Datenbank.

    Bilder in Tabellen

    Letzteres ist die optimale Lösung: Sie laufen keine Gefahr, dass eventuell im Dateisystem gespeicherte Bilder versehentlich gelöscht werden, und Sie brauchen auch nur die reine Datenbankdatei zu verteilen, weil diese die Bilder direkt mitliefert.

    Und das Beste ist: Sie können die in Tabellen der Datenbank gespeicherten Bilder an allen oben genannten Stellen einsetzen, ohne dass diese auch nur temporär einen Fuß ins Dateisystem setzen müssen. Einzige Voraussetzung ist, dass Sie die Bilder in einem OLE-Feld einer Tabelle gespeichert haben - und zwar im binären Format, was mit Access-Bordmitteln allerdings nicht funktioniert (zumindest nicht vor Version 2007).

    Abhilfe schafft eine kleine Funktion (die allerdings im Hintergrund auf eine Reihe weiterer Elemente zugreift), die Sie in diesem Abschnitt aus "Access 2007 - Das Grundlagenbuch für Entwickler" kennenlernen. Sie können damit ganz einfach durch den Aufruf einer einzigen Funktion Bilddateien (und auch andere Dateien) im OLE-Feld einer Tabelle speichern (die Beispieldatenbank, die diese Funktion enthält, finden Sie im Downloadbereich der angegebenen Webseite - diese funktioniert allerdings nur mit Access 2007. Die notwendigen Elemente für ältere Access-Versionen (bis 2000) finden Sie in der Beispieldatenbank unter diesem Link).

    Wie aber gelangen diese Bilddateien nun an den Zielort - also beispielsweise ins ImageList-Steuerelement? Wie das prinzipiell geht, lesen Sie in diesem Kapitel des bereits genannten Buchs. Dort werden die Bilder allerdings noch aus dem Dateisystem geladen. Es ist allerdings kein Problem, die Bilder auch direkt aus dem OLE-Feld in ein StdPicture-Objekt zu laden und dieses dann dem entsprechenden Element des ImageList-Steuerelements zuzuweisen - oder auch einer Schaltfläche in einem Menü.

    Die Beispieldatenbank von oben (Download hier) zeigt, wie das ganz einfach geht, und zwar an zwei Beispielen. Das erste liest ein einfaches Bild aus der Tabelle tblImages in ein ImageList-Steuerelement ein und zeigt es dann im TreeView an:

    Das zweite Beispiel erstellt eine neue Symbolleiste und fügt dieser einen Eintrag mit dem gleichen Bild hinzu. Der Clou hierbei ist, dass man zur Darstellung transparenter Bilder in CommandBars eigentlich eine Masken-Datei erstellen und angeben muss, die ausschließlich schwarze und weiße Bereiche enthält und so festlegt, welche Bereiche des Originalbilds transparent und welche ganz normal angezeigt werden sollen. Im Beispiel kommt daher noch eine kleine Zusatzfunktion zum Einsatz, die aus dem Bild eine Maskendatei erstellt und diese der Eigenschaft Mask des CommandbarControls zuweist. Das sieht dann so aus:

    Dies sind zwei Beispiele für den Einsatz von Images, die ab Access 2002/2003 funktionieren - ab Access 2007 gibt es mit den Ribbons und der Möglichkeit, endlich auch Schaltflächen mit Bildern und Text gleichzeitig zu bestücken, noch viel mehr Optionen.

    Bilder im OLE-Feld im Griff

    Während Access 2007 einen eigenen Datentyp zum Speichern von Bildern und anderer Dateien in der Datenbank anbietet, gibt es keine eingebaute Möglichkeit, Bilddateien einfach in einem OLE-Feld zu speichern. Diese Funktion können Sie nun in Form eines Add-Ins nachrüsten. Das Add-In heißt Picture2OLE und zeigt sich nach der Installation unter dem Menüeintrag Extras/Add-Ins/Picture2OLE beziehungsweise unter Access 2007 im Ribbon unter Datenbanktools/Add-Ins/Picture2OLE und sieht so aus:

    Das Tool setzt eine Tabelle mit einem Textfeld für den Dateinamen und einem OLE-Feld voraus, fehlt diese, können Sie eine solche mit einem Klick auf die Plus-Schaltfläche anlegen. Unter Zieltabelle wählen Sie die Tabelle mit dem OLE-Feld aus, die beiden Felder Zielfeld OLE und Zielfeld Bild-/Dateiname erwarten die Namen der entsprechenden Felder.

     

    Nach der Auswahl zeigt das Tool bereits die relevanten Daten dieser Tabelle an und liefert auch das Aussehen der im OLE-Feld enthaltenen Bilddatei. Damit ist das Tool nicht nur zum Hinzufügen neuer Bilddateien, sondern auch zum Betrachten der bereits im OLE-Feld enthaltenen Dateien hilfreich.

    Bilddatei(en) hinzufügen

    Mit einem Klick auf das Ordner-Symbol öffnen Sie einen Datei öffnen-Dialog, mit dem Sie die gewünschten Bilddateien auswählen können. Wenn Sie nur eine Datei ausgewählt haben, können Sie anschließend den Zieldatensatz auswählen und auf die Schaltfläche Einfügen klicken, um das Bild in das OLE-Feld des betroffenen Datensatzes einzufügen. Wenn Sie mehr als eine Datei ausgewählt haben, fügt das Tool die Dateien automatisch ein und schreibt den reinen Dateinamen ohne Pfad in das Beschreibungsfeld.

    Wenn Sie Icons und sonstige Bilder in die Tabelle geschrieben haben, können Sie diese etwa wie in den obigen Beispielen beschrieben in Ihrer Anwendung einsetzen.

    Download ToolDownload Picture2OLE

    Die im Download angebotene Version der Anwendung ist eine Beta-Version und funktioniert mit Access 2000 bis 2007 - über Rückmeldungen bezüglich auftretender Fehler oder auch über Vorschläge für Funktionserweiterungen freuen wir uns natürlich sehr.

  •  

    Ihren Kommentar hinzufügen

    Ihr Name:
    Betreff:
    Kommentar:
      Bild, welches den Sicherheitscode enthält
    Sicherheitscode: