Data Watch - Einsatz am Limit

Drei Warnstufen

Allerdings ist es sinnvoll, Problemwerte nicht erst dann zu melden, wenn das Kind bereits in den Brunnen gefallen ist. Es soll darum drei Stufen geben, von der Information über die Meldung bis zum wirklich überschrittenen Wert mit Stopp- Hinweis.

In Anlehnung an die Ungarische Notation werden die betreffenden Abfragen in ihren Namen entsprechend gekennzeichnet. Der Rest des Namens sollte möglichst selbsterklärend und für eine Anzeige geeignet sein.

  • QryINFO für unkritische Abfragen, deren Ergebnisse eher interessehalber verfolgt werden. Das könnten Kunden sein, deren Gesamtumsatz unter 1.000 Euro liegt, oder Seminare, für die acht Wochen vor Beginn noch keine drei Teilnehmer angemeldet sind.

  • QryMLDG für bedenkliche Abfragen, die sich in der Nähe von Grenzwerten bewegen. Das wären Kunden mit einem Saldo unter 100 Euro oder weniger als drei Teilnehmer für Seminare, die schon in drei Wochen beginnen.

  • qrySTOP für die Abfragen mit überschrittenen Grenzwerten. Dazu zählen Kunden mit negativem Saldo oder fast leere Seminare, die nächste Woche starten sollen.

Beispielabfragen in der Nordwind-DB

Da die eigentlichen Inhalte beliebig sind, können Sie beispielsweise in der Nordwind-Datenbank ein paar Abfragen erstellen wie in den Listings 1 bis 3.

Natürlich wollen Sie nicht jede Abfrage einzeln starten und sich das jeweilige Ergebnis merken.

SELECT Kunden.*, Bestellungen.[Kunden-Code]
FROM Kunden LEFT JOIN
Bestellungen ON Kunden.[Kunden-Code] = Bestellungen.[Kunden-Code]
WHERE (((Bestellungen.[Kunden-Code]) Is Null));

SELECT Kunden.[Kunden-Code],
Count(Bestellungen.[Kunden-Code]) AS [AnzahlvonKunden-Code]
FROM Kunden INNER JOIN
Bestellungen ON Kunden.[Kunden-Code] = Bestellungen.[Kunden-Code]
GROUP BY Kunden.[Kunden-Code]
HAVING (((Count(Bestellungen.[Kunden-Code]))<5));

SELECT Kunden.[Kunden-Code],
Count(Bestellungen.[Kunden-Code]) AS [AnzahlvonKunden-Code]
FROM Kunden INNER JOIN
Bestellungen ON Kunden.[Kunden-Code] = Bestellungen.[Kunden-Code]
GROUP BY Kunden.[Kunden-Code]
HAVING (((Count(Bestellungen.[Kunden-Code]))>=5 And
(Count(Bestellungen.[Kunden-Code]))<10));

Abfrageergebnisse zusammenfassen

Alternativ lassen sich alle diese Abfragen in einer Union-Abfrage zusammenfassen, wie es Listing 4 zeigt. Das lässt sich sogar für VBA-Funktionen erweitern, wie Sie später noch sehen werden. Allerdings erfüllt eine Union-Abfrage bestimmt nicht die Anforderungen an die einfache Erweiterbarkeit durch den Benutzer. Neue Abfragen können dort zwar im Grunde durch einfaches Kopieren angehängt werden, es gibt aber nicht die gewohnte grafische Unterstützung durch die Entwurfsansicht.

Bild 1: Ergebnisse der Union-Abfrage aus Listing 4.
Bild 1: Ergebnisse der Union-Abfrage aus Listing 4.

SELECT "qrySTOPKunden ohne Bestellungen" As xName,
Count(*) AS AnzahlvonFirma
FROM [qrySTOPKunden ohne Bestellungen]
UNION
SELECT "qryMLDGKunden mit weniger als 5 Bestellungen" As xName,
Count(*) AS AnzahlvonFirma
FROM [qryMLDGKunden mit weniger als 5 Bestellungen]
UNION
SELECT "qryINFOKunden mit 5-10 Bestellungen" As xName,
Count(*) AS AnzahlvonFirma
FROM [qryINFOKunden mit 5-10 Bestellungen];