Informationen einer Datenbank 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
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
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
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