みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくお願いします。
テーブル1には、
社員id
日付
月
ステータス
テーブル2には
社員id
day1
day2
day3
...
day31
とあります。やりたいことは
テーブル1の月と社員idで検索をかけて
出てきた検索結果をテーブル2のday1からday31までに割り振って
そのステータスを表示させたいことです。
テーブル1で
月 1
社員id 1111
で、検索。
テーブル2のフィールドが横に並べられているので
そこに表示
day1 day2 day3 day4 ... day31
○ ○ × ○ ○
と、行った具合にしたいのですが…
要は横に表示させられるのでしたら違う方法も教えてください。
よろしくお願いします
簡単なのはday1〜31を日付の繰り返しフィールドにして
結果を表示するフィールドも繰り返しにして
社員idとともにリレーションして再ルックアップする。
テーブル1での検索は不要です。
Offline
回答ありがとうございました。私の説明が今一つで大変申し訳ありません。
再ルックアップの仕方が良くわからなくて
「フィールドday_1」に基づいて値をルックアップするフィールドがありません」といったエラーが出て来てしまいます。
私なりに現在考えた内容です。
テーブル1には 社員ID、日付、ステータス(○or×)、月が入っています。
社員ID 日付 ステータス 月
1111 12/3 ○ 12
1112 12/3 × 12
1113 12/3 ○ 12
1111 12/4 ○ 12
1112 12/4 ○ 12
1113 12/4 × 12
・
・
・
テーブル2には 社員ID、day_1~day31までのフィールドが有ります。
中身は空です。
スクリプトでまず テーブル1の社員IDと月で検索をかけます。
結果に対して日付でソートをかけます
社員ID 日付 ステータス 月
1111 12/1 ○ 12
1111 12/2 × 12
1111 12/3 ○ 12
1111 12/4 ○ 12
1111 12/5 × 12
・
・
・
1111 12/31 × 12
レコード/検索条件/ページへ移動[最初の]
変数$i=1
loop
変数$syainIDにテーブル1:社員ID
変数$dayにテーブル1:日付
変数$staにテーブル1:ステータス
を代入して
レイアウトをテーブル2に切り替えて
フィールドを名前で設定で["テーブル2:day_"&$i;$sta]
変数を設定[$i;値:$i+1]
レイアウトをテーブル1に切り替えて
レコード/検索条件/ページへ移動[次の;最後まで来たら終了]
end loop
で、テーブル1のステータス情報をテーブル2のday_$iに代入していっています。
レイアウト テーブル2は
1日 2日 3日 4日 ・・・・ 31日 ← テキストです。
day_1 day_2 day_3 day_4 ・・・ day_31
と、フィールドを横に設定しています。
結果レイアウト テーブル2の表示が
1日 2日 3日 4日 ・・・・ 31日
○ × 〇 ○ ×
と、横表示に見せていますが、問題として
1・上記のスクリプトだと元データが変わった時にリレーションが組まれていないので最新情報がレイアウト2に表示されない。
2・複数の社員IDを一覧表示しようとした場合、時間が掛かるのではないか?
3・そもそも、もともとあるデータを複製するのはムダではないのか?
と、考えてしまいます。
横表示をする何か良い手立てはないものでしょうか?
宜しくお願い致します。
FM13以降ならば、繰り返しフィールドへ展開して集計、という手法があります。別テーブルは不要です。
https://dl.dropboxusercontent.com/u/926 … .fmp12.zip
この手法ですと、懸念されている事は解決できると思います。
ついでに、展開している一覧表からデータの編集が出来る様なトリックを組み込んであります。
Last edited by Shin (2015-12-31 23:59:41)
Offline
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 511.71 KiB (Peak: 518.02 KiB) ]