Verzögerungscode bis Antrag abgeschlossen istIch habe ein Skript, in dem ich zunächst eine Ja/Nein-Frage in einem Dialogfeld stelle. Wenn der Benutzer „Ja“ ankreuzt, wird ein Codeabschnitt ausgeführt, der Daten aus einer Datenbank abruft, die dann zum Erstellen einer Anwendung verwendet werden. In dieser Anwendung interagiert der Benutzer mit den Daten (Tabellen und Diagramme), um ein PDF-Formular zu erstellen, diese Materialien fertigzustellen, die Anwendung zu schließen und dann zur nächsten Station zu wechseln, an der Sie dieselbe Ja/Nein-Frage erhalten, jedoch für einen anderen Ort. Das Problem besteht darin, dass, wenn ich „Ja“ auswähle, der Code ausgeführt wird und die Anwendung erstellt (alles großartig), dann aber mit dem nächsten Dialogfeld fortfährt. Sobald dieses Dialogfeld angezeigt wird, kann ich nicht mehr mit meiner Anwendung interagieren. Wie kann ich dies so codieren, dass das nächste Dialogfeld erst angezeigt wird, wenn ich mit meiner Anwendung fertig bin?
Event=dialog("Gibt es Proben am Standort A?",
Vlist (Aufstellung (1, Ereignistyp = Optionsfelder ("Ja", "Nein"),)));
Wenn(Ereignis["Ereignistyp"] == 1,(
//Wenn der Benutzer „Ja“ auswählt, wird hier der Code für diese Site ausgeführt, um eine Anwendung mit Diagrammen und Tabellen zu erstellen (siehe Beispiel unten). Der Benutzer muss Punkte im Diagramm auswählen, ein PDF-Formular erstellen und dann die Anwendung schließen, bevor er fortfahren kann.
);
);
In diesem Screenshot sehen Sie eine Schaltfläche mit der Aufschrift „Fertig stellen“. Ich möchte nicht, dass mein nächstes Dialogfeld angezeigt wird, bevor ich darauf geklickt habe.

Ausführen von JMP 16.2.0
Automatisierung und SkriptingDatenexploration und -visualisierungBetreff: Code verzögern, bis die Bewerbung abgeschlossen istSie können beispielsweise den Ausdruck zum Erstellen des nächsten Dialogfelds innerhalb der Schaltfläche „Fertig stellen“ hinzufügen.
Betreff: Code verzögern, bis die Bewerbung abgeschlossen istDas ist eine gute Idee, aber ich habe mit dem Code herumgespielt und kann nicht herausfinden, wie ich das zum Laufen bekomme. Wenn ich das Dialogfeld in die Schaltfläche „Fertig stellen“ einfüge, erstellt der Code diese Anwendung und fährt dann, bevor ich damit interagieren kann, mit dem nächsten Zyklus fort, um die Anwendung für den nächsten Standort zu erstellen. Ich muss eine Möglichkeit haben, den Code anzuhalten, wenn die Anwendung fertig erstellt ist, und ihn automatisch wieder zu starten, sobald ich auf die Schaltfläche „Fertig stellen“ geklickt habe. Ich bin nicht sicher, ob das hilfreich ist, aber ich füge etwas Code an. Der erste Dialog kommt in Zeile 5, dann, wenn Sie „Ja“ auswählen, werden Daten von unserem internen Server abgerufen. Dies wird für niemanden sonst ausgeführt (Zeilen 24 – 638), dann wird die Anwendung aus der Datentabelle erstellt, die der vorherige Code erstellt hat (646 – 1069), dann wiederholt sich der Code, aber für einen anderen Datensatz (Zeile 1080).
Betreff: Code verzögern, bis die Bewerbung abgeschlossen istIch bin nicht so vertraut mit JMP-Anwendungen/Dashboards (ich baue sie immer selbst, um die volle Kontrolle zu haben), aber Sie möchten, dass der Abschnitt nach 1080 nicht ausgeführt wird, bis der Benutzer auf „Fertig stellen“ drückt.
Betreff: Code verzögern, bis die Bewerbung abgeschlossen istIch habe eine „Lösung“ gefunden. Ich habe einfach einen Wartebefehl vor Zeile 1080 eingefügt
If( Event["eventtype"] == 1,
wait(30);
);Wenn also vorher „Ja“ ausgewählt wurde, weiß es, dass ich eine Anwendung generiert habe und Zeit brauche, um mit ihr zu interagieren. Dadurch hat der Benutzer 30 Sekunden Zeit, diese Aktion abzuschließen, „fertigzustellen“, und dann geht es weiter mit der nächsten Komponente des Skripts … es ist eine funktionale Lösung, aber nicht das, was ich bevorzugt hätte. Der Benutzer wird dadurch sicherlich „unter Zeitdruck“ gesetzt. Ich werde mit der Wartezeit herumspielen müssen, um einen guten Mittelweg zu finden. Danke für Ihre Hilfe … das hat mich zum Nachdenken gebracht.
Betreff: Code verzögern, bis die Bewerbung abgeschlossen istIch habe Ihnen eine Nachricht geschickt, in der ich zeige, was ich hätte tun können. Ich würde grundsätzlich den zweiten Teil des Skripts in den Ausdruck verschieben (ich würde andere Trennungen vornehmen, um die Lesbarkeit zu verbessern, aber das sollte das einzig „Notwendige“ sein) und das dann der Funktion/dem Skript button5 hinzufügen. Dadurch würde der Ausdruck ausgelöst, wenn button5 gedrückt wird. Diese Option könnte je nach Handhabung der Bereiche und Namespaces zusätzliche Arbeit erfordern.