みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
新規Q&Aが立っていたので再投稿します。
旧Q&Aとの重複ご容赦下さい。
■環境情報
ServerOS:Windows2008
FMServer Ver:FMServer11
FM Ver:FMPro11
お世話になっております。
大量データの集計処理のためFMServerでスクリプト実行しましたが、共有ファイルリソースへの処理でエラーとなり対処方法に苦慮しています。
■スクリプトの処理概要
①スクリプト実行元のテーブルにて対象データの検索処理実行
②レイアウト切替(共有ファイル上のテーブル)
③共有ファイル上のテーブルデータ全件削除
④レコードインポート(①の検索結果→③のテーブル)
ServerLogを参照すると、③・④の処理でエラーが発生しています。
③のLog→Delete All Recordsでスクリプトエラー(3)
④のLog→Import Recordsでスクリプトエラー(100)
スクリプトエラー(100)から共有ファイルへのアクセスが上手く行っていないためであろうと推察しております。
共有設定は、
・スクリプト実行元ファイル上→fmnet:/ServerのIP/共有ファイル名
・共有ファイル上→fmnet:/ServerのIP/スクリプト実行元ファイル名
としています。
設定で思いつくのはここくらいで、対処方法が分かりません。
ご面倒をお掛けしますが対処方法についてご教示頂けますでしょうか?
特定のフォルダからしかインポートできません。
http://www.filemaker.co.jp/11help/html/ … tml#396741
エラー3は何だろ。
検証のため試してますが、共有ファイル上のレイアウト切替えでもエラーをはいてます。
共有ファイルへのアクセスで何か問題が発生しているようですが。。。
サーバが1台なら、ファイル参照はfmnet:~~でなく「file:ファイル名」だけにした方がいいです。
himaganeeさん
検証のため、共有ファイル上のレイアウト切替えだけを行う簡単なスクリプトでスクリプトエラー(100)がでます。
fmnetでも「file:ファイル名」でも上手く行きませんでした。
FMファイルの設定不備やServer側の設定不備とかも考えられますか?
あちらでも書きましたが、外部ソースへのパスの書き方の誤りでしょう。フルパスで書かないとダメです。
Offline
Shinさん
フルパスの解釈ですが、、
「fmnet:/ServerのIP/共有ファイル名」となっているのを、「fmnet:/ServerのIP/フォルダ名/共有ファイル名」であってますか?
該当するFMファイルが入っているフォルダですが、共有設定を掛けていません。
こちらも必要でしょうか?
旧Q&Aでご回答のあった
>③のLog→Delete All Recordsでスクリプトエラー(3)
に関してですが、対処方法はありますか?
Shinさん
フルパスの解釈ですが、、
「fmnet:/ServerのIP/共有ファイル名」となっているのを、「fmnet:/ServerのIP/フォルダ名/共有ファイル名」であってますか?
該当するFMファイルが入っているフォルダですが、共有設定を掛けていません。
こちらも必要でしょうか?
FMSで公開しているフォルダーは、OSレベルの共有はしてはいけません。
外部ソースのパスについては、そのFMSの中の構造を見ないとなんとも言えません。admin console でデータベースを見た時に、フォルダーの関係はどうなっていますが。
旧Q&Aでご回答のあった
>③のLog→Delete All Recordsでスクリプトエラー(3)
に関してですが、対処方法はありますか?
その前後のスクリプトを見ないと、何とも言えません。
Offline
ヘルプの例が「fmnet:/192.168.10.10/Databases/test.fmp12」とかなってますが、
fmnet:ではフォルダ名は指定できませんよ。(無視される)
fmnet:/server/sonzaisinai/path/filename
でアクセスすると、ディレクトリは関係なくserverで共有してるfilenameが開きます。
(もっとも、同名ファイルを別ディレクトリで2個共有して選択できるか、なんて恐ろしいことは試してもないですが)
Get ( ファイルパス )は指定した通りディレクトリも含めた値になってるので、引数の代わりに使える?
>③のLog→Delete All Recordsでスクリプトエラー(3)
レイアウトの切り替えも失敗するというんだから、別のテーブルのレコード(検索結果?)を削除しようとしてることになるのでは。
でも最初の発言では2はエラーになってませんね。
そもそも、両方とも同じサーバ上の「共有ファイル」ですよね?
インポートできないのは最初に書いたとおりで、一旦エクスポートしないと不可能です。
レス頂いた皆様
ご回答ありがとうございます。
皆様の回答内容を元に検証を行い、9割方は解消しました。
詳細は次の通りでした。
■補足情報FMServer-AdminConsole上のファイルパス相関関係
全ファイル○○DBというフォルダに格納されています。
このため共有参照する際、(AdminConsole上の)同一パス内でアクセスしている環境です。
■共有ファイルアクセスエラーの原因(スクリプトエラー:100)
fmnet:/ServerのIP/共有ファイル名ではエラーになりました。
Server1台構成かつ同一フォルダ内での参照でしたので、himaganeeさん回答通り「file:ファイル名」で解消されました。
■スクリプトエラー:3の原因
Shinさんが旧Q&Aでコメント頂いた、サーバーサイドスクリプトの非互換が原因であったと推察します。
>③共有ファイル上のテーブルデータ全件削除
>③のLog→Delete All Recordsでスクリプトエラー(3)
ですが、オンライン処理でテーブルデータ全件削除は「全て表示」→「全て削除」で問題なく実行できていましたが、
サーバーサイドで実行する場合は「全て表示」→「全てを選択」→「全て削除」という手順を踏む必要があったようです。
また、削除対象テーブルのレコードが0件の時に削除処理を行うとスクリプトエラー(3)が発生しました。
サーバーサイドでのスクリプトはシビアと痛感しました。
対象レコード数が0の時のエラー3はわかりましたけど、「全てを選択」って何ですか?
これはフィールド内のテキストを選択するステップなんで、レコード削除には関係ないはずです。
追加の質問で恐縮しますが、残り1割の処理が上手く行きません。
>④レコードインポート(①の検索結果→③のテーブル)
ですが①の抽出データは条件絞込や加工を行った後、共有先ファイルである③の別テーブルへ格納しました。
・ループ→フィールド設定処理にて実施、以下テーブルAと呼びます。
・③の削除テーブルを以下テーブルBと呼びます。
ここからは同一ファイル内での処理になりますが、テーブルA全レコードをテーブルBにインポートするスクリプトを組み、
サーバーで実行したところスクリプトエラー:100が発生します。
オンライン処理では問題なく実行されています。
同一ファイル内(テーブル、スクリプト)の処理ですが、エクスポート→インポートしないと出来ない処理なのでしょうか?
■補足:処理の目的
明細データ(テーブルA)の集計(テーブルB)を目的に行っています。
本来はクロス集計で組むべきものですが、検索時の操作性の問題やCSVファイルの出力要件があるため、
この方法を採用しています。
対象レコード数が0の時のエラー3はわかりましたけど、「全てを選択」って何ですか?
これはフィールド内のテキストを選択するステップなんで、レコード削除には関係ないはずです。
himaganeeさん
スクリプトメニュー欄にある「全てを選択」の事ですが、処理としては全レコード選択という動きをしています。
これをやらないとダメでした。
う~~んFMS11の環境が無いんで試せないんですけど、
レコードの削除は「現在の1レコード」と「対象レコード」の2つしかないですし、
複数のレコードを選択した状態というのも、ないですよねえ?
「全レコード選択という動き」というのは、何を見てそう思ったんでしょうか。
う~~んFMS11の環境が無いんで試せないんですけど、
レコードの削除は「現在の1レコード」と「対象レコード」の2つしかないですし、
複数のレコードを選択した状態というのも、ないですよねえ?
「全レコード選択という動き」というのは、何を見てそう思ったんでしょうか。
FM11Advanceでステップ実行しながら見ました。
画面上の見かけでは全レコード選択という見え方はしてませんでしたけど。。。
ただ、「全てを選択」の有無でスクリプトエラー(100)が起きる/起きないというのは確認してますよ。
この辺の仕様、よく分かりませんね・汗
>FM11Advanceでステップ実行しながら見ました。
それだとサーバ上での実行じゃないから、ほとんど意味がないです。
(レコード削除の時のエラーは100じゃないですよね)
スケジュールスクリプトのデバッグで、すごく難しそう...
>FM11Advanceでステップ実行しながら見ました。
それだとサーバ上での実行じゃないから、ほとんど意味がないです。
(レコード削除の時のエラーは100じゃないですよね)スケジュールスクリプトのデバッグで、すごく難しそう...
失礼いたしました。
オンラインデバック、確かに意味がありませんね・汗。
サーバーサイドスクリプトの検証大変でしたがいい経験にはなったかと思います。
すいません、ご面倒をお掛けしますが「#12」についてご教示頂けますでしょうか?・汗
集計データの移行でしたら、集計レイアウトで集計して結果をエクスポート、別テーブルでインポート、を行えばいいはず。これはサーバーサイドスクリプトでも可能です。
Last edited by Shin (2013-10-24 19:11:34)
Offline
インポートでエラー100(ファイルが見つからない)の件は、#2のリンク先に書いてある通りです。特定のフォルダからしか探しません。
#19のShinさんの方法でやってみて。
サーバスクリプトでなく手作業でやってても、「現在のファイルからインポート」というのができないので、(いちいちダイアログで選択するのが)面倒なんですよね...
返信が遅くなり申し訳ございません。
ご提案頂いた内容にて解決しました。
皆様ご支援、ありがとうございました。
今後とも宜しくお願いします。
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 612.91 KiB (Peak: 629.82 KiB) ]