Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
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).
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.
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.
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.
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