重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

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

A 回答 (6件)

最新の一覧も同じです。


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

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

お礼日時:2012/12/24 14:59

1件しか無い場合、前回の日付を1900/01/01にするときは


Case ( Count ( テーブル 2::日付 )= 1 ;
   Date ( 1; 1 ; 1900 ); GetNthRecord ( テーブル 2::日付 ; 2) )
と関連レコード数で分岐です。そのリレーションのポータルを
表示するとわかりやすいかも。

最新の一覧とは?

この回答への補足

すみません。追加で
データの数は同じではなく
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
    • good
    • 0
この回答へのお礼

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

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 22:34
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/12/23 20:18

その計算結果をどこに表示するのか不明でしたので


自己リレーションにしました。自己リレーション先のテーブル名を
テーブル2とすると

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

テーブル2::日付
というのは
GetNthRecord(テーブル2::日付 ; 1) 
と同じです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/12/23 13:25

書き忘れた。


日付のリレーションは 日付 >= ::日付
    • good
    • 0

A,B,Cのフィールドと日付のフィールドでそれぞれリレーション


そのとき日付は降順ソート指定すると
最も新しいデータは関連テーブル::データ
その前は
GetNthRecord(関連テーブル::データ ; 2)
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2012/12/19 10:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!