データテーブルスクリプトを複数のファイルのデータと結合し、1つのJSLファイルに保存するためのスクリプトみなさんこんにちは!
かなり長い間試行錯誤した結果、このコードをどう動作させるかに行き詰まっています。ユーザーが開いているファイルのリストから選択できるスクリプトを作成しようとしています。選択されたファイルごとに、コードがデータテーブルスクリプトをコピーし、それらをすべて単一のJSLファイルに貼り付けます。その後、このファイルを実行してすべてのデータテーブルを再度開きます。基本的には、複数のデータテーブルを1つのファイルにまとめる(ZIP圧縮する必要がない)ことで、より複雑な分析を簡単に保存できるようにする方法です。このコードは私が望むことをほぼ実現してくれますが、テーブルスクリプトをJSLファイルに保存することができず、ファイルのコピーを開こうとします。
Names Default To Here(1);
nw = new window("Trial",show menu(0),
vlistbox(
hlistbox(
panelbox("Open data tables",
lb = listbox(get data table list ());
),
panelbox("Data tables to save into one script file",
lb2 = listbox();
),
),
buttonbox("press to select tables",dtla=lb << Get Selected;lb2 << Append( dtla ); ),
buttonbox("press to remove tables",lb2 << Remove Selected(); ),
panelbox("what is the file name?",
teb1=Texteditbox();
),
buttonbox("press to save",
dtlb=lb2 << Get items;
fn=teb1 << Get Text();
list_of_table_scripts={};
For( i = 1, i <= N Items( dtlb ), i++,
y = datatable(dtlb[i]) << Get Script With Data Table();
insertinto(list_of_table_scripts,y);
);
Save Text File( "$desktop\"||fn||".jsl", y );
nw<< Close Window;
)
)
);
teb1<< Set Width( 200 );
ご指導いただければ幸いです!!
スティーブ
自動化とスクリプトRe: データテーブルスクリプトを複数のファイルのデータと結合し、1つのJSLファイルに保存するスクリプトスクリプトのサイズがすぐに膨大になってしまうため、非常に小さいデータテーブルでない限り、データテーブルをスクリプトとして保存することはお勧めしません。しかし、どうしてもスクリプトとして保存したい場合は、次のようなものを使うことができます。
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
tables = Get Data Table List() << get name;
tablescripts = {};
For Each({tablename}, tables,
s = DataTable(tablename) << Get Script;
Insert Into(tablescripts, Char(Name Expr(s)));
);
Save Text File("$DOWNLOADS/demo.jsl", Concat Items(tablescripts, ";"));
Re: データテーブルスクリプトを複数のファイルのデータと結合し、1つのJSLファイルに保存するスクリプト後からテーブルをどのように使用するかに応じて、JMPプロジェクトまたはzipファイルに収集できます(どちらもJSLで実行できます)。JMPプロジェクトのファイルを使用する場合を除き、この方法を選択する場合は、別途テーブルローダースクリプトを作成する必要があるかもしれません。個人的にはJMPプロジェクトの実装が全く気に入らないので、あまり使用していませんが、アーカイブ目的でJMPファイルをパッケージ化する際には時々使用しています。
Re: データテーブルスクリプトを複数のファイルのデータと結合し、1つのJSLファイルに保存するスクリプト@jthi さん、ありがとう!
あなたのコードを私のものに追加したら、うまくいきました!! ファイルサイズについて教えてくれてありがとう、その点は注意しておかなければなりません。
Names Default To Here(1);
nw = new window("Trial",show menu(0),
vlistbox(
hlistbox(
panelbox("Open data tables",
lb = listbox(get data table list ());
),
panelbox("Data tables to save into one script file",
lb2 = listbox();
),
),
buttonbox("press to select tables",dtla=lb << Get Selected;lb2 << Append( dtla ); ),
buttonbox("press to remove tables",lb2 << Remove Selected(); ),
panelbox("what is the file name?",
teb1=Texteditbox();
),
buttonbox("press to save",
dtlb=lb2 << Get items;
fn=teb1 << Get Text();
tablescripts = {};
For Each({tablename}, dtlb,
s = DataTable(tablename) << Get Script;
Insert Into(tablescripts, Char(Name Expr(s)));
);
Save Text File( "$desktop\"||fn||".jsl", Concat Items(tablescripts, ";") );
nw<< Close Window;
)
)
);
teb1<< Set Width( 200 );
Re: データテーブルスクリプトを複数のファイルのデータと結合し、1つのJSLファイルに保存するスクリプト@jthi 、ZIP ファイルに保存するための JSL は何でしょうか? スクリプト インデックスには何も見つかりません。
Re: データテーブルスクリプトを複数のファイルのデータと結合し、1つのJSLファイルに保存するスクリプトテーブルを一時的に保存して、BLOBとしてロードできるようにする必要があると思います
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Save("$TEMP\blob.jmp"); // save jmp table to load it as a blob
Close(dt, no save);
b = Load Text File("$TEMP\blob.jmp", blob);
za = Open("$TEMP\deleteMe.zip", zip);
za << Write("Big Class.jmp", b);
Delete File("$TEMP\blob.jmp");
ここに追加できる改善点はかなりあります。