Status der im Vordergrund ausgeführten AbfrageIst es möglich, den Benutzer mithilfe von JSL über den Status einer im Vordergrund ausgeführten Abfrage zu informieren? Ich habe eine SQL-Abfrage, deren Ausführung Stunden dauert, und das Skript muss nach dem Öffnen auf der Tabelle ausgeführt werden, sodass ich es nicht als Hintergrundabfrage ausführen kann.
Derzeit verwende ich Open Database():
/* fictitious database and table */
dt = Open Database( "DSN=ODBC Connection",
"SELECT * FROM some_table" )
Betreff: Status der im Vordergrund ausgeführten AbfrageDanke Eric,
Das Aufteilen des Skripts zur Ausführung über die Abfrage wird ein wenig Arbeit bedeuten, aber es sieht so aus, als würde es die Aufgabe erledigen.
Betreff: Status der im Vordergrund ausgeführten AbfrageHey, äh,
Es gibt keine Möglichkeit, den Status über eine Vordergrundabfrage zu aktualisieren, da die Abfrage den Hauptthread von JMP bindet und JMP daher während der Ausführung eigentlich nichts tun kann.
Als Problemumgehung würde ich vorschlagen, Ihre Abfrage mit Query Builder zu erstellen (mit benutzerdefiniertem SQL, wenn Sie bereits über das SQL verfügen, das Sie ausführen möchten) und die Abfrage dann als Datei zu speichern. Nehmen wir an, dass es auf der Festplatte den Namen „oneMillionRows.jmpquery“ trägt.
Schreiben Sie dann ein Skript wie dieses:
query = include("oneMillionRows.jmpquery");
query << Run Background(
On Run Complete(
Write("\!NQuery is complete! Rows in result: ", NRows(queryResult));
)
);
Welche JSL Sie auch immer ausführen möchten, nachdem die Abfrage abgeschlossen ist, kann in die Datei eingefügt werden Bei abgeschlossener Ausführung Parameter zu Hintergrund() ausführen . JMP kann also weiterhin verwendet werden, während die Abfrage ausgeführt wird. Der Benutzer könnte verwenden Ansicht > Abfragen ausführen um den Fortschritt zu sehen. Ob große Fortschritte gemeldet werden können oder nicht, hängt davon ab, ob die Abfrage die meiste Zeit in der Ausführungsphase oder in der Datenabrufphase verbringt. Während der Ausführungsphase erhalten wir keine Aktualisierungen von der Datenbank. Wir aktualisieren lediglich die Anzahl der abgerufenen Zeilen, während wir die Daten aus der Datenbank abrufen, nachdem die Abfrage ausgeführt wurde.
Erik
Betreff: Status der im Vordergrund ausgeführten AbfrageWenn die Verarbeitung der Abfrage selbst lange dauert, wird erst dann ein Fortschrittsbalken angezeigt, wenn die Daten tatsächlich gelesen werden. Ich sende dem Benutzer eine Nachricht mit dem Befehl caption(), um ihm zumindest mitzuteilen, dass etwas los ist. Bei manchen Anwendungen kann ich abschätzen, wie lange es dauern wird, und ich gebe dies in der Nachricht an. Zeit ist relativ!
caption("Reading data, please be patient...");
wait(0);
/* fictitious database and table */
dt = Open Database( "DSN=ODBC Connection",
"SELECT * FROM some_table" );
caption(remove);
wait(0);
Betreff: Status der im Vordergrund ausgeführten AbfrageIch sollte erwähnen, dass das oben Genannte wirklich für Hintergrundfragen gedacht ist, sorry.Bei Vordergrundabfragen sollte es einen Fortschrittsbalken geben, der den Benutzer über die Anzahl der gelesenen Datensätze informiert und weitere Eingaben verhindert.
Brian
Betreff: Status der im Vordergrund ausgeführten AbfrageHierfür gibt es keine dedizierte JSL-Option.Wenn Sie die JMP-Benutzeroberfläche sichtbar haben, können Sie den Status einer Abfrage jederzeit über den Menüpunkt „Ansicht->Running Queries“ überprüfen. Innerhalb von JSL können Sie den Dialog auch mit dem Befehl „Hauptmenü“ aufrufen, etwa so:
Hauptmenü("VIEW:RUNNING QUERIES");
Brian Corcoran
JMP-Entwicklung