みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM13
FMS13
window8.1
ファイルメーカーサーバー12から13に変更しipadで入力するときの動作を軽くしようとサーバー上のスクリプトを実行を使い動きが早くなりました。しかし使っていると通常は正常に動くのですが、時々勝手にサーバーのスクリプトが動いてしまいます。また検索にしても時々ヒットするべきものがヒットしてくれません。注意すべき点などあるのでしょうか?
Offline
あけましておめでとうございますっ!
[サーバー上のスクリプト実行]は勝手に動作しませんし、
FileMaker Server でホストしての利用とスタンドアローン利用での検索に違いはありません。
サーバー上で勝手にスクリプトが動作していると思われた理由や
結果が異なる検索(対象となるレコード、フィールドタイプ等)の詳細を明らかにしたら原因が分かるかも知れませんよ。
Last edited by Moz (2015-01-01 13:05:00)
Offline
あけましてありがとうございますっ。ご回答ありがとうございました。ご回答いただいた内容でもう一度検討してみようと思います。
Offline
サーバー上のスクリプト実行で検索スクリプトってどうやって結果をもらってます?
他のクライアントでファイルを開いた状態、つまり今あなたがスクリプト実行しようとした時と
レイアウトも違えば対象になっているレコードも違いますし、検索実行だけでは、
他のクライアントが検索実行したのと同じで、サーバー上で絞り込まれただけになりますよ。
クライアント用のスクリプトとスクリプトの書き方が変わってきますので、注意が必要です。
質問内容をもう少し具体的にしてみてはという意味だったのですが......検討のしようがないですよ(汗)
勝手に動いているってのは別として......
[サーバー上のスクリプト実行]で検索をさせて続きの処理を
クライアント(FileMaker Go)で行うようなスクリプトを書いているってことでしょうか?
その場合はとおりすがりさんが書かれている通り
[サーバー上のスクリプト実行]での検索結果を取得するような工夫が必要になりますね。
"共有とスタンドアロンでは手動で検索した結果が異なっている(気がする)"という相談かと思っていました。すんません。
Offline
とおりすがりさん、Mozさん回答ありがとうございます。
Mozさんが仰る通りfilemaker goで利用を考えております。説明不足ですいませんでした。以下現在のスクリプトです。
オーダー送信スクリプト
If[Let([host = Get (ホストアプリケーションバージョン) ; HostVer =GetAsNumber(host)];Position (host;"Server";1;1) and hostVer>13)]
サーバー上のスクリプト実行[終了するまで待つ;「売上サーバー用」;引数:List(Get(レイアウト名);Get(レコード番号))]
End If
オーダー送信サーバー用スクリプト
レイアウト切り替え[Get (スクリプト引数)]
レコード/検索条件/ページへ移動[Get(スクリプト引数)]
フィールド内容の全置換[ダイアログなし; sell::状態1]
フィールド内容の全置換[ダイアログなし; sell::注文状況;"済"]
現在のスクリプト終了[]
となっております。
現在このような状態です。使用用途はipadで飲食店のオーダーをとっております。オーダーを送信するときにボタンを押すとこの作業を実行するようにしています。ipadは2台あり、1台は今のところ問題ないようなのですが、もう一台利用中(オーダーを受けているとき)にボタン設定していないフィールド(人数変更)を編集しようとすると突然売上サーバー用スクリプトのところの4行目に書いてある
フィールド内容の全置換[ダイアログなし; sell::注文状況;"済"]
が実行されてしまいます。(売上サーバー用スクリプトが動いている状態?)
アドバイスよろしくお願いします。
Offline
Get(レコード番号)をサーバーへ送っているのが問題で、これは、対象レコードの範囲やソート状態で、さしているレコードが変わります。
サーバー側のスクリプトを見ても、なんか変です。これを呼び出した状態では、恐らく全レコードが対象レコードになっていると思いますが、全置換しても良いのですか。
また、意図していると思われる対象とするレコード数が知れていると思いますので、サーバー上で実行するメリットが無いと思います。
Offline
何をやろうとしているのか......
Shinさんが既に指摘されていますが、
List(Get(レイアウト名);Get(レコード番号))
引数として正しくないですね。
レイアウト名と現在のレコード番号が改行区切りで返ってくるだけです。
受け手側でレイアウト名は正しく処理されないのでレイアウト切り替えはエラーになるでしょう。
レコード移動もスクリプト実行時のレコードに移動するだけですから、(レイアウト名によっては意図せぬレコードへ)
対象のレコードすべてが全置換されてしまいます。
"勝手に動いている" のではなく、そのように書かれているのです。
サーバー上のスクリプト実行も1つのクライアントですから、開いた直後はすべてのレコードが表示されています。
全置換したらすべてのレコードが「済」になりますよ。
また、レコード移動してもクライアントで対象レコードを絞った状態のレコード番号と
サーバー上のスクリプト実行で全レコードが表示されている状態でのレコード番号では違うレコードになってしまいます。
前項で とおりすがりさん が書かれているようにサーバー上のスクリプト実行を呼び出すクライアントと
[サーバー上のスクリプト実行]の対象レコードが一致するように処理を書く必要がありますね。
Shinさん書かれている通りあまり意味がない気もしますが......
本来の対象となるレコードは1レコードだけなのですか?
Last edited by Moz (2015-01-03 19:07:56)
Offline
いつもご回答ありがとうございます。回答を拝見させていただいてまだまだ未熟さを痛感しました。すぐにどうするかが思いつかないのでもう一度考えてみて改めて質問させていただきます。
Offline
サーバー上のスクリプトを実行 は、非常に高度な動きをさせる物で、リモートのクライアントをコントロールして作業させるのと同じです。あらかじめ、2台でその環境を作って手動で実行させるようなリハーサルが必要で、サーバーサイドより動かすのは難しいと思いますよ。
また、その対象となる動きも現実には限られた物になり、実行時間のみを考えてしまうと場合によっては遅くなる可能性もありますので、よく考えないといけないでしょう。
Offline
shin様Moz様いつもご回答いただきありがとうございます。言い遅れましたがあけましておめでとうございます。本年もどうぞよろしくお願いします。いろいろアドバイスいただければ幸いです。
本来の対象となるレコードは1レコードだけなのですか?ということですが、1レコードに対して処理をしたいと思ってます。
”[サーバー上のスクリプト実行]の対象レコードが一致するように処理を書く必要がありますね。”というアドバイスありがとうございます。
サーバー上のスクリプトを実行はかなり難しいそうですね。現状でオーダーを受けるときにipadでやると動きが遅い時がありサーバー上のスクリプトを実行をうまく使えば改善されるかと期待したところでしたが使い方があまりにも未熟でした。このスクリプトを使用するうえで何か決まり事みたいなものはあるのでしょうか?いろいろ調べてみたのですが実際に組み立てている見本みたいなのがなくipadの情報をうまくサーバーに持っていく方法もヒントなどありましたら教えていただけますでしょうか?
Offline
FileMaker Go での動作が遅い場合[サーバー上のスクリプト実行]は有効な解決手段のひとつです。
ただし、ケースバイケースなので適切ではない場合もあることを知っておいた方がいいでしょう。
個人的には "とにかく難しいもの" と身構える必要はないと思いますよ。
使えるスクリプトステップが限られているだけで FileMaker のスクリプトに変わりはありません。
別のPCで 1 からファイルを開き直しているものと考えましょう。
[サーバー上のスクリプト実行]に限ったことではありませんが、
レコードを特定するためのフィールド(プライマリキー)は必須です。
テーブルを作成したら必ず作っておきましょう。
プライマリキーは値がユニークでないと意味がないので、
入力値の自動化で計算値 Get ( UUID ) などを設定しましょう。
1レコードだけであれば、レコードのプライマリキーを引数で渡せばよいでしょう。
[サーバー上のスクリプト実行]で引数のプライマリキーを持つレコードを検索するだけです。
FileMaker Go でのパフォーマンス向上やサーバー上のスクリプト実行については
公式のドキュメントやカンファレンスの録画セッションも参考になるでしょう。
・FileMaker Community ドキュメント
デザイン:パフォーマンス
https://community.filemaker.com/docs/DOC-4202
iOS:パフォーマンス
https://community.filemaker.com/docs/DOC-2296
・FileMaker カンファレンス 2014 録画セッション
「サーバー上のスクリプト実行」を使ったサーバーサイド処理の有効活用法
http://youtu.be/GjjU_bY8j18
Offline
ご連絡いただきありがとうございます。リンクも合わせてありがとうございます。もう一度自分なりに工夫してみたいと思います。明日と不在にてパソコンを触ることができなと思いますが、やってみます!
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 554.65 KiB (Peak: 575.55 KiB) ]