4.5 Anzahl oder Summe mit Bedingung
Wenn man in die Verlegenheit kommt, in einem Bericht (oder Formular) einen gewissen Anteil der Datensätze
zu zählen, so kann man natürlich so etwas wie DCount() einsetzen. Allerdings ist diese
Lösung bei variabler Datensatzherkunft des Berichtes etwas schwierig umzusetzen - das Kriterium der
DCount()-Funktion müsste dann ebenfalls angepasst werden.
4.5.1 Bedingte Anzahl
Mit der Summenfunktion ist das Ziel viel einfacher zu erreichen. Angenommen, man möchte alle Gerichte in dem Bericht zählen, die günstiger als 10 Euro sind, dann reicht ein Steuerelementinhalt wie:
=Abs(Summe([Preis]<10))
Selbstverständlich lassen sich auch mehrere Bedingungen berücksichtigen. Falls nun nur die vegetarischen Gerichte unter 10 Euro interessieren, müsste der Steuerelementinhalt so aussehen:
=Abs(Summe([Preis]<10 Und [Kategorie]='vegetarisch'))
Erklärung: Der Inhalt der Klammer, also z.B. [Preis]<10 Und [Kategorie]='vegetarisch'
liefert True oder False. True wiederum nimmt intern den Wert
-1 ein, und False entspricht 0. Man summiert also für die
einzelnen, angezeigten Datensätze automatisch -1,0,-1,-1 ... - das Ergebnis ist die
gewünschte Anzahl. Das störende Vorzeichen wird ganz zum Schluss durch die Abs()-Funktion entfernt.
4.5.2 Bedingte Summe
Nach ähnlicher Logik lassen sich auch die Preise für die Gerichte summieren, die mindestens 10 Euro
kosten. Statt DSum() einzusetzen, verwendet man dann folgenden Steuerelementinhalt:
=Summe([Preis]*Abs([Preis]>=10))
Der Preis wird hier also bei nicht zutreffender Bedingung mit 0 bzw. bei Erfüllung der
Anforderung mit Abs(-1) multipliziert und entsprechend geringer wird die Summe, wenn Datensätze vorhanden sind, bei denen das Kriterium nicht erfüllt ist.
