[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Liste aller Recordsets (Tabellen und Abfragen)

Sprache / Programm: Access ab Version 97
Beschreibung

Erstellt eine Liste entweder aller Tabellen (ohne Systemtabellen und versteckte Tabellen) oder erstellt eine Liste aller Auswahl- und Kreuztabellenabfragen (die anderen Abfragetypen lassen sich nicht wie eine Tabelle öffnen und bearbeiten). Das Ergebnis kann z.B. der RowSource-Eigenschaft eines Listenfeldes zugewiesen werden.

VBA-Quelltext
' Überprüft, ob eine Tabelle oder Abfrage mit dem angegebenen Namen existiert
Public Function ListeAllerRecordSets(TabelleOderAbfrage As Integer, Fehler) As String
    Dim RecSet As Object, Liste As String
    Liste = """"
    If TabelleOderAbfrage = acQuery Then
        ' Liste der Abfragen erstellen
        For Each RecSet In CurrentDb.QueryDefs
            If (RecSet.Type = dbQCrosstab) Or (RecSet.Type = dbQSetOperation) Or _
              (RecSet.Type = dbQSelect) Then
                    Liste = Liste & RecSet.Name & """;"""
            End If
        Next RecSet
    Else
        ' Liste der Tabellen erstellen
        For Each RecSet In CurrentDb.TableDefs
            If Not CBool(RecSet.Attributes And (dbSystemObject Or dbHiddenObject)) Then
                Liste = Liste & RecSet.Name & """;"""
            End If
        Next RecSet
    End If
    If Len(Liste) > 1 Then ListeAllerRecordSets = Left(Liste, Len(Liste) - 2)
End Function
Argumente der Funktion/Prozedur

TabelleOderAbfrage

Eine der Access-Konstanten acTable oder acQuery um anzugeben, welcher Typ von Recordsets ausgegeben werden soll.

Fehler

Kopfzeile für die Meldungsbox, falls ein Tabellen- oder Abfragename " enthält.
Verwendete Variable

RecSet
Schleifenvariable, welche die jeweilige Auflistung (Tabellen oder Abfragen) durchläuft.

Liste
In dieser Variablen werden alle Listeneinträge gesammelt.
StrZeichen
Falls der Name einer Tabelle oder Abfrage ein " enthält, wird der Wert dieser Variablen auf True gesetzt.
Rückgabewert

Liste aller Tabellen oder Liste aller Abfragen in der Form "Name1";"Name2";"Name3", so daß der Rückgabewert sofort der Row-Source-Eigenschaft eines Kombinations- oder Listenfeldes zugewiesen werden kann.

Anwendungsbeispiel(e)...

Dem Listenfeld (sinngemäß ist auch ein Kombinationsfeld möglich) mit dem Namen ‘TabellenListe‘ werden die Namen aller Tabellen und Abfragen zugewiesen. Dies wird beim Öffnen des Formulars ‘Form‘ durchgeführt, indem die Ereigniseigenschaft ‘Beim Öffnen‘ des Formulars in VBA erstellt wird:

    Private Sub Form_Open(Cancel As Integer)

        Fehler = "Fehler bei der Tabellenausgabe"

        Me.TabellenListe.RowSource = ListeAllerRecordSets(acTable, Fehler)

    End Sub

Hinweis

Damit das Listenfeld die übergebenen Argumente auswertet, muß die Eigenschaft ‘Herkunftstyp‘ (RowSourceType) auf ‘Wertliste‘ eingestellt werden. Mit dieser Einstellung können der RowSource-Eigenschaft aber nur max. 2048 Zeichen zugewiesen werden.

Benötigt die Funktion 'StringZeichenVerdoppeln'.

Anwendungsgebiete, Fehler und Warnungen

Das Programm kann die Namen von Tabellen bzw. Abfragen, die ein " enthalten, nicht verarbeiten, daher werden solche Namen nicht ausgegeben und statt dessen eine Fehlermeldung ausgegeben. Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.