録画とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Clubビデオ 1 @ゲオルグからのデータ アクセス
コメント:
- ドキュメントはまだ不足しており、使い方が少し面倒ですが、それでも推奨される方法であり、コネクタをサポートするので、使用することをお勧めします。
- 実行完了時にアクセスできる queryResult「シンボル」もあり、これは結果のテーブルへの参照になります
- 常にどちらかを使用してください< << run foreground and do not rely on which is determined by user preferences< pan>

ビデオ 2: JMP ロースト、 フォロー
コメント:
- スクリプト インデックスで、新しいウィンドウ コマンドがさまざまなモードでどのように機能するかを確認することをお勧めします。ほとんどのバリアント (モーダル、レポートなど) の例があります。
- 同意します。そこには例があります。しかし、必ずしも私が望むほど役に立つわけではありません。NewWindow() を使用するたびに、類似の例がない何かを行いたいのです。コミュニティを検索しているときに、NewWindow() の非常に役立つ例を見つけました。
- 例を追加する機能も追加してください。コミュニティには非常に役立つ例があります。すべての例をスクリプト インデックスに詰め込むのは意味がないと思います。しかし、私たちのスクリプト インデックスに役立つ例を追加できると、非常に役立ちます。
- ウィッシュ リスト エントリの始まりは次のとおりです:
Video 3: Tips and Tricks from フォロー
提案については投稿してください:
Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club私の資料を添付しました
Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club素晴らしい! 2023 年の開始以来、これらのセッションがすぐに役立つ知識の源であり続けているのは驚くべきことです。
Open Database() JSL 関数内の SQL に関する意見があるかどうか疑問に思っています。私たちは、データ ウェアハウス用に Google の BigQuery の実装を使用しています。BigQuery 内では、以下に示すように、Open Database() に直接コピー アンド ペーストできる SQL クエリを開発およびデバッグできます。SQL キーワードまたはタイムスタンプを SQL に連結する機能も非常に便利に思えます。
Names Default to Here(1);
start = "'2025-02-18 00:00:00'";
stop = "'2025-02-18 01:00:00'";
dt = Open Database( "DSN_name", "
SELECT
time,
tagname,
value
FROM
`bq_project.dataset.table`
WHERE
time BETWEEN TIMESTAMP("|| start ||") AND TIMESTAMP("|| stop ||")
AND tagname IN(
'tag_1',
'tag_2'
)"
);
Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club新しい SQL クエリを使用し (これはかなりひどい方法だとは思いますが、推奨される方法です)、SQL テンプレートを利用してから、Eval Insert を使用して評価することをお勧めします。以下に例を示します。
Names Default to Here(1);
MY_CONNECTOR = "ODBC:...";
start = "'2025-02-18 00:00:00'";
stop = "'2025-02-18 01:00:00'";
sql_template = "\[
SELECT
time,
tagname,
value
FROM
`bq_project.dataset.table`
WHERE
time BETWEEN TIMESTAMP(¤start¤) AND TIMESTAMP(¤stop¤)
AND tagname IN(
'tag_1',
'tag_2'
)
]\";
sql_str = Eval Insert(sql_template, "¤");
// Write("\!N", sql_str);
obj = New SQL Query(
Connection(MY_CONNECTOR),
Custom SQL(sql_str),
Query Name("mytable")
);
dt = obj << Run Foreground();
Write();
新しい SQL クエリ以外のメソッド (Open Database() など) にも同様のテンプレートのアイデアを使用できます。
Eval Insert() で特殊文字 "¤" を使用するのは、デフォルトの "^" が Regex などでよく見られ、評価中に問題が発生するためです。
編集: いくつかのタイプミスを修正し、言語を改善し、「¤」についてのコメントを追加しました
Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club非常に役立つプレゼンテーションをありがとうございましたフォロー ! 動的に作成されたモーダル ウィンドウを書き直して文字列の使用を避け、結果を抽出するために XPath メソッドを使用するようにインスピレーションを受けました。
ただし、文字列の解析を避けられないことが 1 つありました。モーダル ウィンドウ内に XPath コマンドを含めたいのですが、動的に作成する必要があります。
テキスト編集ボックスを有効にするかどうかを制御するチェック ボックスを作成したいのですが、テキスト編集ボックスとチェック ボックスのペアがいくつあるかわかりません。
rc_list = Lineup Box( N Col( 3 ) );
rc_list << append( Text Box( "Current", <<SET font=""></SET>
Is there a way of doing this so I don't need to parse JSL strings? Or is there a better way to do this modal recode?
<BR /><P>完全なコードはここにあります:</P><DIV class="lia-spoiler-container"><A class="lia-spoiler-link" href="#" rel="nofollow noopener noreferrer" target="_blank">もっと見る...</A><NOSCRIPT>(ハイライトして読んでください)</NOSCRIPT><DIV class="lia-spoiler-border"><DIV class="lia-spoiler-content"><PRE><CODE class=" language-jsl">Names Default To Here( 1 );
// Function to do a simple in-place column recode.
// Uses a modal dialog so can be used as part of a larger script or workflow.
modal_recode = Function( {dt, col},
{default local},
Summarize( dt, orig_vals = By( col ) );
rc_list = Lineup Box( N Col( 3 ) );
rc_list << append( Text Box( "Current", <<SET font=""></SET></CODE><NOSCRIPT><CODE class=" language-jsl"><DIV class="lia-spoiler-noscript-container"><DIV class="lia-spoiler-noscript-content">名前のデフォルトは Here( 1 ); // 単純なインプレース列再コーディングを実行する関数。 // モーダルダイアログを使用するため、より大きなスクリプトまたはワークフローの一部として使用できます。 modal_recode = Function( {dt, col}, {default local}, Summarize( dt, orig_vals = By( col ) ); rc_list = Lineup Box( N Col( 3 ) ); rc_list << append( Text Box( "Current", < <SET font=""></SET></DIV></DIV>Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Clubこの場合は << XPath ではなく、この << prev sib を使用します。これで目的の結果が得られると想定しています。
だから、
Eval(
Parse(
"\[rc_list << append( check box( "", <<SET function=""></SET>
<P>このようなこともできます</P>
<CODE class=" language-jsl">rc_list << Append(Check Box("", << Set Function(function({this},
(this << prev sib) << Enabled(this << get);
))));
完全なコード
もっと見る...
Names Default To Here(1);
// Function to do a simple in-place column recode.
// Uses a modal dialog so can be used as part of a larger script or workflow.
modal_recode = Function({dt, col},
{default local},
Summarize(dt, orig_vals = By(col));
rc_list = Lineup Box(N Col(3));
rc_list << append(Text Box("Current", <<SET font=""></SET>
</CODE><NOSCRIPT><CODE class=" language-jsl"><DIV class="lia-spoiler-noscript-container"><DIV class="lia-spoiler-noscript-content">名前のデフォルトは Here(1); // 単純なインプレース列再コーディングを実行する関数。 // モーダルダイアログを使用するため、より大きなスクリプトまたはワークフローの一部として使用できます。 modal_recode = Function({dt, col}, {default local}, Summarize(dt, orig_vals = By(col)); rc_list = Lineup Box(N Col(3)); rc_list << append(Text Box("Current", < <SET font=""></SET></DIV></DIV>
<P>本当にXPathを使いたいのであれば、インデックスを動的に計算することができます。例えば、すべてのCheckBoxBoxを取得し、 <EM>Contains</EM>を使ってインデックスを取得し、そのインデックスを使うことができます。</P>
<CODE class=" language-jsl">idx = Contains(rc_list << XPath("//CheckBoxBox"), this); Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club@jthi さん、ありがとうございます。以前の sib アプローチは私には有効です。JMP ウィンドウの構築方法と操作方法についての私の自然な考え方を変える必要があります。
Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club私はこれまで何度も考え方を変えてきましたし、今でも時々変えています。私は一般的に、状況に応じて 4 つの異なる方法 (およびそれらの組み合わせ) を使用していると思います。
- XPath
- ボタンを押すだけで複数の項目から結果を収集したい場合
- リスト/連想配列への参照を収集する
- オブジェクトへの参照を収集するのは簡単な場合もあります
- << 関数を設定します(function(this()))
- 通常は、enable(0/1)のように、いくつかのアクションを制御します。通常、これで変数の値を更新しません。
- 参照評価
- 具体的な例はありませんが、何らかの理由で XPath で「パス」を構築したり、これを使用したりするのが面倒になり、参照が必要な場合 (新しいウィンドウを返すクラスや関数の場合など) が考えられます。
参考評価例
rc_list << append(teb = Text Edit Box(Char(orig_vals[i]), <<ENABLED></ENABLED>
<BR />
<BR />Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club1 回の返信で与えられる称賛には限りがあります。 @jthi さん、本当にありがとうございます。