みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
初めて投稿させていただきます。
FM初心者です。
宿泊施設の利用状況についてクロス集計を行っておりますが、うまくいきません。
テーブル1
フィールド 個人名 人数 一泊目 二泊目 三泊目
1 A 1 7/1 7/2 7/3
2 B 2
3 C 3 7/2
4 D 4 7/3
5 E 3 7/2 7/3
テーブル2
日付 人数計
7/1 1
7/2 4
7/3 8
以下続く
テーブル2で合計人数を日付ごとに集計して出したいです。
excelであれば sumif(テーブル1一泊目,テーブル2日付,テーブル1人数)+sumif(テーブル1二泊目,テーブル2日付,テーブル1人数)+sumif(テーブル1三泊目,テーブル2日付,テーブル1人数)
で値が返されます。
自己リレーション等いろいろ触ってみましたが、理解がわるくうまくできません。
説明不足で大変恐れ入りますが、アドバイスいただければ幸いです。
テーブル1の形が珍しい?ですね。
一泊目 二泊目 三泊目・・・の部分をポータルになるようにしたら簡単かも。
Offline
繰り返しフィールドでOR照合するリレーションを作り、リレーション集計する案。
1.複数の()泊目フィールドを1つの繰り返し[任意n回]フィールドへ持ち替える。(nは想定される最大連泊数とする)
1 A 1 | 7/1 | 7/2 | 7/3 | | … |
2 B 2 | | | | | … |
3 C 3 | 7/2 | | | | … |
4 D 4 | 7/3 | | | | … |
5 E 3 | 7/2 | 7/3 | | | … |
2.テーブル2からテーブル1へ日付でOR照合するリレーションを設定する。
「テーブル2::日付フィールド」 = 「テーブル1::繰り返しフィールド」
3.テーブル2に集計値を得る計算フィールドを作り、その式に、
Sum(テーブル1::人数)
と設定して、お終い。
7/1 1
7/2 7
7/3 8
Last edited by Hiro (2014-08-31 17:55:14)
Offline
元データの宿泊日を繰り返しフィールドへ結合し、インポートでレコード分解、集計する案。
https://dl.dropboxusercontent.com/u/926 … 25.fp7.zip
Offline
皆さま、さっそくのご回答ありがとうございます。
結論から申し上げますと、まだ解決しておりません。
それぞれの解決案に触れる前に
テーブル1の構造について捕捉させていただきます。
入力作業簡略化のために、下記の通りとなっております。
テーブル1
フィールド 個人名 人数 一泊目 宿泊数 二泊目 三泊目
種類 テキストF 数字F 日付F 数字F 計算F(一泊目+宿泊数-2):日付で返す 計算F(一泊目+連泊-1):日付で返す
1 A 1 7/1 3 7/2 7/3
2 B 2 7/1 0
3 C 3 7/2 1
4 D 4 7/3 1
5 E 3 7/2 1 7/3
*該当日付が無い場合は空白というcase関数をくんでおります。
一泊目の日付と、宿泊数がを入力すると、二泊目、三泊目の内容に自動的に反映されるような構造です。
(当宿泊施設の特性で、3泊以上宿泊されるかたがほぼおりませんので、本運用になっております。)
回答を一つずつ確かめながら行ってはおるのですが、泊数の欄を一つのフィールドに統合する?やり方が多い気がいたします(理解が誤っていたらすみません)
本構造を崩さないと厳しいということでしょうか?
もうしばらく、お付き合いのほどよろしくお願いいたします。
どのやりかたも、その構造を崩す様な事はしていないと思いますが。
1フィールドにまとめている、と言うより、今の構造がデータ処理に適していない、という根本的な問題をクリアにするための処理です。
Last edited by Shin (2014-09-05 10:40:24)
Offline
三泊までと決めてるんだから、
テーブル2::日付=テーブル1:: 一泊目
のリレーションで
Sum(テーブル1::人数)
で1項めがでる。後2つ同じようにして加算すればExcelと同じやり方。
二泊目三泊目でなく最終泊の日付を計算して、不等号のリレーションにすれば、何泊あっても1つのリレーションで可能では。
テーブル2::日付=>テーブル1:: 一泊目
AND
テーブル2::日付=<テーブル1:: 最終泊
2泊目、3泊目を繰り返しフィールドで作って計算させておくのが、一番簡単そう。今の構造からの変更も最低レベルだし。
Offline
ああ、HIROさんのですね。繰り返しの計算式は
Let(n=Get(計算式繰り返し位置番号)-1;
Case(n<宿泊数;一泊目+n)
)
本論とは関係ないけど、宿泊数0の場合があるなら、1日目のフィールド名は変えた方がよさそうな。
「3泊以上の連泊は無くて、0泊(お休憩?)なんてのがある」特性の宿泊施設って、ラブホか何かなのかなあ?
普通は、ダブルブッキングを避ける為、部屋ごと1日1客しか取りませんが、時間がダブっていなければ1日多客を取れるということ??
0泊の取り扱いをもう少し詳しくお聞きした方が良さそう。
Last edited by Hiro (2014-09-05 16:03:06)
Offline
コメントありがとうございます。
山の中腹にある山小屋の管理用データベースです。
山小屋なので、個室はなく雑魚寝で定員○○人といった運用で行っております。
基本一泊二日のコースでまわられるのですが、
悪天候を見越して、二日ほど予備日をみる方、日帰りの強行軍で行うかた等々おります。(0泊は日帰りの方です)
登山のお客様は山に登ったらそのまま滞在することはなく、すぐ降りるため、3泊目までの設定にいたしました。
一先ず、HIRO様のやり方をまねて行ってみたのですが、繰り返しフィールドの内容がうまくいっておりません。。。
https://www.dropbox.com/s/hhkb761muvq1v … fmp12?dl=0
いかがでしょうか?
繰り返し3行とも別テーブルからインポートして、そこで集計するサンプル。
インポートなのでデータの訂正時がスマートではないけど。
http://pupld.net/21/140906/ug22mylo46/index.cgi
Offline
校正ファイルを新名でアップしましたので、設定明細をご覧下さい。
またオマケに、テーブル2の集計結果をテーブル1のヘッダで週間集計カレンダーとして
表示・参照できるよう改善しときました。
●校正「山荘宿帳.fmp12」→ http://yahoo.jp/box/cqTN55
・繰り返しフィールドが上手く動かないのは、非繰り返しフィールドの名前の後に[1]がないためです。
・テーブル1の入力日付がテーブル2に重複無くインポートする仕組み・設定法を確認下さい。
Offline
皆様
解決いたしました!
親切に教えていただきまして、ありがとうございます!
また、何かありましたらよろしくお願いいたします。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 556.3 KiB (Peak: 577.21 KiB) ]