JSL: Starten Sie den Plattformdialog für Benutzereingaben und ändern Sie den BerichtWenn ich meinen Kopf gegen die Wand stoße, muss es einen einfachen Weg geben, aber ich bin ratlos.
Hier ist mein gewünschtes Szenario:
1) Das Ausführen des Skripts sollte den Startdialog der "Distribution" -Plattform aufrufen, damit der Benutzer eine Auswahl treffen kann
2) Wenn Sie auf OK klicken, kehren Sie zu dem resultierenden Bericht ein Handle zurück, damit dieser angesprochen und geändert werden kann.
Ich kann das gleiche Ergebnis mühsam erzielen, indem ich ein benutzerdefiniertes modales Dialogfeld erstelle, die Ergebnisse analysiere und an die Distributionsplattform weitergebe. Ich möchte jedoch, dass der Benutzer den regulären Startdialog für Distribution ausführen kann.
Irgendwelche Ideen?
Betreff: JSL: Plattformdialog für Benutzereingaben starten, dann Bericht ändernJordan,
Hier ist ein Beispiel aus dem Scripting Anleitung mit Aktion ().
Oder wird das so sein? Tun Sie, was Sie wollen ?
Stan
Betreff: JSL: Plattformdialog für Benutzereingaben starten, dann Bericht ändernHallo Jordan,
Führen Sie dies aus und scrollen Sie zum Ende des Berichts, um zu sehen, ob dies Ihren Wünschen entspricht:
Names Default To Here(1);
dt = astable(J(20,1,Random Uniform()));
grabHandle = expr(
distHandle = current report();
doTheRest
);
dt << distribution(action(grabHandle));
doTheRest = expr(
for(i=1, i<=3, i++, distHandle[outlinebox(1)] << append(textbox("Yay!")))
);
Beachten Sie, dass "doTheRest" ein Ausdruck ist, der von grabHandle aufgerufen wird und erst ausgeführt wird, wenn der Benutzer auf die Schaltfläche OK klickt. Andernfalls versuchen die drei Anhänge, sofort ausgeführt zu werden. Dies führt zu einem Fehler, da distHandle undefiniert ist, da der Verteilungsbericht noch nicht erstellt wurde. Sie möchten also, dass alles, was vom Verteilungsbericht abhängt, in einen Ausdruck eingeschlossen wird, der in dem Ausdruck aufgerufen wird, der das Argument der Action () - Funktion ist.
Vielen Dank @stan_koprowski , um die Action () - Funktion zu erwähnen ... Ich wusste nichts von seiner Existenz.
Prost,
Brady
Betreff: JSL: Plattformdialog für Benutzereingaben starten, dann Bericht ändernVielen Dank @brady_brady das ist genau das, was ich brauchte. Die Aktion () konnte nicht ordnungsgemäß ausgeführt werden, der verschachtelte Ausdruck erledigt den Trick. Süss!
Entwickler, die diesen Thread lesen, sollten das nicht ein bisschen einfacher sein? Wäre schön, eine sauberere Art zu haben, dies zu codieren.
Jordan
Betreff: JSL: Plattformdialog für Benutzereingaben starten, dann Bericht ändernEs sieht so aus, als wären die verschachtelten Ausdrücke nicht einmal mehr erforderlich. Das funktioniert auch:
Names Default To Here( 1 );
dt = As Table( J( 20, 1, Random Uniform() ) );
dt << distribution(
action(
distHandle = Current Report();
For( i = 1, i <= 3, i++,
distHandle[Outline Box( 1 )] << append( Text Box( "Yay!" ) )
);
)
);
Ich ziehe meinen früheren Kommentar zurück und frage nach einem besseren Weg, dies zu kodieren!
Was mir aufgefallen ist, dass Action () nicht wie ein modaler Dialog ist - es stoppt nicht die Skriptausführung. Jeder Code, der auf den Verteilungsaufruf folgt, wird sofort ausgeführt, noch bevor der Benutzer auf "OK" klickt. Alles, was nach Benutzereingaben geschehen muss, muss in das Argument Action () eingeschlossen werden.
Danke noch einmal @brady_brady und @stan_koprowski um den Weg zu weisen.