Anlage-Felder und VBA

Anlage-Felder bieten bereits ohne den Einsatz von VBA echten Nutzen. Wenn es jedoch darum geht, größere Operationen durchzuführen, um etwa eine Reihe von Bildern aus verschiedenen Verzeichnissen in ein oder mehrere Anlage-Felder zu kopieren, werden Sie dies kaum von Hand erledigen wollen. Stattdessen erstellen Sie eine VBA-Abfrage, die das Einfügen, Löschen oder Entfernen der Dateien in und aus dem Anlage-Feld erledigen soll.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1309_Anlagefelder.accdb.

Hinweise

Anlage-Felder wurden mit Access 2007 eingeführt. Voraussetzung ist außerdem ein Verweis auf die Bibliothek Microsoft Office x.0 Access Database Engine Object Library, der normalerweise bei Datenbanken des Typs .accdb bereits voreingestellt sein sollte.

Sollte die Datenbank aus irgendwelchen Gründen den Verweis auf die Bibliothek Microsoft DAO 3.6 Object Library enthalten, entfernen Sie diesen Sie über den Verweise-Dialog (VBA-Editor, Menü Extras|Verweise) und fügen den Verweis auf die oben genannte Bibliothek hinzu (siehe Bild 1).

Verweis auf die neue DAO-Bibliothek

Bild 1: Verweis auf die neue DAO-Bibliothek

Struktur von Anlage-Feldern

Bevor wir uns mit VBA an das Lesen und Bearbeiten eines Anlage-Feldes heranwagen, schauen wir uns die zugrunde liegende Struktur an. Am besten gelingt dies, wenn Sie eine neue Abfrage erstellen und eine Tabelle als Datenherkunft hinzufügen, die ein Anlage-Feld enthält. Dies sieht etwa wie in Bild 2 aus.

Das Anlage-Feld im Abfrageentwurf

Bild 2: Das Anlage-Feld im Abfrageentwurf

Wechseln Sie zur Datenblattansicht dieser Abfrage, erkennen Sie, dass jeder Datensatz für jede enthaltene Anlage je einmal erscheint (siehe Bild 3). Der Datensatz mit dem Wert 3 im Feld DateiID enthält beispielsweise fünf Dateien im Anlagefeld. Dementsprechend erscheint der Datensatz fünf Mal, jeweils mit einer anderen Anlage.

Abfrage, die jeden Datensatz entsprechend der Anzahl der enthaltenen Anlagen anzeigt.

Bild 3: Abfrage, die jeden Datensatz entsprechend der Anzahl der enthaltenen Anlagen anzeigt.

Dies weist darauf hin, dass die in Anlage-Feldern gespeicherten Daten möglicherweise in einer weiteren, für Benutzeraugen nicht sichtbaren, Tabelle gespeichert werden. In der Tat findet sich in einer Datenbank, nachdem Sie eine Tabelle mit einem Anlage-Feld hinzugefügt haben, eine zusätzliche Tabelle mit einem kryptischen Namen wie f_AE1ADE703D174BDAADDFFEBC068B79C8_Test (diese lässt sich allerdings nicht öffnen).

Und wenn die Daten des Anlage-Feldes schon in einer verknüpften Tabelle landen, finden wir sicher auch unter DAO einen alternativen Weg für den Zugriff auf diese Daten.

Nur lesen

Wenn Sie die Daten nur lesen möchten, aber nicht bearbeiten, können Sie direkt mit einem Recordset auf Basis der oben beschriebenen Abfrage arbeiten. Für die VBA-Prozeduren legen Sie im VBA-Editor mit Einfügen|Modul ein neues Modul namens mdlAnlagen an.

Fügen Sie dann die Prozedur mit dem Code aus Listing 1 hinzu. Die Prozedur deklariert und erstellt zunächst die benötigten Objekte, also ein Database-Objekt namens db und ein Recordset-Objekt namens rst und durchläuft dann alle Datensätze der Abfrage qryAnlagen in einer Do While-Schleife.

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →