Access Anfänger: Wie greife ich in VBA auf die Werte einer Tabelle zu?

Aus DBWiki
Wechseln zu: Navigation, Suche

DAO

Über ein DAO-Recordset (Data Access Objects) ist es möglich, per VBA auf die Datensätze einer Tabelle der aktuellen Access-Datenbank zuzugreifen. Statt auf Tabellen kann man auch auf gespeicherte Abfragen zugreifen.

Erforderliche Verweise

Eine Voraussetzung dafür ist, dass die erforderlichen Verweise gesetzt sind. Die Standardverweise werden allerdings beim Anlegen der Datenbank automatisch gesetzt, und können im VBA-Editor unter dem Menüpunkt Extras -> Verweise nachgeprüft werden.

  • Bis Access Version 2003: Microsoft DAO 3.xx Object Library
  • Ab Access Version 2007: Microsoft Office 1x.x Access database engine Object Library

Code-Beispiel

Der Code dafür könnte etwa so aussehen:

   Dim db     As DAO.Database
   Dim rs     As DAO.Recordset
   Dim strSQL As String
   Dim var    As Variant
 
   Set db = CurrentDb                 ' Datenbank definieren
   strSQL = "SELECT * FROM Tabelle"   ' SQL-String definieren
   Set rs = DB.OpenRecordset(strSQL, dbOpenDynaset)  ' Recordset öffnen (schreibender Zugriff)
 
   Do Until rs.EOF                    ' Schleife über die Datensätze des Recordsets
      var = rs!Feldname               ' Wert auslesen
      'danach Variable var evtl. irgendwie verarbeiten
 
      'Andere beispielhafte mögliche Aktionen:
      'rs.Edit                        ' Wenn Daten im Datensatz geändert werden sollen
      'rs.AddNew                      ' Wenn neuer Datensatz eingefügt werden soll
 
      'Verschiedene Möglichkeiten, einen Wert zuzuweisen
      'rs!Feld1 = 123
      'rs.Fields("EinFeldname") = 5
      'rs![Feld 3] = "ein Text"
 
      'rs.Update                      ' Änderungen am neuen bzw. geänderten Datensatz speichern
 
      ' Wichtig!!! Sonst wird die Schleife nie verlassen
      rs.MoveNext                     ' den nächsten Datensatz ansteuern.
   Loop
 
   rs.Close                           ' Recordset schließen

ADO

Wenn Du mit Access auf eine Tabelle einer externen Datenbank wie z.B. den MS SQL-Server zugreifen möchtest, ist ADO (ActiveX Data Objects) oft die bessere Wahl. Siehe dazu Zugriff auf einen SQL-Server

DLookup (DomWert)

Weiterhin kann man einen einzelnen Wert aus einer Tabelle oder aus einer gespeicherten Auswahlabfrage mittels DLookup()-Funktion holen.

Weblinks