開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいですか?私は時間をかけて jsl スクリプトを作成しました。このスクリプトは、いくつかの基準を指定して、ユーザー入力に基づいて Amazon Redshift からデータを取得するためのユーザー インターフェイスを提供します。スクリプトは正常に動作していますが、小さな問題があります。
ユーザーがモーダル ウィンドウのクエリ ボタンをクリックすると、変数 isValid = 1 が設定され、後続のスクリプトを実行するためにウィンドウが閉じます。これにより、進行状況ウィンドウが作成され、「データを取得しています。お待ちください...」などのメッセージが表示され、開いたときにクエリが開始されます。クエリが完了したら、ウィンドウは閉じます。
問題は、この進行状況ウィンドウが画面に表示されないことです。クエリは成功しますが、JMP はウィンドウが作成された直後にクエリ スクリプトを実行してから、ウィンドウが前面に表示されるようにしているようです。
クエリ スクリプトの前に wait(0) を挿入するか、ウィンドウを最前面に表示しようとしましたが、まだうまくいきません。クエリ部分にコメントを付けた場合にのみ、進行状況ウィンドウが表示されます。
ウィンドウを表示し、同時にクエリ スクリプトを実行するにはどうすればよいですか?
/*scripts before this line are not related to the issue, hence not included*/<BR /><BR /><BR />If(isValid == 1,
nwQuery = New Window( "Query", <<SHOW menu=""></SHOW> window show up if remark below lines */
mySQL = Eval Insert(tpSQL);
dbc = Create Database Connection("DSN=Amazon Redshift; UID=***; PSW=***");
dt = Execute SQL (dbc, mySQL, "Query");
close database connection(dbc);<BR /> // add wait(2); if remark above lines
bbOk << Close Window;
))),
bbOk << Click;
);
);自動化とスクリプトRe: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?モーダル ウィンドウを使用する理由は、画面の中央に表示され、デフォルトでは上部に表示されるためです。以前、通常のウィンドウを試しましたが、これも表示されませんでした。
とにかく、もっと情報を収集して、新しい SQL クエリ メソッドを調べてみます。その後、再度返信します。
貴重なご意見とご提案に感謝いたします。ありがとうございます!Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?クエリが実行中であることを示すためにモーダル ウィンドウを使用する必要はありません。通常のウィンドウを使用して、クエリが開始する前に開き、クエリが終了したら閉じます。
Names Default To Here(1);
isValid = 1;
If(isValid == 1,
nw = New Window("Query",
<<SHOW menu=""></SHOW>
<P>また、データベース接続の作成、SQL の実行、データベース接続の終了から、クエリの推奨される方法である新しい SQL クエリに移行することをお勧めします (使用するのが面倒で、ドキュメントが不足していますが、それでも...これは前進する方法です)。</P>
<P> </P>
<P>編集:</P>
<P>New SQL Query() に移行する場合は、スクリプトがクエリの完了を待機するようにするには、必ず << Run Foreground を使用してください。</P>Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?何度か試行錯誤した後、スクリプトを希望どおりに動作させるためのコードを見つけました。
ご提案のとおり、クエリが実行中であることを示すために通常のウィンドウと新しい SQL クエリ関数を使用します。通常のウィンドウは画面の中央にポップアップ表示されないため、モニターの画面サイズをキャプチャする関数を作成し (そのために外部の Power Shell スクリプトを呼び出したくないため)、表示場所を計算します。
ただし、小さな欠点があります。クエリの実行中にビジー ライト ボックスが回転しないのですが、これについてはどうしようもありませんよね?
Names Default To Here(1);
GetWinConsoleSize = Function({},
nW = New Window("Get Win Console Size", << Window View("Invisible"), << Maximize Window(1));
theSize = nW << Get Window Size();
nW << Close Window();
Return(theSize);
);
drawWinProgress = Function({scrSize},
xSize = 250;
ySize = 50;
cpX = (scrSize[1]/2)-(xSize/2);
cpY = (scrSize[2]/2)-(ySize/2);
nW = New Window("Query Data", << Show Menu(0), << Show Toolbars(0), << Size(xSize,ySize), << Show Window (0),
Lineup Box(N Col(2), Busy Light(<< Automatic, size(40,40)), Text Box(" Pulling data, please wait ...")),
);
nW << Move Window(cpX, cpY);
nW << Show Window (1);
Return(nW);
);
nwMain = New Window("UI for user to input query criteria", << Modal, << Return Result,
// All display box goes here
H List Box(
Spacer Box(),
bbQuery = Button Box("Query",
isValid = 1;
bbQuery << Close Window;
,
isValid = 0;
bbCancel = Button Box("Cancel", Stop()),
),
);
If(isValid == 1,
wcSize = GetWinConsoleSize();
wProg = drawWinProgress(wcSize);
Wait(0);<BR /> // Generating SQL based on user criteria
dt = New SQL Query(Connection(strOdbcConnection), CustomSQL(mySQL)) << Run Foreground;
wProg << Close Window;
);
Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?<< Run Background を使用することもできますが、解決しなければならないさまざまな問題が伴います。
Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?また、データベース接続の作成、SQL の実行、データベース接続の終了から、クエリの推奨される方法である新しい SQL クエリに移行することをお勧めします (使用するのが面倒で、ドキュメントが不足していますが、それでも...これは前進する方法です)。
実行する SQL クエリが多数あることが多いため、データベース接続の作成/SQL の実行/データベース接続のクローズを使用します。データベース接続の作成にはオーバーヘッドが伴います。新しい SQL クエリを複数回呼び出すと、速度が低下する可能性があります。
新しい SQL クエリが今後の方向性であると考える理由が知りたいです。
Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?私の提案は、この投稿「データベースをクエリする方法は?」と Brian のコメントに基づいています。New SQL Query() には多くの問題があるため、あまり使用したくないのですが、それでも、スクリプトを将来にわたって使用できるように、より多くのスクリプトでこれを使用するようにしています。
Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?私はいつも new sql query() を使用しています。これは、私のスクリプトのほとんどにとって機能性が最高であり、JMP がそれを「正しい方法」として推奨しているからです。おそらく、長所と短所のリストを作成し、これを将来の開発のヒントとして使用する (たとえば、ウィッシュ リストに追加する) ことは価値があるでしょう。複数のステートメントに対して new sql query() を強化してみませんか。
おそらく、Scripters Club で話し合うことができるでしょう。
よろしくお願いします、
Re: 開いた後にスクリプトを実行しているモーダル ウィンドウを表示するにはどうすればよいでしょうか?「新しい SQL クエリ ()」に関するドキュメントの改善については、少なくとも 1 つの希望リスト項目がありますが、他にも必要な項目がいくつかあります。不満や問題点を収集するのは良い考えです (以前、それらに関していくつか投稿したと思います)。