Ein Add-In ordnungsgemäß beendenIch schreibe ein Add-In, um die Current Data Table() zu bearbeiten. Ich möchte, dass das Add-In ordnungsgemäß beendet wird, ohne etwas zu tun, wenn:
(a) Es gibt keine aktuelle Datentabelle()
oder
(b) Die aktuelle Datentabelle hat <2 Spalten.
Ich schaffe es scheinbar nicht, das zu bewerkstelligen. Ich habe das Add-In installiert und mir die generierte .jmpcust-Datei angesehen. Ganz oben im Skript, wo der Kommentar lautet „Variablen und Funktionen, die hier deklariert werden, beziehen sich auf den Anwendungs-Namespace“, bemerke ich diesen Code:
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)was meiner Meinung nach vom Application Builder (und nicht von mir) eingefügt wurde.
Es scheint richtig zu sein, (a) zu erreichen, aber stattdessen läuft mein Add-in in Ermangelung einer Current Data Table() weiter und öffnet sein Dialogfenster.
Kann mir jemand helfen?
Verbraucher- und MarktforschungBetreff: Ein Add-In ordnungsgemäß beendenMeinen Sie, Sie möchten, dass das Skript angehalten wird, ohne dass der Benutzer eine Rückmeldung erhält? Wenn ja, ersetzen Sie throw("info text") durch stop() und das Skript wird dort beendet. Ich kann mir vorstellen, dass es im Anwendungsskript genauso funktionieren würde, aber damit habe ich noch nie gearbeitet.
Betreff: Ein Add-In ordnungsgemäß beendenAber ich wäre immer noch daran interessiert zu wissen, wie man Throw() ausführt, ohne dass überhaupt ein Fehlerdialogfeld angezeigt wird. Ich denke, der aktuelle Beitrag von txnelson befasst sich damit, aber ich bin verwirrt darüber, was es tut und wie es funktioniert.
Betreff: Ein Add-In ordnungsgemäß beendenIch glaube, ich habe in der Zwischenzeit eine Lösung gefunden, als ich mir einen von Txnelsons Beiträgen angesehen habe. In das Anwendungsskript habe ich Folgendes eingefügt:
If( N Table() == 0,
Throw( "Add-in requires an open data table." )
);
dt = Current Data Table();
If( N Cols( dt ) < 2,
Throw(
"Add-in requires a table with at least two columns."
)
);
Betreff: Ein Add-In ordnungsgemäß beendenIch habe versucht, das im Skripteditor zu debuggen, aber der Editor wurde ohne Speichern geschlossen. Mir wurde nicht klar, was passierte, bis ich es noch einmal machte und erneut ausführte.Die Funktion sollte vor dem Aufruf definiert werden, das scheint also nicht in Ordnung zu sein.
Ich habe den Application Builder noch nie verwendet. Ich führe diese Art der Steuerung auf Skriptebene durch, kurz bevor die GUI aufgerufen wird. Im Grunde sehen meine Skripte so aus:
1. Erste Sachen oben
2. Hauptskriptfunktion
3. Weisen Sie dt zu und entscheiden Sie, ob Sie mit der GUI fortfahren möchten oder nicht
4. GUI, wo die Schaltfläche „OK“ die Skriptfunktion aufruft.
So suche ich nach einer Datentabelle. Sie könnten eine modifizierte Version davon verwenden und auch prüfen, ob ncol(dt) >= 2 ist.
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>