Bedingtes Kopieren von Feldern zwischen Tabellen
Bedingtes Kopieren von Feldern zwischen Tabellen
Hallo!
Ich hab folgendes Problem! Mein Formular enthält zwei Tabellen. In der ersten Tabelle werden Risikoelemente in eine Matrix eingetragen. Sobald ein Element abgearbeitet wurde, wird das Feld Status auf "Geschlossen" gesetzt. Die ersten beiden Elemente sollen dann in die zweite Tabelle übertragen werden.
Um dieses Problem zu lösen, hab ich im Feld Status mit dem EXIT-Event verschiedene if-Anweisungen durchprobiert. Leider immer ohne Erfolg.
Kann mir jemand einen Tipp geben, woran das liegen könnte?
Danke schon mal im Vorraus!
Wolfgang
Ich hab folgendes Problem! Mein Formular enthält zwei Tabellen. In der ersten Tabelle werden Risikoelemente in eine Matrix eingetragen. Sobald ein Element abgearbeitet wurde, wird das Feld Status auf "Geschlossen" gesetzt. Die ersten beiden Elemente sollen dann in die zweite Tabelle übertragen werden.
Um dieses Problem zu lösen, hab ich im Feld Status mit dem EXIT-Event verschiedene if-Anweisungen durchprobiert. Leider immer ohne Erfolg.
Kann mir jemand einen Tipp geben, woran das liegen könnte?
Danke schon mal im Vorraus!
Wolfgang
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Bedingtes Kopieren von Feldern zwischen Tabellen
Hallo Wolfgang,
hier, schau mal...
VG Alex
hier, schau mal...
VG Alex
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Bedingtes Kopieren von Feldern zwischen Tabellen
Hey Alex!
Danke für die Lösung
! Bin noch ein Neuling in Sachen LC Designer und Java-Script!
Für was brauch ich denn hier die "xfa.resolveNode" Anweisung?
VG
Wolfgang
Danke für die Lösung

Für was brauch ich denn hier die "xfa.resolveNode" Anweisung?
VG
Wolfgang
Bedingtes Kopieren von Feldern zwischen Tabellen
Hi Wolfgang,
Die Info dafür findest du, wenn du im LCD auf "F1" drückst. Dort kannst du darüber unter "Skripterstellung"->"Skripterstellung mit LiveCycle Designer"->
"Objekte in Berechnungen und Skripten referenzieren" genauer nachlesen.
Ein Ausschnitt daraus:
VG Alex
Die Info dafür findest du, wenn du im LCD auf "F1" drückst. Dort kannst du darüber unter "Skripterstellung"->"Skripterstellung mit LiveCycle Designer"->
"Objekte in Berechnungen und Skripten referenzieren" genauer nachlesen.
Ein Ausschnitt daraus:
Code: Alles auswählen
xfa.form.form1.#subform.TextField1.rawValue
xfa.form.form1.#subform[0].TextField1.rawValue
FormCalc erkennt die oben angegebene vollständig qualifizierte Referenz-Syntax und wertet sie korrekt aus. Wenn Sie mit JavaScript auf denselben Wert zugreifen möchten, müssen Sie eine der folgenden Varianten der Skriptmethode resolveNode verwenden:
xfa.resolveNode("xfa.form.form1.#subform.TextField1").rawValue;
xfa.resolveNode("xfa.form.form1.#subform[0].TextField1").rawValue;
Bedingtes Kopieren von Feldern zwischen Tabellen
Danke, soweit hab ich das verstanden
!
Leider hab ich aber beim Testen festgestellt, dass meine Vorgehensweise nur bedingt funktioniert. Das Skript wird wohl nur für die erste Zeile ausgeführt, bei jeder neu hinzugekommenen Zeile, deren Status als "Geschlossen" gewählt wird, werden die Felder Abweichung und Ref-Nr nicht übernommen!
Wie sollte man da am elegantesten vorgehen? Mir würde da nur zweidimensionale Arrays einfallen mit 7 Spalten (bis zur Spalte Status) und n Zeilen!

Leider hab ich aber beim Testen festgestellt, dass meine Vorgehensweise nur bedingt funktioniert. Das Skript wird wohl nur für die erste Zeile ausgeführt, bei jeder neu hinzugekommenen Zeile, deren Status als "Geschlossen" gewählt wird, werden die Felder Abweichung und Ref-Nr nicht übernommen!
Wie sollte man da am elegantesten vorgehen? Mir würde da nur zweidimensionale Arrays einfallen mit 7 Spalten (bis zur Spalte Status) und n Zeilen!
Bedingtes Kopieren von Feldern zwischen Tabellen
Hallo Wolfgang,
ich bin mir nicht sicher, dass ich deine Idee ganz verstanden habe. Aber ich habe dein Formular so umgebaut, wie ich es mir vorgestellt hab. Schau mal, vielleicht bringt es dich weiter...
Änderungen die ich vorgenommen habe:
1. Zeile[0] und Zeile[1] auf Kopfzeile[0] und Kopfzeile[1] geändert.
2. gebliebene Zeile als "Ausgeblendet" eingestellt (diese Zeile wird immer kopiert).
3. "exit" Skript noch mal geändert (hier siehst du wie man auf die laufende Zeile und auf die neue Zeile in der unteren Tabelle zugreifen kann).
VG Alex )
ich bin mir nicht sicher, dass ich deine Idee ganz verstanden habe. Aber ich habe dein Formular so umgebaut, wie ich es mir vorgestellt hab. Schau mal, vielleicht bringt es dich weiter...
Änderungen die ich vorgenommen habe:
1. Zeile[0] und Zeile[1] auf Kopfzeile[0] und Kopfzeile[1] geändert.
2. gebliebene Zeile als "Ausgeblendet" eingestellt (diese Zeile wird immer kopiert).
3. "exit" Skript noch mal geändert (hier siehst du wie man auf die laufende Zeile und auf die neue Zeile in der unteren Tabelle zugreifen kann).
VG Alex )
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Bedingtes Kopieren von Feldern zwischen Tabellen
Klasse! Es funktioniert so, wie das wollte! Muss mir aber erstmal den ganzen Ablauf des Scripts ansehen!
Danke nochmal für deine Hilfe
!
Danke nochmal für deine Hilfe

Bedingtes Kopieren von Feldern zwischen Tabellen
Irgendwie funktioniert das Skript zwar, aber verstehen tu ich die einzelnen Befehle nicht so ganz:
[fontsize=2]
this.access [/fontsize][fontsize=2][fontsize=2]=[/fontsize][/fontsize][fontsize=2] "readOnly";[/fontsize]
[fontsize=2]Warum brauch ich hier die "readOnly" Anweisung?[/fontsize][fontsize=2]
[line]
[/fontsize][fontsize=2][fontsize=2]var[/fontsize][/fontsize][fontsize=2] newZeile [/fontsize][fontsize=2][fontsize=2]=[/fontsize][/fontsize][fontsize=2] xfa.resolveNode("Formular1.Seite2.TF3.Tabelle4.Zeile1[0]").instanceManager.addInstance(0);[/fontsize]
[fontsize=2][/fontsize][fontsize=2]Welche(r) Wert(e) werden an die Variable newZeile übergeben?
[line]
[/fontsize][fontsize=2][fontsize=2]var[/fontsize][/fontsize][fontsize=2] zIndex [/fontsize][fontsize=2][fontsize=2]=[/fontsize][/fontsize][fontsize=2] newZeile.index;[/fontsize]
[fontsize=2]Was bewirkt die Methode index?[/fontsize][fontsize=2]
[line]
[/fontsize]
[fontsize=2][fontsize=2]
[/fontsize][/fontsize]
[fontsize=2]
this.access [/fontsize][fontsize=2][fontsize=2]=[/fontsize][/fontsize][fontsize=2] "readOnly";[/fontsize]
[fontsize=2]Warum brauch ich hier die "readOnly" Anweisung?[/fontsize][fontsize=2]
[line]
[/fontsize][fontsize=2][fontsize=2]var[/fontsize][/fontsize][fontsize=2] newZeile [/fontsize][fontsize=2][fontsize=2]=[/fontsize][/fontsize][fontsize=2] xfa.resolveNode("Formular1.Seite2.TF3.Tabelle4.Zeile1[0]").instanceManager.addInstance(0);[/fontsize]
[fontsize=2][/fontsize][fontsize=2]Welche(r) Wert(e) werden an die Variable newZeile übergeben?
[line]
[/fontsize][fontsize=2][fontsize=2]var[/fontsize][/fontsize][fontsize=2] zIndex [/fontsize][fontsize=2][fontsize=2]=[/fontsize][/fontsize][fontsize=2] newZeile.index;[/fontsize]
[fontsize=2]Was bewirkt die Methode index?[/fontsize][fontsize=2]
[line]
[/fontsize]
[fontsize=2][fontsize=2]
[/fontsize][/fontsize]
Bedingtes Kopieren von Feldern zwischen Tabellen
Hallo Wolfgang,
ich war leider letzte Woche sehr beschäftigt bei der Arbeit und habe den Forum nicht angeschaut...
Dadurch kann man den Feld "Status" nicht mehr ändern. Da in dem Formular kein Skript für das Löschen von den Zeilen noch existiert, wird immer eine neue Zeile in die untere Tabelle geschrieben, wenn man den Status wieder editiert. Dadurch werden mehrere Zeilen für eine Aufgabe in die untere Tabelle geschrieben.
Hier wird eine neue Zeile erstellt und das Objekt an die Variable newZeile übergeben. Jetzt kann man mit dieser Variable auf diese Zeile direkt zugreifen.
Index ist ein Nummer einer Instance. Davor wird eine neue Zeile erstellt. Dadurch hast du schon zwei Objekte von "Zeile1" - Zeile1[0] und Zeile1[1]. Wenn man den Index in die Anweisung [fontsize=2]xfa.resolveNode("Formular1.Seite2.TF3.Tabelle4.Zeile1[" + index + "]") rein steckt, kann man auf die entsprechende Zeile greifen.
VG Alex
[/fontsize]
ich war leider letzte Woche sehr beschäftigt bei der Arbeit und habe den Forum nicht angeschaut...
Code: Alles auswählen
this.access = "readOnly";
Code: Alles auswählen
var newZeile = xfa.resolveNode("Formular1.Seite2.TF3.Tabelle4.Zeile1[0]").instanceManager.addInstance(0);
Code: Alles auswählen
var zIndex = newZeile.index;
VG Alex
[/fontsize]
Bedingtes Kopieren von Feldern zwischen Tabellen
KorvinOE hat geschrieben:Hallo Wolfgang,
ich war leider letzte Woche sehr beschäftigt bei der Arbeit und habe den Forum nicht angeschaut...
Dadurch kann man den Feld "Status" nicht mehr ändern. Da in dem Formular kein Skript für das Löschen von den Zeilen noch existiert, wird immer eine neue Zeile in die untere Tabelle geschrieben, wenn man den Status wieder editiert. Dadurch werden mehrere Zeilen für eine Aufgabe in die untere Tabelle geschrieben.Code: Alles auswählen
this.access = "readOnly";
Hab ich verstanden. Ist ja eigentlich auch logisch!Hier wird eine neue Zeile erstellt und das Objekt an die Variable newZeile übergeben. Jetzt kann man mit dieser Variable auf diese Zeile direkt zugreifen.Code: Alles auswählen
var newZeile = xfa.resolveNode("Formular1.Seite2.TF3.Tabelle4.Zeile1[0]").instanceManager.addInstance(0);
Wird die Variable newZeile jedes mal neu erstellt oder nur überschrieben? Welchen beispielhaften Wert hat die Variable newZeile? Ist das die genaue Bezeichnung des Knotens, also der neuen Zeile?Index ist ein Nummer einer Instance. Davor wird eine neue Zeile erstellt. Dadurch hast du schon zwei Objekte von "Zeile1" - Zeile1[0] und Zeile1[1]. Wenn man den Index in die Anweisung [fontsize=2]xfa.resolveNode("Formular1.Seite2.TF3.Tabelle4.Zeile1[" + index + "]") rein steckt, kann man auf die entsprechende Zeile greifen.Code: Alles auswählen
var zIndex = newZeile.index;
Den letzten Schritt deiner Ausführung hab ich auch verstanden! Ich versteh nur nicht, wie aus der Variable newZeile in Verbindung mit der Methode index der Laufindex zIndex (von 0 bis x) entsteht!
VG Alex
[/fontsize]