Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

A2007: Anlagen per VBA verwalten

Der neue Datentyp "Anlage" bringt fr Tabellen, Abfragen und Formulare passende Dialog zum Hinzufgen, ffnen oder Entfernen von Anlagen mit. Doch was, wenn Sie etwa das Hinzufgen oder Entfernen von Anlagen automatisieren mchten? Ganz klar: Das funktioniert auch mit VBA. Wie? Lesen Sie hier weiter.

Beispieldatenbank

Die Beispiele aus diesem Beitrag finden Sie unter folgendem Download:

Neue DAO-Bibliothek

Mit Access 2007 fhrt Microsoft eine neue DAO-Bibliothek ein. Diese ist standardmig als Verweis eingestellt, die vorherigen DAO- und ADO-Bibliotheken nicht mehr (siehe Abbildung 1).

Genau genommen handelt es sich nur um eine Erweiterung der bisherigen DAO-Objektbibliothek. Neu ist beispielsweise das Objekt "Recordset2", das Sie im Rahmen dieses Beitrags nher kennen lernen.

Abbildung 1: Der Verweis auf die neue DAO-Objektbibliothek

Zugriff auf die Anhnge

uerlich speichert Access die Anhnge in einem einzigen Feld, das aber intern mit einer versteckten Tabelle verknpft ist. Diese enthlt je Anlage einen Datensatz. Wie greift man aber nun per VBA auf diese verknpfte Tabelle zu? Ganz einfach: Man erstellt einfach eine neue Datensatzgruppe auf Basis der "Value"-Eigenschaft des Anlage-Feldes. Natrlich ist dies eine Spezialitt der neuen DAO-Bibliothek, genau genommen des neuen Objekts "Recordset2".

Das folgende Listing zeigt, wie es geht: Es ffnet zunchst eine Datensatzgruppe auf Basis der Tabelle "tblAnlagenBeispiele" und dann eine zweite, die auf dem Feld mit dem Datentyp "Anlage" basiert.

Wie bei einer herkmmlichen Datensatzgruppe lassen sich die Felder der Datensatzgruppe auflisten. Das Ergebnis knnen Sie in Abbildung 2 betrachten.

Public Sub AnlagenfelderAuflisten()

    Dim db As DAO.Database

    Dim rst As DAO.Recordset2

    Dim rstAnlagen As DAO.Recordset2

    Dim fld As Field2

    Set db = CurrentDb

    Set rst = db.OpenRecordset("tblBeispielAnlagen", dbOpenDynaset)

    Set rstAnlagen = rst.Fields("Beispielanlagen").Value

    For Each fld In rstAnlagen.Fields

        Debug.Print fld.Name

    Next fld

    rstAnlagen.Close

    rst.Close

    Set rstAnlagen = Nothing

    Set rst = Nothing

    Set db = Nothing

End Sub

Abbildung 2: Felder der versteckten Tabelle mit Anhngen

Die folgende Routine zeigt die Inhalte der Felder an - mit Ausnahme des Feldes "FileData". Dieses enthlt die binren Daten der Datei - lesenswert ist das in den wenigsten Fllen.

Public Sub AnlagenAuflisten()

    Dim db As DAO.Database

    Dim rst As DAO.Recordset2

    Dim rstAnlagen As DAO.Recordset2

    Dim fld As Field2

    Set db = CurrentDb

    Set rst = db.OpenRecordset("tblBeispielAnlagen", dbOpenDynaset)

    Set rstAnlagen = rst.Fields("Beispielanlagen").Value

    Do While Not rstAnlagen.EOF

        Debug.Print rstAnlagen!FileName, rstAnlagen!FileType, rstAnlagen!FileTimeStamp, rstAnlagen!FileFlags, rstAnlagen!FileURL

        rstAnlagen.MoveNext

    Loop

    rstAnlagen.Close

    rst.Close

    Set rstAnlagen = Nothing

    Set rst = Nothing

    Set db = Nothing

End Sub

Fortsetzung folgt...

In weiteren Beitrgen erfahren Sie, wie Sie einem Anlagenfeld Anlagen hinzufgen und diese wieder entfernen.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.