Access-Know-how Objektorientiertes Programmieren mit Klassen Objektorientiertes Programmieren mit Klassen André Minhorst, Duisburg VBA wird im Allgemeinen die Eigenschaft abgesprochen, eine objektorientierte Programmiersprache zu sein. Um diese Aussage zu untersuchen, müsste man erst einmal festlegen, ab wann eine Sprache objektorientiert ist und welche Eigenschaften für diese Bezeichnung vorhanden sein müssen. Lässt man einmal außen vor, dass Vererbung und Polymorphie im VBA-Sprachgebrauch Inhalt 1 2 3 4 Eingebaute Objekttypen in Access.........202 Eigene Objekttypen – warum? .................202 Klassenmodule ...............................................203 Datenzugriff kapseln per Klassenmodul .................................................208 5 Formulare als Objektoberfläche...............210 6 Zusammenfassung und Ausblick..............212 Fremdwörter sind, kann man VBA sicher als objektorientierte Sprache auffassen. Wie auch immer – im vorliegenden Beitrag erfahren Sie, wie Sie sich die objektorientierten Eigenschaften von VBA zu Nutze machen. 1 Eingebaute Objekttypen in Access Wer mit Access arbeitet und dabei VBA für die Entwicklung von Datenbankanwendungen verwendet, kann vermutlich mit Objekten verschiedenen Typs umgehen – wenn er auch vielleicht noch nie einen eigenen Objekttyp erstellt hat. Sicher hat jeder schon einmal ein Recordset via VBA geöffnet und auf die darin enthaltenen Public Sub OpenRecordset() Methoden wie Open, MoveNext, AddNew, Update oder Close zugegriffen oder Informationen aus Eigenschaften wie RecordCount, EOF oder Filter verwendet. Beispiele dafür zeigt die Routine aus Quellcode 1, die eine auf der Tabelle tblKontakte basierende Datensatzgruppe öffnet und den Inhalt der einzelnen Datensätze ausgibt. Mit diesem Code erzeugt man unter anderem eine Instanz des Objekttyps Recordset, legt einige seiner Eigenschaften wie beispielsweise die Datenherkunft und die zugrunde liegende Verbindung fest und greift anschließend auf die so verfügbar gemachten Daten zu. Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Set cnn = CurrentProject.Connection Set rst = New ADODB.Recordset rst.Open "tblKontakte", cnn, adOpenKeyset, _ adLockPessimistic Do While Not rst.EOF Debug.Print rst!KontaktID, rst!Vorname, _ rst!Nachname rst.MoveNext Eine weitere, ganz offensichtliche Objektart ist beispielsweise ein Formular – wie für ein Objekt üblich, verfügt es über Methoden, Eigenschaften und Ereignisse. Ein Formularobjekt kann wiederum Steuerelemente enthalten, die ebenfalls Objekttypen repräsentieren. Loop rst.Close Set rst = Nothing Set cnn = Nothing End Sub Quellcode 1 202 Access, SQL & .NET 2 Eigene Objekttypen – warum? Mit den in Access vorhandenen Objekttypen lässt sich jede computer.haufe.de