前回、ポータル内の合計を出したいだけなのに苦労をしました。
https://pctips.jp/database/filemakerpro-portal-totalling/
ポータルのフィルタで期間範囲・・・(失敗)
集計確認レイアウト上に、「検索開始日」と「検索終了日」というグローバルフィールドを設置してポータル内データを絞ろうと考えました。
さらに詳しく
ポータルのフィルタで絞れば簡単
そう思ってポータルのフィルタに下記のように設定しました。
思ったような動作をして、ちゃんとデータが期間で絞られました。ヤッター!・・・あれ!?
ココに注意
集計金額が計算されていません
これじゃダメじゃん。
期間を絞っての集計金額がみたいのだから目的を果たしていません。
ここから、また時間だけ過ぎていく無限地獄に突入です。
スクリプトを作成してみたり、色々とやってみましたが集計出ません。
うまく範囲抽出もできなくなってしまったりしました。
ポータル内を集計するのはリレーションだった!(成功)
前回もポータル内を集計するのに、リレーションで絞り込んで集計を出すようなテクニックをつかいましたが、
ココがポイント
ポータル内の期間範囲に絞るのも、集計するのもリレーションだった!
上の画像の様に、「集計確認」テーブル内に、「検索開始日」と「検索終了日」というフィールドがあるが、それを検索値として、「書類データ」テーブルの日付を範囲抽出させれば良いようです。
このリレーションを組むだけで、「集計確認」レイアウトに設置した「検索開始日」と「検索終了日」という入力窓に日を入力するだけで、ポータルのデータが絞り込まれました。
もちろん、集計金額も絞り込まれたデータだけで集計されていました。
補足機能(検索値初期値、今月・前月期間関数)
テーブルのフィールド設定から初期値を設定しても自動で入力されません。グローバルフィールドなのでダメなのでしょうか!?よくわかりません。
そこで、レイアウトが起動するときに、フィールド設定にて、「検索開始日」と「検索終了日」に初期値を設定しました。
ココに注意
初期値を設定しないと何も表示されません
リレーションなので、空欄の場合は何も表示されないのです。
という訳で、「検索開始日」に、2000/01/01を設定して、「検索終了日」に、2099/12/31を設定しました。
これで、自分が生存している期間の全範囲はデータが全表示されるはずですね。
あと、今月と前月のデータを簡単に抽出できるボタンを設置しました。
上のが今月(今月1日~今月月末)で、下の画像が前月(前月1日~前月月末)になります。
この関数は覚えておくと期間範囲を抽出する時には便利ですね。