VBA | Access (deutsch) | Funktion |
DMin() | DomMin() | Findet den kleinsten Wert innerhalb einer Gruppe. |
DMax() | DomMax() | Findet den größten Wert innerhalb einer Gruppe. |
DCount() | DomAnzahl() | Gibt die Anzahl gefundener Datensätze wieder |
DSum() | DomSumme() | Summiert Werte innerhalb einer Gruppe. |
DLookUp() | DomWert() | Gibt einen Wert wieder. |
DFirst() | DomErsterWert() | Gibt den ersten Wert innerhalb einer Gruppe wieder. |
DLast() | DomLetzerWert() | Gibt den letzten Wert innerhalb einer Gruppe wieder. |
DAvg() | DomMittelwert() | Gibt den Mittelwert einer Gruppe wieder. |
DStDev() | DomStdAbw() | Gibt eine Standardabweichung innerhalb einer Gruppe wieder |
DVar() | DomVarianz() | Schätzt die Varianz einer Gruppe (mindestens 2 Werte erforderlich!) |
Alle verwenden die selbe Syntax:
für VBA:
für Access: =DMin("Feld";"Tabelle";"Kriterium
= Wert")
Schlüßeln wir es einmal weiter auf:
Feld:
Damit wird ein bestimmtes Feld innerhalb einer Tabelle/Abfrage angesprochen.
Bei DCount kann man hier auch ein "*" verwenden, wenn das Feld
eigentlich egal ist.
Tabelle:
Damit ist die Datenquelle gemeint. Diese kann eine Tabelle oder eine Abfrage
sein.
Kriterium:
Mit dem Kriterium kann man seine Auswahl einschränken. Hier kann man 1 oder
mehrere Kriterien verwenden.
Man muss allerdings bei den unterschiedlichen Datentypen unterscheiden:
Für VBA:
"Zahl = " & Me!Zahl
"Text = '" & Me!Text & "'"
"Datum = " & Format(Me!Datum, "\#yyyy\-mm\-dd\#")
Für Access:
"Zahl = " & [Zahl]
"Text = '" & [Text] & "'"
"Datum = " & CDate([Datum])
Bei Texten kann man auch Wildcards verwenden. Hierzu muss man allerdings Like
verwenden und nicht "=":
Man kann natürlich auch mehrere Kriterien in einem Aufruf verwenden:
Allen Domänenfunktionen ist gemein, dass sie bei größeren Datenmenge
relativ langsam werden.
Also wollen wir hier auch gleich noch ein Beispiel zeigen, wie man sich eine Ersatzfunktion erstellt.
Dazu erstellen wir uns in einem globalen Modul eine neue Funktion:
Public Function fLookUp(Feld As String, Tabelle As String, Optional Kriterium As String) As Variant
Dim strSQL As String
strSQL = "SELECT " & Feld & " FROM " & Tabelle
If Not IsMissing(Kriterium) Then
strSQL = strSQL & " WHERE " & Kriterium
End If
fLookUp = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenSnapshot)(0)
End Function
Diese Funktion besitzt keine Fehlerbehandlung! Wenn der Recordset leer ist (rs.EOF oder rs.BOF = True), gibt es eine Fehlermeldung.