みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
いつも拝読させていただいております。
filemaker pro advanced 13v3 on windows8.1
filemaker server 13v2 on windows server 2008R2
社内LANで運用
上記環境ですが、実は、毎月の請求データを1ファイルとして、直近3ヵ月分をserverのホストフォルダに入れ共有、3ヵ月以前のファイルを非ホストフォルダに保存、クライアントからの操作により、ホストフォルダへの出し入れすることを考えております。バッチファイルをschtasksより実行することでパスワードが丸見えとなること以外は、ほぼ期待通りの動作は可能となったのですが、クライアントからのファイル移動の操作でファイルメーカーが期待通りに動作しないため、苦慮しております。
具体的には、
各請求月を選択させるファイルを作成し、サーバー上で共有。ファイルオプションでOnFirstWindowOpenトリガにスクリプトを設定し、ファイルを開いた時点で、あらかじめサーバーから読み込んだファイルリストをラジオボタンで選択させるフィールドに当月分の請求書を選択させるようにしました。サーバー上のバッチファイルに一時参照した過去の請求書ファイルを非ホストフォルダーへ移動させようと、ファイル名を渡すため、csvでエクスポートする際、なぜか、OnFirstWindowOpenが実行され、過去の請求月ファイルを移動したいのにもかかわらず、当月分のファイル名をエクスポートしてしまうのです。
請求書ファイルの選択フィールドと閉じるためのフィールドを分ければ良いのでしょうが、パソコン自体に忌避感のある職員も使用するため、インターフェイスはなるべく単純化したかったのですが、どなたか対応方法をご存じないでしょうか。
スクリプト
フィールド設定[ エクスポートファイル名保存フィールド ; "FILENAME=" & エクスポートファイル名]
レコード検索条件確定[ 入力値の制限を無視; ダイアログなし; 強制確定]
サーバー上のスクリプト実行[ 「サーバー上へエクスポート実行スクリプト」][ 終了するまで待つ]
スクリプト一時停止/続行[ 間隔(秒): 1 ]
Eventを送信[ ファイル/アプリケーションを開く; テキスト: 「SCHTASKS /Run /S SERVER /U ユーザー名 /P パスワード /TN タスク名(ファイルを閉じて移動するバッチ)」 ]
スクリプト一時停止/続行[ 間隔(秒): 5 ]
サーバー上のスクリプト実行[ 「サーバー上のファイル名一覧取得スクリプト」][ 終了するまで待つ]
Offline
サーバー上のスクリプト実行は、クライアントの状態と関係なく実行されるので、必要な条件はテーブルに保存するとか引数で渡すとかしないといけません。
新規に仮想クライアントが起動してスクリプトを実行し始めるので、OnFirstWindowOpenに限らず可能なトリガは全て発生します。
OnFirstWindowOpen を実行したくないだけでしたら、
OnFirstWindowOpen で指定しているスクリプトで
If [Position ( Get ( アプリケーションバージョン ) ; "Server" ; 1 ; 1 )]
現在のスクリプト終了
End If
などの処理を入れてサーバー上で実行された際に処理を行わないよう分岐しては如何でしょう?
Offline
Layouter様 Moz様
ご回答ありがとうございます。おかげさまで、実行のしくみと改善方法が分かりました。早速スクリプトを改良したいと思います。
Offline
レイアウトや対象レコード、グローバルフィールドの値、グローバル変数の値も
クライアントとは違う状態ですので、そのあたりも気をつけてくださいね。
サーバー上のスクリプト実行(Perform Script On Server略してPSOSと表現されることが多い)
を呼び出す場合は、スクリプト引数で、クライアントの現在の状況を渡してやる必要がありますし、
場合によっては結果をスクリプト結果で貰う必要がありますが、スクリプト内容によっては
クライアントで処理するより100倍速かったりしますので上手に付き合ってやってください。
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 512.9 KiB (Peak: 517.44 KiB) ]