やあ、
ご指摘ありがとうございます。以下はスクリプトです。また、ファイルも添付しました。
ログをクリアします();
デフォルトの開始時間 = (today()-12*3600);
デフォルトの終了時間 = Today();
User = 環境変数を取得します( "UserName" );
時間アラートレートデフォルト = 5;
6時間アラートレートデフォルト = 5;
start_week = 年間の週( Today() );
list_weeks = {};
For( i = 1, /*i<=10 &*/ i <= start_week, i++, //i<=10 はコンボボックスを過去 10 週間に制限します
//iwwtodate(start_week - (i - 1), year(today()), 2 /*月曜日*/ )
挿入先( list_weeks, Eval( "WW" || Char( start_week - (i - 1) ) ) )
);
User = 環境変数を取得します( "UserName" );
// 時間関数を定義します。
iwwtodate = 関数( {_ww_, _year_, _dayofweek_},
//ローカル変数
{_ww01thisyear_ = 0, _sundayww01_ = 0},
_ww01thisyear_ = Informat( "01Jan" || Char( _year_ ) );
_sundayww01_ = _ww01thisyear_ - (曜日( _ww01thisyear_ ) - 1) * 24 * 3600;
(_ww_ - 1) * 7 * 24 * 3600 + _sundayww01_ + (_dayofweek_ - 1) * 24 * 3600
;
);
date_box = Function( // 間違いにくいGrahamの日付ボックスを作成する
{timething = 今日()},
{ニューボックス},
current_ver = Left( JMP Version(), 2 );
もし(Num(現在のバージョン) >= 11,
newbox = 評価(
代わりの(
名前式(
数値編集ボックス(
timething、//Eval(Sub()) は JMP の癖による
10, //JMPはデフォルトで幅を設定しないので、これが必要です
<
関数({self},
{},
もし( 欠落している( self << get ) )
self << Set( Eval( DUMMY ) )//timething引数に日付を設定する
)
)
)、
<
)
)、
Expr(DUMMY), 時間
)
)
,
newbox = テキスト編集ボックス( Char( Format( Timething, "m/d/yh:m:s" ) ) )
);
//新しいボックス;
);
// 時間関数の定義を終了します。
// exprウィンドウポップアップを作成 + 時間チェック
expr_window = 式(
QueryOptionsChooser = 新しいウィンドウ( "CHT PWL SPL CV クイックモニタリング " || ユーザー || "",
<
<
V リストボックス(
テキストボックス( " " )、
パネルボックス(「レポートを自動更新しますか?」
H リストボックス(
V リストボックス( テキストボックス( "メソッド" ), tautorefresh = コンボボックス( {"一度実行", "自動更新" }, Show( tautorefresh << Get() ) ) ),
テキストボックス( " " )、
V リストボックス(
テキストボックス(「オプション」)、
Option_select = ラジオボックス( {"両方", "SPEC-PL過去30分のみ","PWL、SPL、CVのみ " }, show( Option_select << get() ) )
)、
V リストボックス(
テキストボックス(「更新間隔」)、
trefresh = ラジオボックス( {"5分", "20分", "60分", "2時間"}, Show( trefresh << Get() ) )
)、
/*
テキストボックス( " " )、
V リストボックス( テキストボックス( "更新速度 " ), rspeed_cb = チェックボックス( {"高速"} ), rspeed_cb << Set( 1, 1 ) ),
*/
テキストボックス( " " )、
V リストボックス(テキストボックス(「自動更新の時間範囲データ」)、日数 = ラジオボックス({「1日」、「0.5日」、「6時間」、「2時間」}))、
テキストボックス( " " )、
)、
)、
/*
パネルボックス(「時間枠を選択してください」、
H リストボックス(
V リストボックス(
//テキストボックス(「時間メソッド」)、
//method=ラジオボックス( {"日前", "日付範囲"}),
テキストボックス(「時間方式」)、
method = Combo Box( {"日前", "日付範囲"} ),
)、
テキストボックス( " " )、
V リストボックス( テキストボックス( "日前" )、 days = ラジオボックス( {"1.5", "3.5", "7", "2時間"} ) )、
テキストボックス( " " )、
V リストボックス(
テキストボックス(「日付範囲」)、
V リストボックス(
startdatebox = date_box( Today() - 3.5 * 24 * 60 * 60 );
enddatebox = date_box( Today() );
開始日 = 開始日ボックス;,
終了日 = 終了日ボックス、
)、
)、
)、
)、
*/
スペーサーボックス(サイズ(10, 10))、
H リストボックス(
スペーサーボックス(サイズ(10, 10))、
パネルボックス(「植物を選択:」、
H リストボックス(
スペーサーボックス(サイズ(10, 0))、
V リストボックス( "Plant", PlantSelect = ラジオボックス( {"DMT1", "DMT2", "KMT1", "PGT1", "PGT2"} ), PlantSelect << set( 1 ) ),
スペーサーボックス(サイズ(10, 0))、
)
)、
スペーサーボックス(サイズ(20, 10))、
パネルボックス(「取引時間ウィンドウを選択:」、
テキストボックス( " " )、
H リストボックス(
テキストボックス(「開始時刻:」)、
StartTimeBox = H リストボックス(
StartTimePickBox = date_box( デフォルトの開始時刻 );
開始タイムピック = 開始タイムピックボックス;
//RocoTimeStartPick = date_box( (StartTimePick << Get) - 3600 );
)、
テキストボックス( " " )、
ボタンボックス(「午前12時に設定」
LastTime = StartTimePickBox << Get;
StartTimePickBox << 削除;
開始タイムボックス << 追加(
StartTimePickBox = date_box( 86400 * Floor( LastTime / 86400 ) );
開始タイムピック = 開始タイムピックボックス;
//RocoTimeStartPick = date_box( 86400 * Floor( (LastTime - 3600) / 86400 ) );
//RocoTimeStartPick = date_box( (StartTimePick << Get) - 3600 );
);
)、
)、
//RocoTimeStartPick = date_box( (StartTimePickBox << Get) - 3600 );
テキストボックス( " " )、
H リストボックス(
テキストボックス(「終了時刻:」)、
EndTimeBox = H リストボックス(
EndTimePickBox = date_box( デフォルトの終了時間 );
EndTimePick = EndTimePickBox;
)、
テキストボックス( " " )、
ボタンボックス(「午前12時に設定」
LastTime = EndTimePickBox << Get;
EndTimePickBox << 削除;
EndTimeBox << 追加(
EndTimePickBox = date_box( 86400 * Floor( LastTime / 86400 ) );
EndTimePick = EndTimePickBox;
);
)、
)、
)、
スペーサーボックス(サイズ(10, 10))、
)、
スペーサーボックス(サイズ(20, 20))、
//RocoTimeEndPick = date_box( (EndTimePick << Get) + 3600 );
H リストボックス ( 整列 ( 右 )、 スペーサーボックス ( )、 ボタンボックス ( "OK" )、 ボタンボックス ( "キャンセル" ) )
) //VListBox() 全体の終了
);
If( QueryOptionsChooser["Button"] == -1,
StopRunningTheThing
);
// リフレッシュする時間の宣言。
days = days << Get;
dateoffset = Match( days, 1, "24", 2, "12", 3, "6", 4, "2" );
ar = tautorefresh << get;
ref = trefresh << get;
refresh = Match( ref, 1, "5", 2, "20", 3, "60", 4, "120" );
//rspeed = rspeed_cb << get;
//プロセスイベントRefreshがチェックされる
もし( ar == 2,
StartTimePick = date_box( Today() - Num( dateoffset ) * 3600 );
EndTimePick = date_box( デフォルトの終了時間 );
);
RocoTimeStartPick = date_box( (StartTimePick << Get) - 3600 ); // CHT時間の1時間前のroco時間を取得します
RocoTimeEndPick = date_box( (EndTimePick << Get) + 3600 );// CHT時間の1時間後のroco時間を取得します
CHTTimeStartPick = date_box( (StartTimePick << Get) - 1800 );
CHTTimeEndPick = date_box( (EndTimePick << Get) + 1800 );
SPL_PL_start = date_box( (EndTimePick << Get) - 1800 );
SPL_PL_end = date_box( EndTimePick << Get );
//ユーザーの選択を収集する
PlantSelection = QueryOptionsChooser["PlantSelect"];
PlantName = Match( PlantSelection, 1, "DMT1", 2, "DMT2", 3, "KMT1", 4, "PGT1", 5, "PGT2" );
//show(植物名);
StartTimeSelection = Format( StartTimePick << Get, "m/d/yh:m:s" );
EndTimeSelection = Format( EndTimePick << Get, "m/d/yh:m:s" );
RocoTimeStart = Format( RocoTimeStartPick << Get, "m/d/yh:m:s" );
RocoTimeEnd = Format( RocoTimeEndPick << Get, "m/d/yh:m:s" );
CHTTimeStart = Format( CHTTimeStartPick << Get, "m/d/yh:m:s" );
CHTTimeEnd = Format( CHTTimeEndPick << Get, "m/d/yh:m:s" );
SPLPL_timestart = Format( SPL_PL_start << Get, "m/d/yh:m:s" );
SPLPL_timeend = Format( SPL_PL_end << Get, "m/d/yh:m:s" );
option_selection = QueryOptionsChooser["Option_select"];
印刷(オプション選択);
Print(植物名);
印刷(開始時刻選択);
印刷( EndTimeSelection );
印刷( RocoTimeStart );
印刷( RocoTimeEnd );
印刷(CHTTimeStart);
印刷(CHTTimeEnd);
Print( refresh || " リフレッシュ時間" );
expr_TimeCheck = 式(
TimeFixWindow = 新しいウィンドウ( "時間選択エラー!",
<
<
H リストボックス(
V リストボックス(
テキストボックス( " " )、
テキスト ボックス (「開始時刻が終了時刻より遅いです。もう一度お試しください。」)
テキストボックス( " " )、
テキストボックス(「選択した項目:」)、
H リストボックス(
テキストボックス( " " )、
V リストボックス(
H リストボックス(テキストボックス(「開始時刻:」|| StartTimeSelection)、)
H リストボックス(テキストボックス(「終了時刻:」|| EndTimeSelection))
)
)、
テキストボックス( " " )、
H リストボックス(
テキストボックス(「開始時刻:」)、
StartTimePickBox = date_box( デフォルトの開始時刻 );
開始タイムピック = 開始タイムピックボックス;
)、
テキストボックス( " " )、
H リストボックス(
テキストボックス(「終了時刻:」)、
EndTimePickBox = date_box( デフォルトの終了時間 );
EndTimePick = EndTimePickBox;
)、
テキストボックス( " " )、
)
)、
H リストボックス (Align( Right )、スペーサーボックス ()、OKButton = ボタンボックス ( "OK" )、ボタンボックス ( "キャンセル" ) )
);
StartTimeSelection = Format( StartTimePick << Get, "m/d/yh:m:s" );
EndTimeSelection = Format( EndTimePick << Get, "m/d/yh:m:s" );
TimeFixWindow["ボタン"] == -1の場合、
StopRunningTheThing
);
//必要に応じて再帰する
If(Informat(開始時刻選択, "m/d/yh:m:s") > Informat(終了時刻選択, "m/d/yh:m:s"),
評価( expr_TimeCheck )、
評価( expr_Scrap_SQL )
);
); //expr_TimeCheckの終了
If(Informat(開始時刻選択, "m/d/yh:m:s") > Informat(終了時刻選択, "m/d/yh:m:s"),
評価( expr_TimeCheck )、
VisionStartTime = フォーマット(
最大(Informat(開始時刻選択, "m/d/yh:m:s" ), 86400 * 下限((Informat(終了時刻選択, "m/d/yh:m:s" ) - 86400) / 86400 ) ),
「m/d/yh:m:s」
);
If(Today() - Informat(EndTimeSelection, "m/d/yh:m:s") > 86400,
VisionEndTime = フォーマット(
最小(Informat(EndTimeSelection, "m/d/yh:m:s" ), 86400 * 上限((Informat(EndTimeSelection, "m/d/yh:m:s" ) - 86400) / 86400 ) ),
「m/d/yh:m:s」
)、
VisionEndTime = フォーマット(
Min(Informat(VisionStartTime, "m/d/yh:m:s") + 86400, Informat(EndTimeSelection, "m/d/yh:m:s")),
「m/d/yh:m:s」
)
);
);
);
SPL_expr = 式(
QueryInfo = "DRIVER=SQL Server;SERVER=" || PlantName || "MESSQLODS;APP=Microsoft Office XP;WSID=FS-1261;DATABASE=ODS;Trusted_Connection=Yes";
//QueryInfo = "DRIVER=SQL Server;SERVER=" || PlantName ||
//"messqlods.fs.local;APP=Microsoft Office XP; WSID=FS-10967;DATABASE=ODS;Trusted_Connection=Yes";