みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
こんにちは。
テーブルAにBの『値』を入れるにはどうすればよいでしょうか。
例えばテーブルAの西暦2020の基準年は
テーブルBの基準年2023と2019の間にあり
古い基準年『2019』を返すようにしたいです。
よろしくお願いいたします。
テーブルA
西暦 基準年
2020 『2019』
2019 『2019』
2018 『2015』
2017 『2015』
2016 『2015』
2015 『2015』
2014 『2011』
テーブルB
基準年
2023
2019
2015
2011
Div ( a + 1 ; 4 ) * 4 - 1
Offline
この場合は計算で出したほうが簡単でしょうけど、
別のテーブルから参照するなら、ルックアップで「一致する値がない場合」を使うとか、>=リレーションで自分以下の値のレコードの最大値を参照します。
ご返信ありがとうございます。
Shin様
Div ( a + 1 ; 4 ) * 4 - 1 は 4年周期という意味でよいでしょうか。
himadanee様
ルックアップの設定はこれまで完全に一致する値しか使ったことがなかったので、それ以外の使い方がわかりました。
ありがとうございます。
リレーション>=リレーションで自分以下の値のレコードの最大値を参照 はソートの指定でしょうか?
明日試してみます。
基準年
2023
2019
2015
2011
に合わせた計算です
Offline
Shin様
基準年が2028年なったときは
2027年が返るのですがその場合はどうすればよいでしょうか。
現時点では次は基準年2027となる予定ですが、今後の状況で変わるかもしれません。
himadanee様
リレーション>=リレーションで自分以下の値のレコードの最大値を参照 できたと思います。
フィールドを計算タイプでMax ( 基準年::西暦)とすると欲しい値が得られました。
規則性が変わる可能性があるなら、テーブルを使わない計算式はやめた方がいいですね。
変わった時点で計算式を考え直してもいいけど面倒でしょう。
リレーションを使わない計算式
ExecuteSQL("
SELECT MAX(\"基準年\")
FROM \"テーブルB\"
WHERE \"基準年\"<=?
";"";"";テーブルA::西暦)
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 550.69 KiB (Peak: 578.13 KiB) ]