Mit "Case" ein einfaches Auswahlfeld ändern
Liebe Community,
ich befinde mich in einer Tabelle "X", hier existiert eine dynamische Auswahl. Die dynamische Auswahl zieht sozusagen die Texte in Tabelle X. (Transfer 1)
switch number('Mobilität') do
case text(myID.'Transfer 1') = "Selbstständig":
1
case text(myID.'Transfer 1') = "Unter Anleitung":
2
case text(myID.'Transfer 1') = "Überwiegend selbstständig":
3
case text(myID.'Transfer 1') = "Überwiegend unselbstständig":
4
case text(myID.'Transfer 1') = "Unselbstständig":
5
default:
null
end
Es soll in Tabelle Y ein Datensatz erstellt werden, dort existiert unter anderem das einfache Auswahlfeld "Mobilität". Einfach formuliert, wenn ich in Tabelle X "Selbstständig" auswähle und der Text somit in "Transfer 1" übertragen wird, soll er in der anderen Tabelle Auswahl 1 wählen, was dort ebenfalls für "Selbstständig" steht. Was habe ich bei meinem Code falsch gemacht, es funktioniert nämlich leider nicht.
(Es war leider nicht gewünscht, dass man sich auch in Tabelle Y auf die gleichen Werte wie in X bezieht. Man muss demnach sozusagen aus dem Text der dyn. Auswahl das Auswahlfeld bestimmen)
Ich freue mich auf Eure Hinweise. :)
9 Antworten
-
Hallo Felix, die eigentliche Aufgabenstellung habe ich so auf die Schnelle nicht verstanden, aber deine switch-Konstruktion ergibt für mich so keinen Sinn. In der ersten Zeile gibst du beim "switch" number('Mobilität') als auszuwertendes Feld an, fragst im "case" dann aber einen ganz anderen Wert ab (text(myID.'Transfer 1')). Das heißt, der Wert von number('Mobilität') wird gar nicht ausgewertet.
Die "case"-Abfragen beziehen sich immer auf den Wert des Feldes (oder der Variable), das im "switch" adressiert wurde. Wenn das Auswahlfeld 'Mobilität' bspw. die Optionen A (1), B (2) und C (3) hat, dann kann man im "case" auch nur auf "A", "B" oder "C" bzw. 1, 2 oder 3 abfragen.
Will man hingegen den Wert aus text(myID.'Transfer 1') abfragen, sähe das für sich genommen so aus:
switch text(myID.'Transfer 1') do case "Selbstständig": 1 case "Unter Anleitung": 2 case "Überwiegend selbstständig": 3 case "Überwiegend unselbstständig": 4 case "Unselbstständig": 5 default: null end
"switch ... case" ist also ein Hilfskonstrukt, mit dem sich ein Feld/eine Variable effizient auf unterschiedliche vorgegebene Werte abfragen lässt, ohne komplizierte "if ... then ... else"-Verschachtelungen aufbauen zu müssen. Wobei sich die verschiedenen Abfrage- bzw. Verzweigungs-Möglichkeiten bei Bedarf auch kombinieren lassen, um komplexere Abfragen zu formulieren.
Siehe auch Doku:
https://docs.ninox.com/de/skripten/einfuehrung-in-ninox-skript/verzweigung-festlegen/mehrfachverzweigung-festlegen -
Hallo Axel, vielen lieben Dank für Deine Antwort. Ich kopiere einfach mal den vollständigen Part und gehe etwas mehr ins Detail, eine Sache ist mir nämlich noch nicht ganz klar.
if number(myID.Personenanzahl) = 1 then let crePatient := (create Patienten); crePatient.( Anrede := myID.'Anrede 1'; Titel := myID.'Titel 1'; Vorname := myID.'Vorname 1'; Nachname := myID.'Nachname 1'; Patientenakte := creAkte; switch number('Mobilität') do case text(myID.'Transfer 1') = "Selbstständig": 1 case text(myID.'Transfer 1') = "Unter Anleitung": 2 case text(myID.'Transfer 1') = "Überwiegend selbstständig": 3 case text(myID.'Transfer 1') = "Überwiegend unselbstständig": 4 case text(myID.'Transfer 1') = "Unselbstständig": 5 default: null end )
Es gibt die Tabelle "Vertrieb", hier greift man auf die dyn. Auswahlfelder zu, wodurch sich ein Textfeld generiert z.B. 'Transfer 1' = "Selbstständig".
Der Code oben befindet sich in einem Button. Klicke ich den Button wird ein "Patient" erstellt. In diesem Patienten liegt ein einfaches Auswahlfeld namens 'Mobilität'. Kurz gesagt geht es um eine Art autofill einiger Felder, welche man bereits kennt.
Um bei dem Beispiel zu bleiben, "Selbstständig" in Vertrieb soll im Patienten für 'Mobilität' = 1 sorgen.
(1 = "Selbstständig)
Irgendwo müsste man die Auswahl 'Mobilität' einbauen oder?
-
hat leider nicht funktioniert, ich habe auch mal parallel getestet, ob es am Auslesen des dyn. Feldes liegt. Ich habe hier nämlich eine falsche Info gegeben, die dyn. Auswahl erzeugt nämlich kein Text im separaten Textfeld, sondern man liest das dyn. Auswahlfeld selbst aus, der Hinweis nur vorab, sorry! Mit einem normalen Textfeld ("Unselbstständig") hat es jedoch ebenfalls nicht funktioniert.
Ich füge mal ein Bild an, um den Prozess zu verdeutlichen.
-
Es kam leider die folgende Meldung, ich habe ein bisschen herumgespielt, konnte es jedoch nicht beheben.
Bezüglich Deines Vorschlags bin ich absolut bei Dir, ich wollte diese Änderung an jeder notwendigen Stelle vornehmen, um die Grundstruktur sauberer zu gestalten. War leider nicht erwünscht.
-
said:
War leider nicht erwünscht.Die Einträge aus einem dynamischen Auswahlfeld abfragen und in ein statisches Auswahlfeld übertragen zu wollen, ist m. E kontraproduktiv. Dynamische Auswahlfelder nimmt man ja gerade, wenn man die Auswahl mehrfach benötigt und/oder wenn man flexibel bleiben und sich die Möglichkeit offen halten will, die Auswahl-Einträge mal ändern bzw. erweitern zu können. In einem solchen Fall müsste man aber immer auch die Abfragen und die Einträge des statischen Auswahlfeldes ändern, was einen enormen Aufwand bedeuten und eine unnötige Fehlerquelle darstellen würde. Und das ist doch mit Sicherheit noch weniger erwünscht.
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 9Antworten
- 101Ansichten
-
2
Folge bereits