みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
勤務日の一覧表を作成したと考えています。
テーブルAにIDと勤務日(Date)を入力。
テーブルBにカレンダーとしてのフィールド(30日分;Day_01~Day_30)、IDと計算フィールド(30日分)を設定して「case (Date = Day_01 ; ○ ; ×)」~「case (Date = Day_30 ; ○ ; ×)」としました。なお、テーブルAとテーブルBはIDでリレーションしています。
テーブルAに5名でそれぞれ5日分を入れたところ、それぞれの最初の勤務日しか○で表示されず、残りの勤務日および非勤務日は×となります。
こういった処理はcaseでは無理なのでしょうか?
ご教授宜しくお願い致します。
Offline
クロス集計をするのですね。
手法はいくつかあります。リレーションを項目数(日付数)だけ張りデータを参照する方法でも可能です。ただ、日付も含めたリレーションにする必要があり、日付のフィールドも同数必要になります。仕組みは簡単なのですが、設定が非常に面倒なので、今はほとんど使いません。
今のままでも、ちょっと改造すれば動くはずです。Case() でいいのですが、比較する対象が、リレーション先のトップのレコードのみになります。それを回避するために、例えば、
Case ( PatternCount ( List ( テーブル1::Date ) ; Day_01 ) ; ○ ; ×)
という式に変えてみてください。日付の入力方法によって、0が付いたり無かったりすると動かないかもしれません。(2018/1/1 ; 2018/01/01)
今は、繰り返しフィールドを利用したリレーションで Lokup() 関数を使って参照するか、繰り返しフィールドにデータを展開してそれを集計する方法が使われます。
似た様な話が https://fm-aid.com/bbs2/viewtopic.php?id=7580 にありましたが、そこでのサンプルをご覧になると良いかと思います。
https://www.dropbox.com/s/o1ykaxznlpne4 … 7.zip?dl=0
Last edited by Shin (2018-02-03 18:08:59)
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 544.06 KiB (Peak: 579.09 KiB) ]