Parameter und Bindungen
Eine Abfrage, die immer dieselben vier Wochen liest, taugt für ein Dashboard nicht. Werte, die von außen hereinkommen — ein Zeitraum, eine Linie, eine Fehlerart — stehen deshalb nicht im Abfragetext, sondern als Parameter.
$1 bis $n, und ihre Namen
Abschnitt betitelt „$1 bis $n, und ihre Namen“Im Abfragetext steht ein Parameter an seiner Position: $1, $2, $3. Einen Namen
bekommt er daneben, in der Parameterliste des Tags. Beides zusammen, weil die Position sagt, wo
der Wert eingesetzt wird, und der Name sagt, wer ihn füllt.
Die Liste folgt dem Text. Schreiben Sie in eine laufende Abfrage ein $4, entsteht ein vierter
Parameter mit dem vorläufigen Namen param4. Schon vergebene Namen bleiben, wie sie sind — eine
Umbenennung würde die Bindung zerreißen, die den Parameter füttert.
Werte werden nie in den Abfragetext geschrieben. Sie gehen als echte Bindeparameter an die Datenbank. Das ist die Grenze, an der eine Eingabe aus einem Widget aufhört, Text zu sein.
Gebunden wird an ein anderes Tag
Abschnitt betitelt „Gebunden wird an ein anderes Tag“Im Reiter Bindungen am Abfrage-Tag verbinden Sie jeden Parameter mit einem anderen Tag. Zur Laufzeit wird der Wert dieses Tags eingesetzt. Gespeichert wird die Bindung über die unveränderliche Kennung des Quell-Tags: Wird die Quelle umbenannt, hält die Bindung.
Ein ungebundener Parameter bleibt leer. Was er trifft, hängt davon ab, wie die Abfrage ihn verwendet.
from und to
Abschnitt betitelt „from und to“Legt der Baukasten einen Zeitraum an, heißen die beiden Parameter from und to — und
zwar genau so. Der Zeitraumfilter eines Boards füllt Parameter über ihren Namen; eine
Abfrage, deren Zeitparameter anders heißen, erreicht der Datumswähler nicht.
Der Baukasten schreibt den Zeitraum so:
($1::timestamptz IS NULL OR "ProductionReport.Timestamp" >= $1::timestamptz)AND ($2::timestamptz IS NULL OR "ProductionReport.Timestamp" < $2::timestamptz)Zwei Eigenschaften davon werden im Betrieb gebraucht:
- Leer heißt offen. Ein nicht gefülltes
tobedeutet „kein oberes Ende”, nicht „nichts passt”. Deshalb dieIS NULL-Hälfte. - Halboffenes Intervall. Untere Grenze eingeschlossen, obere ausgeschlossen. Zwei aneinander anschließende Zeiträume überlappen so weder, noch fällt eine Zeile zwischen sie.
Wer die Parameter füllt, steht am Zeitraum als Satz: Sind from und to an Tags gebunden,
nennt der Hinweis diese Tags beim Namen. Sind sie es nicht, sagt er, dass sie noch von nichts
gefüllt werden. Üblich sind Memory-Tags wie Plant.Filter.From und Plant.Filter.To, in die
die Filter-Widgets des Boards schreiben.
Wie weit ein Wert reicht
Abschnitt betitelt „Wie weit ein Wert reicht“Die Reichweite eines Abfrage-Tags leitet sich aus seinen Bindungen ab. Hängt ein Parameter an einem Tag, das je Benutzer oder je Ansicht einen eigenen Wert hat, gilt das Ergebnis ebenso weit — und nicht für den ganzen Mandanten. Ohne eine solche Bindung ist die Zahl für alle dieselbe.
Beim Probelauf
Abschnitt betitelt „Beim Probelauf“Der Probelauf hat für jeden deklarierten Parameter ein Eingabefeld. Ein leeres Feld geht als
NULL hinein, nicht als leerer Text. Das ist derselbe Unterschied wie oben: ein offenes Ende
gegenüber einem Wert, auf den nichts passt.