みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Pro 13
Windows7
いつもお世話になっております。
共有の発注データベースで
・本日発注した件数
・本日分の中でOKフラグを立てていない件数
・本日分以外の中でOKフラグを立てていない件数
のカウントの仕方について質問です。
現在、カウント専用のテーブルにレコードを1件作成しデカルト積リレーションで関連付け、
ExecuteSQL関数のSELECT COUNTで件数をカウントしてヘッダ内に常時表示しています。
(フラグを更新するごとにスクリプトトリガで再カウント)
発注レコードが月30000件ずつ増えていくのですが
このやり方ではいずれ重くなってきますでしょうか。
他にベストな方法があるかご教示いただけますと幸いです。
Offline
レスが付きませんので及ばずながら、、
全てリレーションでの集計ができますよね。
この方法なら、
ノータッチで再計算されますし、
レコードが大量になってきてもレスポンスがそう悪くならないと思いますよ。
ただし、
開きっぱなしのファイルですと「本日」の更新ができませんので、
何らかの方法でこの入力が必要になりますね。
Offline
チポさん、ありがとうございます。
ノータッチで再計算は魅力的です。
「本日」カウントだけ特殊なのですね。
リレーションの集計は、
グローバルフィールドを使用して期間内の集計をする方法はわかるのですが
常に決まった条件に合わせて数える方法がわかりません。
お力添えいただけますと幸いです。
Offline
グローバルフィールドを二つ作り、
「本日」(本日gフィールドとします)と「OKフラグ」(OKg)値を入力
> ・本日発注した件数
リレーションを
本日g = 発注日付
として、
Count関数
で適当なフィールドをカウントします。
以下リレーションを
> ・本日分の中でOKフラグを立てていない件数
本日g = 発注日付
and
OKg ≠ OKフラグ
> ・本日分以外の中でOKフラグを立てていない件数
本日g ≠ 発注日付
and
OKg ≠ OKフラグ
として同様に求められます。
リレーションシップグラフのテーブルオカレンスにご注意ください。
Offline
チポさん、御丁寧にありがとうございます。
なるほど、このパターンもグローバルフィールドを使うのですね。
自己リレーションシップを多用しない方が重くならないと思いこんでいたので
大変参考になりました。
ファイルを開いたときのトリガで「本日g」に日付を入れるような流れにすると、
開きっぱなしのファイルでも大丈夫でしょうか。
各自が日付をまたいで開き続けることはありません。
Offline
私が開きっぱなしといったのは、
日付をまたいで閉じることのないファイル
という意味でいったので、
> 各自が日付をまたいで開き続けることはありません
ということでしたら、
> ファイルを開いたときのトリガで「本日g」に日付を入れる
これで問題ないでしょう。
Offline
チポさん、わかりました。
どうもありがとうございます。
大変助かりました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 512.32 KiB (Peak: 516.86 KiB) ]