複数の DataTable を開く<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />そこで、ユーザーに特定の数のデータ テーブルを指定するように要求し、その後、対応するテーブルを選択できるアプリケーションを作成したいと考えています。 また、これらの各テーブルに列を追加したいと思います。 私はまだ jmp/jsl を使い始めたばかりですが、以下のスクリプトはもちろん機能しません。助けていただければ幸いです。
新しいウィンドウ( "データテーブルの数",
<<モーダル、
テキスト ボックス( "データ テーブルの数" )、
変数ボックス = 数値編集ボックス()、
ボタンボックス(「OK」)、
ボタンボックス(「キャンセル」)
);
N = 変数ボックス << get;
For( i = 1, i <= N Items( dt ), i++,
dt = 開く()
名前のデフォルトはここ(1)です。
dt=現在のデータテーブル(i);
dt << New Column("ColumnA", Numeric, continuous, Format("Best", 5));
dt << New Column("ColumnB", Numeric, continuous, Format("Best", 5));
);
PS: 追加の列を追加するスクリプトを何らかの方法で For ループに入れる必要があることはわかっていますが、データ テーブルさえ開くことができるのであれば、列を追加するにはどうすればよいでしょうか。
ピームローズジョーダンヒラー@jmpクリス・キルヒベルクCHフィールドマークベイリー
Re: 複数の DataTable を開くああ、それはうまくいきます。 ありがとう!!!
Re: 複数の DataTable を開くもちろん! 教えてくれて本当にありがとう、メラニー。 。 。
このスレッドを読んでいる人は、(コード内のコメントに反して) キーワード「multiple」が OS/X と Windows で尊重されることにも注意してください。
Re: 複数の DataTable を開くPickFile() の複数の引数はブール値ではなくキーワードです。 これを試して:
ファイルの選択(
「複数のファイルを 1 つ選択してください」 、 // プロンプト
"$サンプルデータ" 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する初期ファイル フィルター (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」ウィンドウまたは「開く」ウィンドウのいずれかを指定します。 それぞれ 1 または 0 の値を設定します。
空の() 、 // デフォルトのファイル
"複数" // 複数 - 「保存フラグ」 = 0 の場合、値 1 を使用すると、複数のファイルを開くことができます (OS/X では無視されます)。
) ;
複数の引数を使用するには、前の引数をすべて指定する必要があることに注意してください。たとえば、2 つのフラグとデフォルト ファイルを省略することはできません。
Re: 複数の DataTable を開くうーん。 それはうまくいくはずだと思うので、研究開発部に聞いてみます。
可能であれば組み込み関数を使用することが常に最善ですが、次のようなことはいつでも行うことができます。
名前デフォルトここへ( 1 ) ;
ディレクトリ=ディレクトリを選択( 「ファイルが含まれているフォルダーに移動します」 、 「$デスクトップ」 ) ;
新しい=新しい窓( 「複数のファイルを開く」 、
パネルボックス( 「1 つ以上のファイルを選択してください」 、
ポンド=リストボックス(ディレクトリ内のファイル(ディレクトリ)) 、
ラインアップボックス( Nコル( 2 ) 、
ボタンボックス( "わかりました" 、 OKスクリプト) 、
ボタンボックス( "キャンセル" 、新しい<<ウィンドウを閉じる)
)
)
) ;
OKスクリプト=
エクスプレッション(
新しい<<ウィンドウを閉じる;
ファイル=ポンド<< getSelected ;
のために( f = 1 、 f <= Nアイテム(ファイル) 、 f ++、開ける(ディレクトリ|| 「/」 ||ファイル[ f ])) ;
) ;
Re: 複数の DataTable を開くありがとうイアン、本当に助かりました。 上記のコードをテストしたところ、Windows でも動作しました。 コードを編集して自分の作品に組み込むこともできました。 ただし、一度に 1 つのファイルしか開くことができません。 あなたの説明によると、ファイルの選択機能に後者の1を追加すると、複数のファイルを開くことができるはずですが、私のコンピューター(ちなみにWindows)では機能しません。複数のファイルを同時に開くことができるようにこれを回避する方法はありますか? ありがとう
Re: 複数の DataTable を開くしたがって、あなたの質問は開くファイルの選択に関するものであることがわかりました。 。 。
「PickFile()」はすでに必要なことを実行できる十分な柔軟性を備えているようです (「ヘルプ > スクリプト インデックス」を参照)。
オペレーティング システムと対話する必要がある限り、Windows と OS/X の間には若干の違いがあることが予想されるかもしれませんが、ここではそのようです。 ただし、残念ながら、以下のコードをテストするための Windows マシンがありません (また、複数の選択に対して 'PickFile()' が実際にリストを返すと想定しています)。
デフォルトの名前はここにあります( 1 ) ;
// 'PickFile()' を使用して、開くファイルのリストを取得します (Windows のみ)
ファイルリスト=
ファイルの選択(
「複数のファイルを 1 つ選択してください」 、 // プロンプト
「$デスクトップ」 、 // 初期フォルダ
{ "JMP ファイル|jmp;jsl;jrn" 、 "すべてのファイル|*" } 、 // 適用するファイル フィルタのリスト (OS/X では無視されます)
1 、 // 適用する初期ファイル フィルター (上記のリスト内の項目のインデックス)
0 、 // 保存フラグ - 「保存」ウィンドウまたは「開く」ウィンドウのいずれかを指定します。 それぞれ 1 または 0 の値を設定します。
空の() 、 // デフォルトのファイル
1 // 複数 - 「保存フラグ」 = 0 の場合、値 1 を使用すると、複数のファイルを開くことができます (OS/X では無視されます)。
) ;
// 単一のファイルのみが選択されている場合、fileList はリストにならないため、自分で作成する必要があります
もし( ! IsList (ファイルリスト) 、ファイルリスト=評価リスト({ファイルリスト})) ;
// ファイルを開き、対応する JMP テーブル名を保存します
テーブル名= {} ;
のために( f = 1 、 f <= Nアイテム(ファイルリスト) 、 f ++、
dt =開ける(ファイルリスト[ f ]) ;
挿入する(テーブル名、 dt << getName ) ;
) ;
Re: 複数の DataTable を開くこんにちは、イアンさん
フィードバックをありがとうございます。よりわかりやすく説明できるよう最善を尽くします。 開くデータテーブルの番号をユーザーに尋ね、前に尋ねた番号に対応して開くテーブルを選択するようユーザーに求めるスクリプトが必要です。アルゴリズムは以下のようになります。
- スクリプトを実行する
- ユーザーは開くデータテーブルの数を尋ねられます (モーダルウィンドウを使用すると作業が簡単になります) 例: ユーザーは「say」と入力します。 3
- 次に、ユーザーは希望する 3 つのデータ テーブルを選択するよう求められます。
- 3 つのデータ テーブルのそれぞれに「列 A」と「列 B」を追加します。
これが問題の明確化に役立つことを願っています。 もう一度ありがとう!
Re: 複数の DataTable を開く何を求めているのか、もう少し詳しく教えていただく必要があると思います。
最初のステップとして、(どのテーブルを開くかの選択ではなく) 開いているテーブルからの選択を許可すると仮定して、次を見てください。
名前デフォルトここへ( 1 ) ;
// セッション内で開いているテーブルを表示し、ユーザーにいくつか選択させます
オープンテーブル= {} ;
のために( t = 1 、 t <= NTテーブル() 、 t ++、挿入する(オープンテーブル、データ表( t ) << getName )) ;
新しい=
新しい窓( 「必要なテーブルを選択してください」 、
ポンド=リストボックス(オープンテーブル) 、
ラインアップボックス( Nコル( 2 ) 、ボタンボックス( "わかりました" 、 OKスクリプト) 、ボタンボックス( "キャンセル" 、新しい<<ウィンドウを閉じる))
) ;
// 選択したテーブルに対して何らかの処理を行います (この場合は単に印刷するだけです)
OKスクリプト=
エクスプレッション(
新しい<<ウィンドウを閉じる;
選択されたテーブル=ポンド<< getSelected ;
ログのクリア() ;
もし( Nアイテム(選択されたテーブル) > 0 、
のために( t = 1 、 t <= Nアイテム(選択されたテーブル) 、 t ++、
印刷する( "テーブル " ||選択されたテーブル[ t ] || 「選択されました。」 )
) 、
印刷する( 「テーブルが選択されていません。」 )
) ;
) ;