こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

FileMakerの計算方法について教えて下さい

FileMakerでの自動で計算させたいと考えています。
テーブルのデータは以下のようなデータがあります。

A 10/01 100
B 10/05 300
C 10/05 100
A 11/05 200
B 11/10 100
C 11/05 200
A 12/05 70
B 12/05 150
C 12/07 190

このデータから
A= 期間:(11/05-12/5) 値:200+70
B= 期間:(11/10-12/5) 値:100+150
C= 期間:(11/05-12/7) 値:200+190

というように、一番新しい日付のデータと一つ前の
データを計算させたいと思っています。
この場合どのように処理させたらいいのか教えていただけないでしょうか。
どうぞ、よろしくお願いします。

投稿日時 - 2012-12-18 12:57:29

QNo.7850448

すぐに回答ほしいです

質問者が選んだベストアンサー

最新の一覧も同じです。
別テーブルにA,B,Cを入れるフィールドを1個作って、元テーブルとリレーション
そのとき元テーブル側は日付の降順ソート
別テーブルに3個レコードを作ってA,B,Cと入れて関連フィールド
 元テーブル::日付
を配置してリスト表示にすると表示されます。
リレーションで関連レコードをどのようにして絞るのかを理解した方がいいですよ。

投稿日時 - 2012-12-24 14:47:33

お礼

chieffishさん
どうもありがとうございます。
早速やってみます。
Accessはずっと使っていたのですが、FileMakerを11月からはじめて使い始めたのですが
リレーションがよくわからなくて苦労しています。
がんばって勉強してみます。
ありがとうございます。

投稿日時 - 2012-12-24 14:59:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.5

1件しか無い場合、前回の日付を1900/01/01にするときは
Case ( Count ( テーブル 2::日付 )= 1 ;
   Date ( 1; 1 ; 1900 ); GetNthRecord ( テーブル 2::日付 ; 2) )
と関連レコード数で分岐です。そのリレーションのポータルを
表示するとわかりやすいかも。

最新の一覧とは?

投稿日時 - 2012-12-24 02:06:52

補足

すみません。追加で
データの数は同じではなく
C 9/7 100
C 10/11 200 
の場合でも
A 11/30 180
B 11/21 100
C 10/11 200
と一覧に出したいと考えています。
申し訳ありませんが、教えていただけないでしょうか。
どうぞ、よろしくお願いします。

投稿日時 - 2012-12-24 11:28:33

お礼

chieffishさんありがとうございます!!
ポータルの表示試してみます。
最新の一覧というのは
A 9/7 100
A 10/11 200
A 11/30 180
B 9/7 100
B 10/11 200
B 11/21 100
とデータがある場合
A 11/30 180
B 11/21 100
というように表示させたいという事なのですが、すみませんがよろしくお願いします。

投稿日時 - 2012-12-24 11:21:46

ANo.4

3件ということは仮に
1 A 10/01 100
2 A 11/05 200
3 A 12/05 70

となっているとすると、
3のレコードがアクティブの時は3の日付が最新で、その前は2のレコード
2がアクティブの時は2が最新で1がその前のレコード
となるはずです。
前々回のものを拾ってくるのでしたら、テーブル2のソートが
 日付 > ::日付
になっているかも知れませんが、これですと前回と前々回になりますし。

投稿日時 - 2012-12-23 17:02:49

補足

すみません、追加で教えて頂きたいのですが、最新のデータのみの一覧を
印刷させたいのですが、その場合はどうしたらいいのでしょうか?
質問ばかりで申し訳ありません。
どうぞ、よろしくお願いいたします。

投稿日時 - 2012-12-23 22:34:43

お礼

chieffishさん
ありがとうございました。
ご指摘の通りソートの問題でした。
初歩的なミスで申し訳ありません。ありがとうございました。
データが1件しかない場合は値が?と表示されてしまうので
その場合は別の計算方法にしたいのですが、そのような事は可能なのでしょうか?
可能でしたら、方法を教えていただけないでしょうか。
何度もすみませんが、よろしくお願いします。

投稿日時 - 2012-12-23 20:18:47

ANo.3

その計算結果をどこに表示するのか不明でしたので
自己リレーションにしました。自己リレーション先のテーブル名を
テーブル2とすると

期間という計算フィールドを作って、式を
 テーブル2::日付&"-"&GetNthRecord(テーブル2::日付 ; 2) 結果はテキスト
とすると1レコードごとに出るはずです。値の方も同じです。

テーブル2::日付
というのは
GetNthRecord(テーブル2::日付 ; 1) 
と同じです。

投稿日時 - 2012-12-19 16:35:09

お礼

chieffishさん
どうもありがとうございます。
計算結果はデータが2件のときはうまくいったのですが、
3件になると前々回のデータからマイナスしてしまっています。
教えていただいた通りに操作したつもりなのですが
何か原因は考えられますでしょうか。
質問ばかりですみませんが、よろしくお願いします。

投稿日時 - 2012-12-23 13:25:19

ANo.2

書き忘れた。
日付のリレーションは 日付 >= ::日付

投稿日時 - 2012-12-18 15:41:42

ANo.1

A,B,Cのフィールドと日付のフィールドでそれぞれリレーション
そのとき日付は降順ソート指定すると
最も新しいデータは関連テーブル::データ
その前は
GetNthRecord(関連テーブル::データ ; 2)

投稿日時 - 2012-12-18 15:38:28

お礼

chieffishさん
どうもありがとうございます。

すみません、初心者で理解できませんでした。
自己リレーションまでは出来ました。
次の
A、B、Cの期間 と 数値の足し算への
持っていき方法を教えていただけないでしょうか。
よろしくお願いします。

投稿日時 - 2012-12-19 10:10:31

あなたにオススメの質問