Bis Access 2003 waren die OLE-Felder die einzige Möglichkeit, Dateien in Access-Tabellen zu speichern (okay, theoretisch ginge dies auch mit Memofeldern …). Access 2007 liefert mit dem Anlagefeld eine neue Möglichkeit, dies zu erledigen. Neu ist dabei vor allem die Tatsache, dass sich Dateien leicht über die Benutzeroberfläche in solchen Feldern speichern und auch wiederherstellen lassen. Wir schauen uns im Detail an, was Anlagefelder können und wie Sie damit umgehen.
Anlagefelder sehen in der Entwurfsansicht von Tabellen zunächst wie herkömmliche Felder aus – mit dem Unterschied, dass Sie als Felddatentyp den Wert Anlage auswählen und dass diese im Register Allgemein des Eigenschaften-Bereichs der Entwurfsansicht nur zwei Eigenschaften enthalten (siehe Bild 1).
Bild 1: Ein Anlagefeld in der Entwurfsansicht einer Tabelle
In der Datenblattansicht zeigt sich Überraschendes: Erstens zeigt Access statt des Feldnamens als Spaltenüberschrift nur eine Büroklammer an, und auch der Feldinhalt selbst sieht außergewöhnlich aus: Eine weitere Büroklammer mit einer eingeklammerten Null (siehe Bild 2).
Bild 2: Statt einer Spaltenüberschrift zeigt Access bei Anlagefeldern nur eine Büroklammer an. Kehrt Karl Klammer zurück Nein, …
Das Problem mit der Spaltenüberschrift lässt sich schnell lösen: Dazu brauchen Sie in der Entwurfsansicht einfach nur einen Text für die Eigenschaft Beschriftung des Anlagefelds einzutragen (siehe Bild 3).
Bild 3: … denn für die Eigenschaft Beschriftung können Sie auch für Anlagefelder eine Spaltenüberschrift festlegen.
Was aber stellen wir nun mit dem frisch erstellten Anlagefeld an Bevor wir uns brachial mit einem Doppelklick darauf stürzen, versuchen wir es mit einem Rechtsklick auf den Feldinhalt. Und siehe da: Der Eintrag Anlagen verwalten… sieht verheißungsvoll aus (siehe Bild 4). Ein Klick darauf wirkt übrigens genau so wie der zuvor angesprochene Doppelklick, aber wir wollen doch keine möglicherweise hilfreichen weiteren Funktionen verpassen …
Bild 6: Mit diesem Dialog wählen Sie eine oder mehrere Dateien zum Hinzufügen zum Anlagefeld aus.
Anlagen hinzufügen
Der nun erscheinende Dialog Anlagen enthält ein zunächst leeres Listenfeld und nur eine aktivierte Schaltfläche, die eine Funktion zum Hinzufügen einer Anlage offeriert (siehe Bild 5). Wer diesen Beitrag im Internet oder im PDF-Format liest, dem fällt möglicherweise auf, dass der Anlagen-Dialog im Gegensatz zu den Fenstern der anderen Screenshots blau statt schwarz ist. Dies ist darauf zurückzuführen, dass letzterer ein Windows-Dialog und als solches nicht dem aktuellen Access-Theme unterworfen ist.
Bild 4: Der Kontextmenüeintrag Anlagen verwalten… eröffnet weitere Möglichkeiten.
Ein Klick auf die Schaltfläche Hinzufügen… öffnet den bekannten Datei auswählen-Dialog, mit dem Sie nicht nur eine, sondern auf Wunsch auch mehrere Dateien auswählen können (siehe Bild 6).
Bild 5: Ein Klick auf die Schaltfläche Hinzufügen… sollte Leben in das (noch) leere Listenfeld bringen.
Mehrere Dateien Und … landen die dann alle im gleichen Feld oder legt Access automatisch neue Datensätze für die übrigen Dateien an Genau genommen geschieht beim Hinzufügen mehrerer Dateien eine Mischung aus beidem – dazu jedoch später mehr. Schauen wir uns zunächst an, was beim Hinzufügen einer einzigen Datei, zum Beispiel einer Bilddatei, geschieht. Nach dem Schließen des Datei auswählen-Dialogs erscheint die ausgewählte Datei in der Liste des Anlagen-Dialogs. Gleichzeitig aktiviert Access einige weitere Schaltflächen, so etwa die Entfernen-, die Speichern unter…– und die Alles speichern…-Schaltflächen (siehe Bild 7).
Bild 7: Die enthaltene Bilddatei lässt sich entfernen oder speichern.
Die Funktion dieser Felder ist nicht erklärungsbedürftig. Erklärungsbedürftig ist aber, warum ausgerechnet die Schaltfläche Öffnen deaktiviert ist. Zunächst könnte man vermuten, der Dateityp .png würde einfach nicht unterstützt. Weitere Versuche mit Office-Dokumenten oder anderen Dateiformaten schlugen fehl – die Öffnen-Schaltfläche ließ sich nicht aktivieren. Nach dem Schließen und erneuten Öffnen des Anlage-Dialogs zeigt sich die Öffnen-Schaltfläche jedoch schon bereitwilliger – sie ist nun aktiviert, und auch der Doppelklick auf eine zuvor abgespeicherte Datei öffnet diese in der entsprechenden Anwendung. Nach dem Hinzufügen einiger Dateien (in diesem Fall vier) und dem Schließen des Anlagen-Dialogs zeigt sich, dass die Zahl in Klammern hinter dem Büroklammer-Symbol die Anzahl der im Feld gespeicherten Dateien wiedergibt (siehe Bild 8).
Bild 8: Das Anlagefeld kann offensichtlich mehr als eine Datei speichern.
Wir können also mehrere Dateien in einem einzigen Feld speichern – wie funktioniert das denn
Verborgene Tabelle
In der Tat speichert Access die Dateien nicht in einem einzigen Feld. Stattdessen verbirgt sich hinter Anlagefeldern eine intern gepflegte Tabelle mit den drei Feldern FileData, FileName und FileType.
Woher wir das wissen Ganz einfach: Sie brauchen nur eine Abfrage auf Basis einer Tabelle mit einem Anlagefeld zu erstellen. Die Feldliste zeigt versetzt die Felder der Anlagen-Tabelle an (siehe Bild 9).
Bild 9: In einer Abfrage erkennt man die wahre Gestalt eines Anlagefelds.
Wenn Sie diese wie in der Abbildung in das Entwurfsraster ziehen und in die Datenblattansicht wechseln, enthält jeder Datensatz neben dem Original-Anlagefeld mit vier Dateien je ein Anlagefeld mit einer Datei sowie Dateiname und Dateiendung der enthaltenen Datei (siehe Bild 10).
Bild 10: Mittels einer Abfrage lassen sich die Daten aus der hinter einem Anlagefeld verborgenen Tabelle anzeigen.
Die Ausgabe sieht genau so aus, als wenn die Beispieltabelle tblAnlagen und die verborgene Tabelle mit den einzelnen Anlagen eine 1:n-Beziehung aufweisen.
Exkurs für Profis: Der Nachweis der verborgenen Hilfstabellen
Wie können wir herausfinden, ob Anlagefelder tatsächlich mit verborgenen Tabellen verknüpft sind, und so den Eindruck bestätigen, den das Abfrageergebnis aus Bild 10 lieferte Ganz einfach: Wir brauchen einfach nur die Ausführungspläne zu untersuchen, welche die Jet-Engine beim Ausführen von Abfragen verwendet und die, eine entsprechende Einstellung in der Registry vorausgesetzt, in eine Datei geschrieben werden und eingesehen werden können.
Ganz einfach gelingt dies mit einem Tool namens Showplan-Capture von Sascha Trowitzsch, das Sie unter dem folgenden Link herunterladen können: http://www.mosstools.de/index.phpoption=com_content&view=article&id=54&Itemid=57
Nach dem Entpacken und Starten brauchen Sie nur die Option Aktiv für ACE (Access 2007/2010) auszuwählen und dann dafür zu sorgen, dass die zu untersuchende Abfrage neu optimiert wird. Dazu ändern Sie irgendein Detail dieser Abfrage, indem Sie beispielsweise das Feld Anlagefeld entfernen und erneut die Datenblattansicht dieser Abfrage anzeigen. Das Ergebnis sieht wie in Bild 11 aus.
Bild 11: Der Ausführungsplan der Abfrage qryAnlagen zeigt, dass die einzelnen Dateien des Anlagefelds in einer verknüpften Tabelle gespeichert werden.
Die verborgene verknüpfte Tabelle heißt in diesem Fall Anlagefeld_DA3A63DDBA8A47E394389107CAFA307D und ist über das Feld _Anlagefeld mit dem Feld Anlagefeld der Tabelle tblAnlagen verknüpft.
Nicht alle Dateiformate möglich
Ohne den Einsatz von VBA (dazu später mehr) können Sie nur wenige Dateiformate in einem Anlagefeld speichern. Dazu gehören einige Bilddateiformate (BMP, RLE, DIB, GIF, JPEG, JPG, JPE, EXIF, PNG, TIFF, TIF, ICON, ICO, WMF und EMF), die mit einer Microsoft Office-Anwendung erzeugten Formate, .txt und .log-Dateien.
Informationen zu den zugelassenen, speziell aber auch zu den verbotenen Dateiformaten finden Sie in der Onlinehilfe des VBA-Editors unter dem Stichwort Attachment-Objekt.
Besonderheiten beim Umgang mit Bilddateien
Bilddateien können Sie entweder im ursprünglichen Format in einem Anlagefeld speichern oder in dem proprietären Format, in dem diese auch beim Einfügen in OLE-Feldern gespeichert werden. Letzteres hat den Nachteil, dass Bilder mit vormals wenig Speicherbedarf in ein proprietäres Format konvertiert werden, das sehr viel mehr Speicherplatz frisst. Ob Access Bilddateien etwa im Format .jpg, .gif oder .png bei der Originalgröße belässt, stellen Sie im Optionen-Dialog von Access ein. Diesen öffnen Sie mit der Schaltfläche Access-Optionen im Office-Menü. Dort zeigen Sie den Bereich Aktuelle Datenbank an und stellen unter Anwendungsoptionen die Option Bildeigenschaften-Speicherformat auf den Wert Quellbildformat beibehalten ein (siehe Bild 12).
Bild 14: Eine .ico-Datei im Anlage-Steuerelement
Das Anlage-Steuerelement
Was wäre ein Anlagefeld, wenn wir es nicht in Formularen einsetzen könnten Und so gibt es natürlich auch ein neues Steuerelement für diesen neuen Datentyp. Wenn Sie ein solches Steuerelement zu einem Formular hinzufügen möchten, finden Sie es im Ribbon in Form eines Büroklammer-Symbols vor (siehe Bild 13).
Bild 12: Diese Option sorgt dafür, dass Bilddateien beim Einfügen in ein Anlagefeld nicht konvertiert werden und so unter Umständen wesentlich mehr Speicherplatz benötigen.
Es lässt sich zwar als ungebundenes Steuerelement hinzufügen, aber anfangen lässt sich erst etwas damit, wenn Sie seinen Steuerelementinhalt an ein Anlagefeld einer Tabelle oder einer Abfrage binden. Dann zeigt es beispielsweise eine Icon-Datei wie in Bild 14 an.
Bild 13: Das Büroklammersymbol repräsentiert das neue Anlage-Steuerelement.
Wenn Sie einfach auf das Anlage-Steuerelement klicken, erscheint darüber eine kleine Kontext-Symbolleiste, die das Blättern in den gespeicherten Dateien sowie das Öffnen des Anlagen-Dialogs erlaubt – Letzteren kennen Sie ja bereits.
Während das Anlage-Steuerelement Bilder direkt anzeigt, liefert es etwa für Office-Dokumente nur das jeweilige Datei-Symbol als Platzhalter – eine Vorschau auf den Inhalt der Datei erscheint nicht. Das Anlage-Steuerelement liefert eine Reihe spezieller Eigenschaften:
- Standardbild (unter VBA: DefaultPicture): Gibt eine Bilddatei an, die das Anlage-Steuerelement standardmäßig anzeigt – also beispielsweise, wenn es leer ist.
- Hintergrundart (BackStyle): Kann die Werte Normal (1) oder Transparent (0) annehmen. Diese Eigenschaft ist interessant, wenn das Anlage-Steuerelement Bilder mit Transparenz anzeigt. Der Hintergrund scheint in diesem Fall durch die transparenten Bereiche der Bilder hindurch.
- Es gibt noch ein Ereignis, das beim Blättern in den im Anlagefeld gespeicherten Dateien ausgelöst wird sowie einige weitere Eigenschaften, die aber nur per VBA eingestellt oder ausgelesen werden können. Auf diese gehen wir später in diesem Beitrag ein.
Alternative Möglichkeit zur Anzeige von Anlagen in Formularen
Das Beispielformular aus Bild 14 enthält als Steuerelementinhalt den Namen des Anlagefelds der an das Formular gebundenen Tabelle tblAnlagen. Damit liefert es genau die gleichen Funktionen, die auch das Tabellenfeld selbst offerierte.
Sie können in diesem Formular erstens durch die verschiedenen in der Tabelle tblAnlagen gespeicherten Datensätze blättern und außerdem die verschiedenen im Feld Anlagefeld der Tabelle gespeicherten Dateien betrachten.
Es gibt noch eine andere Möglichkeit, die in einem Anlagefeld enthaltenen Dateien in einem Anlagefeld anzuzeigen. Wenn Sie nicht das Anlagefeld selbst aus der Feldliste in den Formularentwurf ziehen, sondern die in der verknüpften Tabelle gespeicherten Felder FileData und, nach Wunsch, die Felder FileName und FileType (siehe Bild 15), durchlaufen Sie die im Feld Anlagefeld aller Datensätze der Tabelle tblAnlagen gespeicherten Dateien.
Bild 15: Dieses Formular zeigt die in allen Datensätzen gespeicherten Dateien wie einen eigenen Datensatz an.
Wenn Sie also beispielsweise im Anlagefeld des ersten Datensatzes drei Bilddateien gespeichert haben und im Anlagefeld des zweiten Datensatzes zwei, zeigt der Navigationsbereich des Formulars insgesamt fünf Datensätze an (siehe Bild 16).
Bild 16: Datensatzweise Anzeige von Anlagen
Diese Darstellung erlaubt nicht den komfortablen Zugriff auf die im Anlagefeld gespeicherten Daten wie sie durch die Popup-Symbolleiste oder das Kontextmenü des herkömmlich verwendeten Anlagefelds bereitgestellt werden.
Anlage-Steuerelement in Berichten
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo