1. Informationen einer Datenbank ermitteln

 

1. Formularnamen ermitteln

        Dim datenbank As Database
        Dim x As Integer
        Set datenbank = CurrentDb()
        For x = 0 To datenbank.Containers("Forms").Documents.Count - 1

        Debug.Print datenbank.Containers("Forms").Documents(x).Name

        Next

        Set datenbank = Nothing

2. Tabelleninformationen ermitteln

        Dim datenbank As Database
        Dim tabelle As TableDef
        Dim x As Integer

        Set datenbank = CurrentDb()
        For x = 0 To datenbank.TableDefs.Count - 1

        Set tabelle = datenbank.TableDefs(x)
        Debug.Print tabelle.Name
        Debug.Print tabelle.RecordCount
        Debug.Print tabelle.DateCreated
        Debug.Print tabelle.LastUpdated

        Next

        Set datenbank = Nothing

3. Abfragenamen und –Typ ermitteln

        Dim datenbank As Database
        Dim abfrage As QueryDef
        Dim x As Integer
        Set datenbank = CurrentDb()
        For x = 0 To datenbank.QueryDefs.Count - 1

        Set abfrage = datenbank.QueryDefs(x)
        Select Case abfrage.Type
        Case dbQAppend:

        Debug.Print "Anfügeabfrage"

        Case dbQCrosstab:

        Debug.Print "Kreuztabellenabfrage"

        Case dbQDelete:

        Debug.Print "Löschabfrage"

        Case dbQUpdate:

        Debug.Print "Aktualisierungsabfrage"

        Case Else

        Debug.Print "Auswahlabfrage"

        End Select

        Debug.Print abfrage.Name
        Debug.Print abfrage.DateCreated
        Debug.Print abfrage.LastUpdated
        Debug.Print abfrage.Type

        Next

        Set datenbank = Nothing

        Anmerkung: Um nur die Abfragen aus dem Datenbankfenster zu erhalten kann man folgende Zeile nach der "set abfrage = ..." einfügen:

        If Left$(abfrage.Name, 1) <> "~" Then

4. Felder einer Datensatzgruppe ermitteln

        Dim datenbank As Database
        Dim tabelle As TableDef
        Dim felder As Field
        Dim x, y As Integer
        Set datenbank = CurrentDb()
        For x = 0 To datenbank.TableDefs.Count - 1

        Set tabelle = datenbank.TableDefs(x)
        Debug.Print tabelle.Name
        For y = 0 To tabelle.Fields.Count - 1

        Set felder = tabelle.Fields(y)
        Debug.Print felder.Name, felder.Size, felder.Type

        Next

        Next

        datenbank.Close

        Der Wert des Feldtypen ist in der folgenden Tabelle beschrieben:

        Datentyp Konstante Wert
        Byte DbByte 2
        Binäres OLE-Objekt DbLongBinary 9
        Currency DbCurrency 5
        Datum/Zeit DbDate 8
        Double DbDouble 7
        Integer DbInteger 3
        Ja/Nein DbBoolean 1
        Long DbLong 4
        Memo DbMemo 12
        Single DbSingle 6
        Text DbText 10

        Hinweis: Um die Systemobjekte auszuschließen fügt man folgende Zeile nach der "set tabelle = ..." ein:

        If (tabelle.Attributes And dbSystemObject) = 0 Then

5. Listenfeld

5.1.1 Standardwert im Eigenschaftenfenster für Markierung festlegen:

          [Listenfeldname].[ItemData](0)

          wobei von 0 für den ersten Eintrag begonnen wird zu zählen.

5.1.2 Listenfeld-Eintrag in VBA markieren:

Me![Listenfeldname].Selected(0) = True
Me![Listenfeldname] = "Name des Eintrages der Zeile 0"

Mit 'Selected' wird nur ein interner Zähler gesetzt, welcher aber notwendig ist, um die markierte Zeile auch als markiert zu erkennen. Dabei tritt aber ein Fehler auf, wenn vorher kein Steuerelement selektiert wurde: Es ist keine Aktion mehr im Formular ausführbar! Dieser Fall tritt dann auf, wenn z.B. beim Öffnen eines Formulars ein bestimmtes Element über VBA selektiert werden soll. Daher muß man zuvor mit .SetFocus ein Steuerelement auswählen.

5.2 Wievielter Eintrag wurde gewählt?

Forms![Formularname]![Listenfeldname].ListIndex

 

zurück