テーブルが読み取り専用かどうかを確認しますか?おい、
私は、ある段階でいくつかのデータテーブルを開き、それらにデータを入れ、それらを保存して閉じる大きなjslスクリプトを持っています。
現在、通常は問題なく正常に動作しています。 しかし、それが開くデータ テーブルは会社のサーバー上にあり、他の誰かがファイルを開いていることが時々起こります。つまり、スクリプトは読み取り専用バージョンを開き、そこに保存することはできません。
ファイルが読み取り専用モードで開いているかどうかを確認する方法をスクリプトに追加して、スクリプトをキャンセルしてユーザーに警告する方法はありますか? 他の誰かが使用しているファイルを開くと、「X が使用しているファイル、読み取り専用バージョンを開きますか?」というメッセージが表示される Excel に似たもの。
ありがとう、
エドビンRe: テーブルが読み取り専用かどうかを確認しますか?ようやく機能する解決策を見つけたので、将来誰かがこのスレッドを見つけた場合に備えて投稿しています。
dt = Data Table("Untitled");
Try(test = LogCapture(dt << save));
If(Contains(test, "problem"),
New Window("Error",
<<MODAL></MODAL>テーブルが読み取り専用でロックできない場合、test は次のようになります。
test = "
I/O problem.
File not open in Write mode.
";
したがって、Contains(test, "problem") が機能する理由です。
Re: テーブルが読み取り専用かどうかを確認しますか?ええ、それは私たちが見逃している単純なものだとも感じています、とにかくありがとう. 他にアイデアはありますか?
Re: テーブルが読み取り専用かどうかを確認しますか?申し訳ありませんが、アイデアが不足しています。 おそらく、別の貢献者が方法を考えることができます。 (おそらく、私には思い浮かばなかった単純なものです。)
Re: テーブルが読み取り専用かどうかを確認しますか?おい、
私はこの解決策を試し、いくつかの異なる方法で Try 関数を構築しようとしましたが、最初の式でエラーが発生したとしても、2 番目の式に到達しないようです。 テーブルはまだ閉じられていますが、保存されていません。 ログファイルは次のようになります。
Names Default to Here(1);
dt = Data Table("CharData G4 v3.0");
dt << add rows(1);
Try(
Close( dt, Save ),
Print( "Data table locked" );
);
I/O problem.
File not open in Write mode. Re: テーブルが読み取り専用かどうかを確認しますか?OK、多分 Try( expr1, expr2 ) 関数を使ってください。 最初の引数は、常に評価される式です。 最初の引数に保存操作を使用します。 2 番目の引数は、最初の引数がエラーを生成した場合にのみ評価される式です。 このようにして、エラーをトラップできます。
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// changes made to data table, save table
Try(
Close( dt, Save ),
Print( "Data table locked" );
);
// rest of script
Re: テーブルが読み取り専用かどうかを確認しますか?こんにちは、返信ありがとうございます。 残念ながら、どちらのソリューションも機能しません。 << Get Lock は '0' を返し、 << Get Edit Lock は 'Empty()' を返します。
私は今、別のコンピューターと自分自身でテーブルを開いています。 自分のコンピューターで好きなだけ編集できます。何もロックされていません。 しかし、保存しようとしても保存できず、以前と同じエラー メッセージ「I/O problem. ファイルが書き込みモードで開かれていません。」Re: テーブルが読み取り専用かどうかを確認しますか?上記の私の提案を忘れてください。 編集ロックは、古いロック メカニズムとは別のものです。 簡単な方法は、データ テーブルを開き、<< Get Lock メッセージを任意の列に送信することです。 データ テーブルがロックされている場合は、すべての列もロックされています。 結果は true (1) になります。
Re: テーブルが読み取り専用かどうかを確認しますか?[ヘルプ] > [スクリプト インデックス] を参照してください。 「ロック」を検索し、Get Edit Lock および Set Edit Lock メッセージを調べます。 最初のものは、必要なステータス情報を取得します。 2 つ目は、返される可能性のあるオプションについて説明します。
Re: テーブルが読み取り専用かどうかを確認しますか?もう少し明確にしたいのですが、ユーザーには「I/O problem. ファイルが書き込みモードで開かれていません。」
スクリプトがテーブルを保存しようとしたときにのみ表示されるため、テーブル 1 と 2 を保存できますが、テーブル 3 を保存できず、データ処理が混乱します。
テーブルを保存しようとする前に、書き込みモードをチェックするものを追加したいと思います。 JMP13を使用しています。