Zum Inhalt dieser Seite

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.

Nach oben4.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.

Nach oben4.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.

Home