Grandchild aus Master Form erstellen
Moin gibt es einen generell WorkFlow, wie ich von Level A Formular ein Level C Eintrag generiere in dem die Verknüpfung von Level B und A automatisch gesetzt werden?
6 Antworten
-
Mal so aus der Hüfte geschossen:
let myA := this;
let myB := LevelB;
let newC := (create LevelC);
newC.(LevelA := myA);
newC.(LevelB := myB);
popupRecord(newC)
-
PS (nach nochmaliger, genauerer Betrachtung): In der Untertabelle LevelB (Reisegruppen?) kann es ja mehrere Einträge geben. Ninox weiß aber nicht, welchem dieser Einträge der neue Datensatz in LevelC (Mitglieder?) zugeordnet werden soll.
Man könnte mit "let myB := first(LevelB)" immer den ersten nehmen, aber damit würde das Problem natürlich nur gelöst, wenn sich in LevelB aus sachlichen Gründen nie mehr als ein Eintrag befindet. Ansonsten muss man doch über den entsprechenden Eintrag in LevelB gehen und dort den neuen Datensatz in LevelC anlegen.
Außerdem müsste für obiges Skript LevelC auch noch mit LevelA verknüpft sein. Was aber wahrscheinlich unnötig ist, da man ja immer über LevelB an LevelA kommt.
-
Die Lösung mit first Level B kam ich auch ... durch das Problem, dass Level B mehrfach existiert. Habe auch das Problem abgefangen, wenn keine Level B das ist, dann muss der User erst eine Gruppe anlegen.
Was ich mir vorstelle ist (mal am Schulbeispiel) .. ich möchte einer Schule Level A einen Schüler Level C einer Klasse Level B zuordnen und das in der Reihenfolge ... Dachte, dass da ein klassisches Stack richtig wäre. Wenn ich den Schüler anlege, muss es wissen, dass er Level A ist. ... Dann zeigt soll des Feld Level B mir alle existierenden Klassen / Gruppen anzeigen. Sollte die Gruppe nicht existieren, einen Datensatz hinzufügen ... bis dahin geht es alles sogar... ausser dass der Schüler dann noch nicht weiss, dass er Level A ist weil er noch nicht Level B zugeordnet ist...
-
Hallo Dan, man kann natürlich von der hierarchisch bedingten Reihenfolge "LevelA/Schule -> LevelB/Klasse -> LevelC/Schüler" abweichen und auch direkt von der Schule aus einen Schüler anlegen, den neuen Datensatz öffnen und diesen dann manuell mit einer Klasse verknüpfen.
Die entscheidende Frage ist halt, ob der Schüler beim Anlegen direkt mit der Schule verknüpft werden soll oder erst indirekt durch die Auswahl der Klasse. Sinnvoller wäre vermutlich ersteres, weil man dann die Klassen schon filtern und nur die zur Auswahl anbieten könnte, die zur betreffenden Schule gehören.
Dazu müsste man LevelA aber zusätzlich direkt 1:N mit LevelC verknüpfen. Der Code für einen entsprechenden Button wäre dann:
let myA := this;
let newC := (create LevelC);
newC.(LevelA := myA);
popupRecord(newC)
Der Filter im 'LevelC'-Formular unter "Einschränkungen" in den Optionen des Verknüpfungsfeldes 'LevelB' könnte dann z. B so aussehen:
b.LevelA = a.LevelA
-
also verabschiede ich mich von dem Gedanken.... ein Stack zu haben ... sondern lasse Level B und Level C als Childs von Level A laufen .... richtig ?
-
Mir ist nicht klar, was genau du mit "Stack" meinst. Nach deinem oben abgebildeten Datenmodel ist 'Level B' Kind von 'Level A', und 'Level C' ist Kind von 'Level B', also quasi Enkel von 'Level A'.
Deine ursprüngliche Frage war ja - Zitat: "[...] wie ich von Level A Formular ein Level C Eintrag generiere in dem die Verknüpfung von Level B und A automatisch gesetzt werden?"
Das geht wie gesagt nicht, weil es für 'Level B' eben mehrere Einträge (Kinder) geben kann. Mit welchem soll der 'Level C'-Eintrag verknüpft werden? Sprich: Wessen Kind ist der Enkel? Soll sich Ninox einen 'Eltern'-Eintrag aussuchen? Nach welchen Kriterien? Zufall? Das ginge natürlich, ist vermutlich aber nicht gewünscht.
Es ist im Grunde also weniger ein Ninox-Problem als ein logisches. Und für mich auch zunehmend abstrakt, weil mir mangels Kontext völlig unklar ist, wo genau nun praktisch der Knackpunkt liegt.
Content aside
- vor 4 JahrenZuletzt aktiv
- 6Antworten
- 965Ansichten