そんなタイトルですが、DETHNOTEは怖くて観れない私です。
すみません、ちょっと使ってみたかっただけです。
結論
まず結論から言うと、レイアウトに配置したポータルのスクロールバーの有無設定で、取得される件数が違ってきます。
えー、、、知らんかった。
よくよく考えると、「そうですよね」となりますが。
現象
スクリプト
こんなスクリプトを回しました。
ポータル内に移動して、ポータルの行をカウントしています。
ポータルの移動で、最後まできたらLoopを出てカウントを終了します。
ポータル設定
ポータルのスクロールバー指定は、こちらです。
「垂直スクロールを許可」にチェックが入っているか、いないか、です。
ケース1 : ポータルにスクロールバーがある
「垂直スクロールを許可」にチェックが入って「いる」設定です。
ポータルはスクロールした先まで進めますので、実際の明細件数とLoopで計算した明細件数は一致します。
ケース2 : ポータルにスクロールバーがなかった
「垂直スクロールを許可」にチェックが入って「いない」設定です。
実際の明細件数は11件ですが、ポータルのスクロールバーで見えないレコードへの移動ができなかったので、ポータル指定の9件分のカウントしかされませんでした。
ケース3 : ポータルにスクロールバーがなかった & 見えている最終レコードからスタート
では、「垂直スクロールを許可」にチェックが入って「いない」設定で、ポータルに表示してある最終レコード、今回の例では9レコード目を起点にした場合はどうでしょう。
スクリプトで、起点を指定しました。
結果は、ご想像通りで、、、
起点の9件目しかカウントされず、Loopで計算した明細件数は1件になります。
まとめ
ポータルのスクロールバー、結構重要な役割を果たしていましたね。
また、レイアウトがデータそのものに紐づいているのではなく、レイアウトのツール設定に左右されるのも、レイアウトがキーとなるFileMakerならではの仕様だなと思いました。
うっかりする場面
通常使うレイアウトではデータの移動ができないと困るのでスクロールバーがなかったら気づくと思うのですが、スクリプトの中からポータルのデータを拾うために作業レイアウトなどにポータルを設置した際など、スクロールバーを設置していなくて今回のようなケースが起こるかもしれません。
まさに、現場でも同じようなことが起こり、教訓として記事にしました。