Search the FirstSpirit Knowledge Base
Hallo,
da wir mehrere Sichten auf eine Datentabelle haben, gibt es in jeder Tabellenvorlage ein "hidden"-Feld, in welchem ein Status geschrieben wird.
<CMS_INPUT_TEXT name="cs_bflag" hidden="yes" preset="copy" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="BFlag"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
Für dieses Feld habe ich bei der Tabellendefinition einen Wert hinterlegt.
Wenn ein neuer Datensatz angelegt wird, wird der vorbelegte Wert richtig gesetzt.
Nun gibt es eine Möglichkeit, dass in dem Statusfeld bereits ein Wert drin steht. (z.B. "A"). Wenn ich nun in einer Datensicht den Datensatz ändere, wird das "A" nicht überschrieben, obwohl in der Tabellendefinition für dieses Feld ein "B" eingegeben wurde.
Ich bilde mir ein, dass das vor dem Update auf 4.1.51.37961 funktionierte. Hat sich da was geändert?
Andreas Vogt schrieb:
Hmm, funktioniert bei mir auch nicht.
noch mal zum nachvollziehen:
Warum welcher Wert in der Spalte steht, das würde noch zusätzlich verwirren ... (hängt einfach mit unseren Abläufen zusammen)
- Unter Sicht 1 wird ein Datensatz angelegt, gespeichert (nun steht in der Spalte ein "D" - dies wird über den vorgabewert in der Vorlage geholt)
- der Datensatz wird freigegeben (Nun steht in der Spalte ein "R" - passiert durch ein Script während der Freigabe)
- der Datensatz wird in Sicht 2 bearbeit und gespeichert. Nun sollte der Wert "A" (Vorgabewert aus der Tabellenvorlage) in der Spalte stehen, tut er aber nicht.
eingesetzte Version 4.1.51.37961
ich teste hier zwar mit der Version 4.2.219, aber das sollte eigentlich keien Rolle spielen.
Das Problem ist, dass in dem Feld etwas drin Steht (Hier "R"). Der Vorgabewert wird nur geschrieben, wenn der Datensatz neu geschrieben wird [es also irgendeine Änderung an einer beliebigen Eingabekomponente gab] und das Feld leer ist. [Es kann sein, das es in der Version 4.1 NULL sein muss, aber das glaube ich nicht.]
Dadurch, dass das Feld mit "R" gefüllt ist, wird der Vorgabewert nicht geschrieben. Das Skript müsste nach/bei der Freigabe als "" in das Feld schreiben, nicht "R"
Das wurde oben ja eigentlich schon herausgefunden. Das "" funktioniert leider nicht.
Ich versuchs mal zu erklären warum:
Wir haben "Regelungen", die neu erstellt, gleöscht, geändert werden können. Zwischen den "Regelungen" können Links gesetzt werden. Nun gibt es noch eine Möglichkeit eine "Regelung" zu reservieren (um z.B. schon Links zu setzen). Daher das Merkmal "R". Einer reservierten Regelung kann nur "neu erstellt" werden (also nicht geändert, gelöscht ...). Eine reservierte Regelung wird auch anders veröffentlicht. Da wird ein Standardtext ausgegeben ("... befindet sich in Erstellung ...").
Über das Merkmal kann ich bei den Datenquellen einfach einen Filter setzen. So werden die "Reservierten Regelungen" nur bei "neu erstellen" angezeigt.
Regelungen mit dem Wert Null werden in allen Datenquellensichten angezeigt.
Sicher könnte ich auch ein anderes Merkmal in den filter einbeziehen, ich fand es aber einfacher immer nur ein merkmal zu verwenden, an dem eindeutig zu sehen ist, was der Datensatz für einen "Status" hat. (bei mehr infos: das Projekt "SFO" sollte bei Ihnen z.T. vorliegen - Ansprechpartner war Herr Thal).
Bei Datenbanken ist ein NULL-Wert die einzige Möglichkeit, einen Wert in einer Textspalte als nicht gesetzt zu identifizieren. Über ein Skript kann man diesen natürlich zurücksetzen (z. B. über den entsprechenden EditorValue mittels clear()). Beim Speichern wird dann wieder NULL geschrieben. Das wird in dem gewünschten Szenario aber wohl nicht passen ...
Wieviele Zustände werden denn in dem Feld gespeichert? Eventuell bietet sich ja an, die Zustände in einzelnen Eingabekomponenten zu speichern (z. B. per CMS_INPUT_TOGGLE). Wenn ich das richtig verstanden habe, werden für die einzelnen Schritte unterschiedliche Eingabemasken verwendet, was ein maskenbasiertes Schalten verschiedener Komponenten ja ermöglicht.
Insgesammt haben wir 6 unterschiedliche Sichten.
Wie ich oben beschrieben habe gibt es nur eine Sicht, wo der Wert nach der Freigabe nicht zurückgesetzt wird (Schritt "reservieren" - hier darf nur "neu erstellen folgen"), bei allen anderen Sichten wird er schon auf "null" gesetzt.
Ich werde wohl um ein weiteres Feld nicht herumkommen. da bietet sich dann ein TOGGLE an (ist aber wieder ein feld mehr ...)