みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Pro 15 Advance
win10
いつもお世話になっております。
価格に複数の条件があって、優先度の高いものからルックアップする
という動作を考えています。
優先順位は下記の通りです。
1.得意先別販売価格マスタ(得意先コードと品目コードと価格の3フィールド)
2.品目マスタで管理している得意先の区分による価格(問屋、代理店)※説明のため2つにします。
過去ログから、LOOKUP関数を使えば、下記のような感じかなと思うのですが、
肝心のリレーションについて、悩んでいます。
LOOKUP(得意先別販売価格マスタ::価格;IF(区分=”問屋”,LOOKUP(品目マスタ::問屋価格),LOOKUP(品目マスタ::代理店価格)))
・想定されるリレーション
①受注書 ー(受注書ID)ー 受注書明細
②受注書明細 ー(得意先コード、品目コード)ー 得意先別販売価格マスタ
③受注書明細 ー(品目コード)ー 品目マスタ
LOOKUPの式を実現するためには、②のリレーションが必要だと思うのですが、
得意先コードは、受注書明細ではなく、受注書で管理しているデータなのですが、
この場合には、皆様どのようにしてリレーションを実現しているのでしょうか?
(割りとこういうパターンは多いのでは?とも思ってます。)
私が思いつくのは、単純に受注書明細を作成時に、得意先コードも受注書IDと同様に入力するという形です。ただこの方法だと、受注書の得意先が変更になった場合に、関連する明細も書き換え処理をしない
といけないですし、なんだかスマートじゃない気がしています。
もしよりよい方法があれば、教えて頂きたいです。
よろしくお願い致します。
Last edited by あきひろ009 (2017-06-22 20:50:23)
Offline
複数のリレーション先からルックアップする事はできません。
自動入力の計算式で、条件に応じたリレーション先の値を取り込むと良いでしょうね。
例えば、
Case (
得意先別販売価格マスタ::価格 ; 得意先別販売価格マスタ::価格 ;
区分=”問屋” ; 品目マスタ::問屋価格 ;
区分=”代理店” ; 品目マスタ::代理店価格
)
Offline
ルックアップはダメだから、Lookup関数式を使うというアイデアは良いですよ。
Offline
受注明細に得意先コードを持たせて、リレーションの照合に加える必要が有ります。
そのフィールドは受注書を参照した計算フィールドとか、
ルックアップで自動入力されますから、
手入力の必要な有りませんよ。
> 受注書の得意先が変更になった場合に、
> 関連する明細も書き換え処理をしないといけない
頻繁に有ることでしたら、
計算フィールドがいいかも。。
Offline
Shin様
いつも回答ありがとうございます。
ルックアップではなくて、Case文を使えばいいということなんですね。
ついつい金額参照となると、ルックアップって先入観がありました。。。
ただCase文で表現する場合にも、同じく②のリレーションが必要だと思うのですが、
そのためには、受注明細にも、受注書の得意先を持たせる必要があると思っています。
チポ様の回答のように、計算フィールドで受注書テーブルから、計算フィールドで
値を引っ張ってくるのが、よくあるやり方なんでしょうか。
②受注書明細 ー(得意先コード、品目コード)ー 得意先別販売価格マスタ
Offline
Hiro様
回答ありがとうございます。
アイデアをお褒め頂きまして、ありがとうございます!
ただ過去ログを見て、ルックアップ計算式ってのがあるんだな。
と思ったので、私のアイデアではなくて、恐縮です。
Last edited by あきひろ009 (2017-06-23 09:43:48)
Offline
チポ様
回答ありがとうございます。
なるほど。
計算フィールドでしたら、いちいち書き換える必要ありませんね。
チポ様の言うように本来は頻繁には無いのですが、
ただ打ち間違えは想定されますし、コピーして、
変更みたいなパターンもあるかもなので
変更があるという想定がいいのかなと考えています。
ただ受注書のデータを受注明細にも持たせることは、気持ち的には、
「なんで受注書にあるデータを、受注明細書にも持ってこないといけないの!
受注書のヘッダーとしての役割とはなになのか」って、ちょっと言いすぎですけど、
思ってしまい、少し気になりますが、やはり致し方ないんですよね。。。
Offline
> 2.品目マスタで管理している得意先の区分による価格(問屋、代理店)※説明のため2つにします
区分フィールドで分ける?
区分ごとのフィールドが有る?
あげられた例では後者のようですが、確認です。
リレーションの照合のためにフィールドが必要でしたら、
ためらわず作るしか無いでしょう。
今回の場合はそのフィールドを表示することも、
手入力することも必要ないですから、
その存在を意識する必要は有りませんよね。
Offline
チポ様
回答ありがとうございます。
説明不足で申し訳ございません。
得意先マスタに区分フィールドがあり、そちらに、問屋や代理店の値が入っています。
やはりリレーションのためなら、ためらわずフィールドを作るほかないんですね。
確かに、存在を意識する必要はないので、全然気にはなりません。(フィールドを作る時にためらってしまいましたが。。)
CaseでもLookup文でも、想定の動作を確認しました。
ただCase文の方が、簡潔な表現だと思うので、Case文にしてみます。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 521.7 KiB (Peak: 526.23 KiB) ]