Wird eine Eingabemaske zur Erstellung neuer oder zur Bearbeitung vorhandener Datensätze zur Verfügung gestellt,
so ermöglicht das sd:ro-value - Element die Festlegung eines schreibgeschützten Wertes (read-only) für eine einzelne Zelle
oder die unveränderte Übernahme des alten, bereits gespeicherten Wertes, falls ein Datensatz editiert wird. In diesem Fall
muß das
sd:for
-Attribut mit dem Namen eines
sd:input-table
-Elements belegt werden,
sd:col
benennt eine Spalte der zugeordneten Tabelle.
Eine zweite Nutzung besteht darin, dem
sd:for
-Attribut den Namen eines
sd:rs
-Elements zuzuweisen.
Jede Suche, welche das
sd:rs
-Element neu füllt, wird mit den Werten des sd:ro-value-Elements ergänzt ausgeführt.
Damit kann bsp. sichergestellt werden, daß nur die zu einem Hauptdatensatz passenden Detailzeilen ausgegeben werden.
Das
sd:std-value
-Attribut kann mit dem Wert eines passenden Datentyps belegt werden, dieser wird nach der
Erstellung oder Bearbeitung eines Datensatzes direkt übernommen. Oder das Attribut erhält den Spaltennamen als Wert, also
denselben Wert wie das
sd:col
-Attribut. In diesem Fall wird beim Editieren einer Zeile der alte, bereits
in der Datenbank gespeicherte Wert unverändert übernommen. Schließlich kann mit dem
sd:new-value
-Attribut
ein Wert festgelegt werden, welcher der Zelle dann zugewiesen wird, falls ein neuer Datensatz erstellt wird.
Eine weitere Belegung für sd:new-value / sd:std-value besteht darin, '$' und einen Namen zu nutzen. Existiert für diesen
Namen aufgrund einer früheren Speicherung einer Zeile unter Verwendung des
sd:cached-id
-Attributes
oder aufgrund des Seitenaufrufs mit dem Namen eines
sd:param
-Elements mit gesetztem
sd:cached-name
-Attribut ein für diesen Nutzer gecachter Wert, so wird dieser Wert eingesetzt.
Werden sd:new-value / sd:std-value mit '%' und einen Namen belegt, so wird der Wert eines gleichnamigen
sd:param
-Elements eingesetzt.
Diese Technik stellt bsp. eine Warenkorb-Funktionalität bereit: Die erste Aktion eines Nutzers speichert eine Bestell-Zeile und
cacht die Id. Die folgenden Speicherungen erzeugen Datensätze in Detailtabellen zu dieser Bestellung und erhalten die Id des
Hauptdatensatzes über das sd:ro-value - Element.
Eine zweite Nutzung besteht darin, eine Ausgabeseite mit dem Namen eines
sd:param
-Elements und der ID eines
Hauptdatensatzes aufzurufen, so daß dieser Wert ausgelesen und gecacht wird. Damit läßt sich sicherstellen, daß nur die zu
diesem Hauptdatensatz gehörenden Detaildatensätze angezeigt werden.
Die dritte Verwendung dieses Elements besteht darin, bei einer Tabelle eine Spalte 'Editierstatus' nicht auszugeben und
sie für neue Datensätze bsp. mit sd:new-value='1' vorzubelegen. Damit kann mit einer einfachen Suche innerhalb der internen
Bearbeitung ermittelt werden, welche Datensätze neu hinzugefügt wurden. Eine interne Bearbeitung setzt den Wert bsp. auf '2'
(= freigegeben) oder auf 4 (= gesperrt). Wird ein Datensatz erneut auf einer Ausgabeseite editiert, so sichert die
Zuweisung <sd:std-value='Editierstatus'>, daß der Wert dieser Spalte unverändert bleibt. Zugehörige Ausgaben nutzen
ein sd:ro-value - Element mit sd:std-value='2', so daß Leser nur die freigegebenen Zeilen sehen.
Der Wert des
sd:missing-value
-Attributs wird verwendet, falls nach allen vorherigen Prüfungen
noch kein Wert ermittelt werden konnte. Das Attribut sollte immer dann genutzt werden, falls eine Nichtbelegung zu
fehlerhaften Speicherungen oder zu Informationslecks führen könnte. So läßt sich das Speichern eines ansonsten unsinnigen
Detaildatensatzes vermeiden, falls für die Relationenspalte der Wert -1 über das
sd:missing-value
-Attribut
gesetzt wird. Ebenso erzeugt der Wert -1 für eine Relationenspalte leere Suchergebnisse.
Das sd:ro-value - Element ist als Hauptelement definiert. Es kann damit innerhalb seines
sd:input-table
-Elements
genutzt werden, ebenso können jedoch mehrere dieser Elemente am Beginn des body-Abschnitts gesammelt werden.
Beispiel für das Eingabeformular 'table-input': Die Spalte <Editierstatus> erhält den Initialwert 1,
anschließend wird der intern zugewiesene Wert beibehalten. Dieser ist damit nur noch über die internen Masken änderbar.
<sd:ro-value
sd:for='sample-input'
sd:col='Editierstatus'
sd:std-value='Editierstatus'
sd:new-value='1'/>
Beispiel für die Suche: Damit ist sichergestellt, daß nur jene Zeilen ausgegeben werden, die zur Ausgabe freigegeben wurden:
<sd:ro-value sd:for='sample-output'
sd:col='Editierstatus' sd:std-value='2'/>
Beispiel für ein Element, das gegebenenfalls ein leeres Suchergebnis produziert.
<sd:ro-value
sd:for='sample-output'
sd:col='main_TableId'
sd:std-value='$my-internal-param'
sd:missing-value='-1'/>
Falls eine Ausgabeseite eine Bearbeitungsmaske für eine Tabelle enthält, in welcher Spalten fehlen, die für interne
Zwecke benötigt werden, so müssen geeignet viele sd:ro-value-Elemente erstellt werden, die ein Kopieren der intern
eingetragenen Werte erzwingen. Denn ein Browser sendet im Fall eines fehlenden Elements und im Fall eines leeren Feldes
keine Einträge zurück, so daß bei der Verarbeitung der Rückgabedaten nicht mehr zwischen diesen Alternativen unterschieden
werden kann.
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!