変数名リストを除くすべてのデータテーブルを閉じます。今日は、データ テーブル名変数を使用して繰り返しプロシージャが実行されるため、選択した数のデータ テーブルを除くすべてを閉じようとしています。テーブルが 3 つあります。1 つは結果が収集される場所、もう 1 つは最初のテーブルの無効な結果が収集される場所、そして 1 つは比較に使用する ID 値を知るためにユーザーがスクリプトで開く場所です。テーブルを閉じることができるディスカッションを見つけました (これは私のスクリプトに含まれています) が、テーブル名のリストに引用符で囲まれたテキストが使用されています。ユーザーは 3 番目のテーブルの反復ごとに異なるデータ テーブルを選択することになるため、データ テーブル名変数を使用してそれをリストに含め、処理の最後に開いたままにしておくにはどうすればよいでしょうか?
DontClose = {CompareTable, CollectionTable, IDTable}; // Example names of tables you want to leave open
//CompareTable = "Validation Table"
//Collection Table = "Unmatched Values"
//IDTable = could be anything but I want to leave this open once the processing loop is completed
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
print( Data Table(i) << Get Name ) ;
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Re: 変数名リストを除くすべてのデータテーブルを閉じるこれは機能する可能性がありますが、使用が完了した後にテーブルごとに Close() ステートメントを生成することに近づきます。 線数を減らして、もう少しエレガントなものを使おうとしていました。 私が試したもう1つの同様のオプションは、すべてのテーブル名をリストに入れ、比較するKeep Listを用意することです。問題は、開いたままにする必要がある3つのテーブルのうちの1つがユーザーによって選択されているため、使用するたびに変更されることです。 これが、別名テーブル名を使用する唯一の理由です。 これを誰かと共有するとすぐに、スクリプトが存在するテーブル名が変更されるため、必要のないデータ テーブル名をハードコーディングしないことを希望します。 なかなかのパズルですね! お返事をありがとうございます!Re: 変数名リストを除くすべてのデータテーブルを閉じるスクリプト全体を投稿することはできません。 独自のサーバーにアクセスするため、匿名バージョンを作成するには多大な時間がかかります。 しかし、あなたは私がそれを考慮していないという考えを私に与えたので、それがハングアップしている理由です。 私の理論をテストして、また報告します!
ありがとう!Re: 変数名リストを除くすべてのデータテーブルを閉じる破棄するデータ テーブルをすべて生成するのであれば、作成時に各テーブル参照をリストに挿入しないのはなぜでしょうか。 その後、リストを閉じるときにリストを反復処理できます。
Re: 変数名リストを除くすべてのデータテーブルを閉じるあなたのスクリプトを投稿していただけますか?
リンクされたサマリーテーブルを含むテーブルを閉じると、サマリーテーブルも自動的に閉じられます。
Re: 変数名リストを除くすべてのデータテーブルを閉じるなんと! 話すのが早すぎました。 このスクリプトを使用してテーブルを開いたり閉じたりしてテストしました。
私のスクリプトは、スクリプトを完全に実行するために開いたままにしておく必要がある 2 つのテーブルを開きます。 1 つは等しくない比較のターゲットであり、もう 1 つは ID のリスト (ユーザーが選択) を格納します。 次に、サーバーからデータを取得し、大量の要約、転置、およびその他のデータ操作を実行し、結果をスクリプトが存在するテーブルにコピーし、差分をターゲットテーブルにコピーします (両方とも開いたままにしておく必要があります)。その後、すべての要約を閉じます。テーブルと、次の ID に進む前にサーバーから生成されたテーブル。
次のようなエラーが発生し続けます。
'Data Table' のアクセスまたは評価でデータ テーブル {28} が見つかりません、 Data Table/*###*/(i)
テーブル番号が失われているからですか?Re: 変数名リストを除くすべてのデータテーブルを閉じる@ウェンディ・マーフリーこれがチケットです!必要なだけ動作します。このスクリプトは何百ものテーブルを開いたり生成したりできるので、これは私のニーズに最適です。
ありがとう、ありがとう、ありがとう!JSLでは毎日何か新しいことを学んでいます!
Re: 変数名リストを除くすべてのデータテーブルを閉じる@guillaumebugnonすべてのテーブルにその変数セットが必要であることがわかります。私が書いているスクリプトは開いて多数のテーブルを生成するため、これによりステップが追加されますが、それほど集中的な目的ではないほうがよいと思われます。私が最終的にやりたいのは、ID のリスト (200 を超える可能性があります) を用意し、各 ID に対して少なくとも 75 の要約を生成するプロセスをスクリプトに実行させることです。これでも機能しますが、Wendy Murphrey のソリューションが私のアプリケーションに最適のようです。
私のジレンマを解決するために時間を割いていただきありがとうございます!
Re: 変数名リストを除くすべてのデータテーブルを閉じるデータ テーブル参照を使用できるようにするアプローチは次のとおりです。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt3 = Open( Pick File( "Select File", "$DOCUMENTS" ) );
dontClose = Eval List( {dt, dt2, dt3} );
Show( dontClose );
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
If( Contains( DontClose, Data Table( i ) ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);
お役に立てば幸いです!
Re: 変数名リストを除くすべてのデータテーブルを閉じるこんにちは、
各 jmp データテーブルに 1 つのテーブル変数を設定することもできます。
dt << Set Table Variable("ToClose","N");次に、ループして値を確認できます。
For( i = N Table(), i > 0, i--,
vtoclose = Data Table(i) << Get Table Variable ("ToClose") ;
If ( Contains(vtoclose,"Y") >=1 ,
Close(Data Table(i),NoSave),
print("ToClose is not set to Y : do not close")
);
);