みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
久しぶりに質問させていただきます。
win10、FM13の環境です。
以下のとおりデータがあります。
Aは最小8から最大60まで、Bは最小3から最大40までの数値があり、AとBに対してCの値があります。
データの総数は900ほどあります。
テーブル1
A B C
8 3 0.01
8 4 0.02
~
10 3 0.02
10 4 0.03
~
60 39 4.96
60 40 5.08
テーブル2
A B C
70 30 ?
そこで、お尋ねですが、テーブル2のAに70、B30を入力したときに、Cの値を算出したいのですが良い方法がありましたら、教えていただけると助かります。
よろしくお願いします。
Offline
・「A」と「B」同士でリレーションを組み、その関連フィールド「テーブル1::C 」が答え。
・計算式だけの方法も考えられます。
ExecuteSQL(" SELECT ""C"" FROM ""テーブル1"" WHERE ""A""=? ""B""=? "; ""; ""; A; B)
Offline
テーブル2のA、B から、テーブル1のA、B にリレーションをはり、C を関連レコードとして表示させるか、ルックアップするのがいいでしょう。
Offline
> Aは最小8から最大60まで
これなのに、
テーブル2のAが70とは?
間違いでなければルールの説明が必要です。
Offline
Hiro様、Shin様、早速、ご教授いただきありがとうございます。
私の説明がわかりにくかったのかもしれませんが、テーブル2のAとBの組み合わせは、テーブル1に該当しないものです。
テーブル2のAとBに入力した値が、テーブル1に該当があれば、リレーションかルックアップで表示できますが、該当しない場合にテーブル2のCを計算式で算出したいと考えております。
Offline
その算出式自体の質問ではなく、関連値の有無で結果を分別したいのでしょうか?
つまり、・有れば→関連値、・無ければ→算出値 とする条件判別式ですか?
ならば、求める式はこんなこと?
Let(
[ #C=ExecuteSQL(" SELECT ""C"" FROM ""テーブル1"" WHERE ""A""=? ""B""=? "; ""; ""; テーブル2::A; テーブル2::B) ];
Choose(IsEmpty(#C); #C; 計算式)
)
もし事前リレーションを組むなら、Lookup関数の関連外オプション機能を利用して、
Lookup(関連テーブル1::C; 計算式)
Last edited by Hiro (2018-08-21 13:39:17)
Offline
なら、
Lookup関数
が便利ですね。
Offline
私も、Lookup関数をお勧めします。
Offline
Hiro様、チポ様、Shin様、ご教授ありがとうございました。
Lookupの方法で試してみます。
お世話になりました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 515.91 KiB (Peak: 520.45 KiB) ]