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 1/2010.

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

Lernen Sie das Anlagefeld, das Anlage-Steuerelement und deren Steuerung per VBA kennen.

Techniken

Tabellen, Anlagefelder, VBA

Voraussetzungen

Access 2007 und höher

Beispieldateien

Anlagefelder.mdb

Shortlink

www.access-im-unternehmen.de/700

Access 2007: Anlagefelder

André Minhorst, Duisburg

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 (s. Abb. 1).

pic001.png

Abb. 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 (s. Abb. 2).

pic002.png

Abb. 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 (s. Abb. 3).

pic003.png

Abb. 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 (s. Abb. 4). Ein Klick darauf wirkt übrigens genau so wie der zuvor angesprochene Doppelklick, aber wir wollen doch keine möglicherweise hilfreichen weiteren Funktionen verpassen ...

pic006.png

Abb. 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 (s. Abb. 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.

pic004.png

Abb. 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 (s. Abb. 6).

pic005.png

Abb. 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 (s. Abb. 7).

pic007.png

Abb. 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 (s. Abb. 8).

pic008.png

Abb. 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 (s. Abb. 9).

pic009.png

Abb. 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 (s. Abb. 10).

pic010.png

Abb. 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 Abb. 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.php?option=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 Abb. 11 aus.

pic011.png

Abb. 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 (s. Abb. 12).

pic014.png

Abb. 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 (s. Abb. 13).

pic012.png

Abb. 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 Abb. 14 an.

pic013.png

Abb. 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 Abb. 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 (s. Abb. 15), durchlaufen Sie die im Feld Anlagefeld aller Datensätze der Tabelle tblAnlagen gespeicherten Dateien.

pic015.png

Abb. 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 (s. Abb. 16).

pic016.png

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

Sinnvoll wird das Einarbeiten des Feldes FileData der Untertabelle eines Anlagefelds erst in einem Bericht. Abb. 17 zeigt einen Bericht, dessen Anlage-Steuerelement an das Feld Anlagefeld der Tabelle tblAnlagen gebunden ist. Egal, wie viele Bilddateien das Anlagefeld eines jeden Datensatzes enthält: Der Bericht zeigt nur das jeweils erste Bild an. Wenn Sie die Eigenschaft Steuerelementinhalt des Anlage-Steuerelements auf das Feld Anlagefeld.FileData, also das Feld der Untertabelle des Anlagefelds einstellen, zeigt der Bericht alle enthaltenen Bilddateien an (s. Abb. 18).

pic017.png

Abb. 18: Erst, wenn man das Anlage-Steuerelement an das Feld FileData in der Untertabelle des Anlagefelds bindet, zeigt der Bericht alle enthaltenen Bilddateien an.

pic018.png

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:

Zippen ohne Zusatzkomponente

Indizierung mit Access

Das Append-Only-Memofeld

DAO: Tabellen, Felder und Co. bearbeiten

Das Optionsgruppen-Steuerelement

Automatischer Up- und Download per FTP

Lookup-Daten verwalten

© 2003-2015 André Minhorst Alle Rechte vorbehalten.