Bedingungs-Abfrage | ||
Auch Laborchefs altern, der Chef kann sich nicht mehr alles merken. Es wird wohl doch nötig, eine Buchführung über Reparaturen anzulegen. Immerhin gehören dazu auch Verpflichtungen, wie TÜV-Termine, deren Nichtbeachtung schlimme Folgen haben kann. Man stelle sich vor, ein Dienstwagen schlucke nach und nach das Vielfache seines Wertes an Reparaturkosten und keiner merkt es!
Also steht Erweiterung der Datenbank an, diesmal um eine Tabelle zu den Reparaturaufträgen.
Was muß drin stehn?
Außer Selbstverständlichkeiten wie Datum, Kosten, Grund vor allem auch die GNum (Gerätenummer), und die SNum (Service-Betriebsnummer). Nummer des Betriebes, der es gemacht hat und an den die Rechnung bezahlt wird.
Erfahrenen Access-Programmierern, wie Ihnen, muß ich nicht sagen, wie das so geht. Bitte nicht vergessen, wieder einige Datensätze vorzusehen, damit es später weiter geht.
Diese Tabelle ist bei näherem Hinsehen gleich in zweifacher Hinsicht problematisch:
1. Bauen wir nicht einen logischen Fehler ein, wenn wir in dieser Tabelle eine Verknüpfung von GNum und SNum vornehmen, die es doch in der Gerätetabelle schon einmal gab? Müssen die Kombinationen beider Zahlen in beiden Tabellen nicht zwangsläufig übereinstimmen? Wozu soll sie dann hier erneut niedergelegt werden? Könnte, nein müßte man nicht eine der Kombinationen sparen?
Nö, geht nicht.
Warum? Ganz einfach: In der Geräteliste steht, wer zur Reparatur angeheuert werden soll. Aber was, wenn der gerade Urlaub hat? Man wählt, nach einigen Telefonaten, ersatzweise eine andere Firma. Die Auftragsliste dient später dazu, die Begleichung der Rechnungen zu verwalten, die Rechnung wird an den Betrieb gezahlt, der die Arbeit gemacht hat.
Ist doch klar?
2. Um die Tabelle zu begucken (zum Beschreiben kommen wir später), müssen die Nummern in Klartext übersetzt werden. Das sind hier also Gerätenamen und Servicebetriebe. Dazu wird eine Abfrage gebraucht. Packen wir's an!
Wie es geht, ist ja schon klar. " Neu"e Abfrage, alle nunmehr drei Tabellen einfügen und was wir sehen, ist nach dem "Entwirren" der Verbindungen unter Umständen dies (Die Umstände sind: Ob sich der Zirkel ausbildet, hängt von der Reihenfolge der Aufnahme der Tabellen ab):

Wir haben oben schon diskutiert, daß die Servicenummern SNum in den Tabellen der Geräte und der Reparaturen nicht übereinstimmen müssen. Der "Zirkel", den Access hier aufgrund der Nummernbezeichnungen findet, wird bei Fortsetzung der Arbeit zu Problemen führen.
Man muß hier die nicht zutreffende Beziehung zwischen Geräte- und Service-Tabelle löschen. (Mit rechter Maustaste auf die fehlerhafte Verbindung etc.) Nach Korrektur der Auswahlbeziehungen und Umsortierung sieht die Sache anders aus:

Die Einträge der neuen Tabelle setzen sich so zusammen: " Datum" und " Auftragswert" aus der Reparaturliste, die Einträge " Name" und " Firma" aus den beiden anderen Tabellen.
Weil wir schon alte Füchse sind, tragen wir gleich noch einige weitere Optionen ein.
Ergänzung 1:
Wann immer wir eine Reparaturübersicht ansehen wollen, sollte sie schön geordnet, zweckmäßig nach dem Datum, erscheinen. Deshalb die Auswahl von "Aufsteigend" im Feld "Sortierung".
Ergänzung 2:
Natürlich sollen nicht immer alle Reparaturen aller Zeiten angezeigt werden. Jetzt braucht man eine Bedingung. Dazu gleich mehr.
Ergänzung 3:
Im Bild ist, bitte auch hier aufpassen, das Fenster zur Vergabe eines Namens der Abfrage mit angezeigt. Wir nennen sie diesmal, wie zu sehen, "Reparaturübersicht".
Hier sind wir bei einem der Knackpunkte von Access. Der Sinn einer Datenbank besteht nicht darin, Daten zu horten, sondern sie zu selektieren.
Und wie macht man das?
Dazu hat Access viele ausgebuffte Möglichkeiten. Zugleich sollen Abfragen so umgangssprachlich wie möglich möglich sein. Wir fangen ganz einfach an. Man erkennt im Bild einen Eintrag in der Zeile " Kriterien". Es genügt, dort einzutragen: " >1.1.2000" (ohne Anführungsstriche) oder auch ein geeigneteres Datum. Der Sinn ist klar, alle Termine sollen angezeigt werden, die später liegen, als der angegebene Datumswert.
(Intelligenztest: Wie müßte man schreiben, damit alle Daten vor einem Stichtag angezeigt werden?)
Die Rautenzeichen, die im Bild zusätzlich erkennbar sind, sind von Access bei der Überprüfung des Datumswertes eingefügt worden.
Diese Eintragung könnte auch anders lauten. Erlaubt wäre auch: " Zwischen 1.1.1998 und 31.12.1998".
Wie lernt man mehr über solche Kriterien? Man guckt einfach nach; übrigens, die besten Tipps verbergen sich hinter "Siehe auch..."!

So einfach ist es nicht. Zwar kommt Access dem Nutzer sehr entgegen; man muß aber daran erinnern, daß für Abfragen SQL (Structured Query Language) benutzt wird. Wie es hier in unserem Falle aussieht, lehrt wieder die SQL-Ansicht:

Wer hier etwas lernen will, lernt, daß SQL die Datumsangabe in der für uns ungewöhnlichen Reihenfolge Monat, Tag, Jahr speichert: #12/31/1998#.