みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。FMP11 Mac 使用です。
以前以下で質問させていただいたものの延長になるのですが、顧客ごとに内容の異なる料金表を作成しようとしています。
https://fm-aid.com/bbs2/viewtopic.php?id=2672
基本構造は、「料金マスタ」と、「料金表」という2つのテーブルがあり、「料金表」では、グループ(大項目)ごとに料金一覧をポータル表示させています。
例)
表のタイトル:グループA
(料金一覧のポータル)
表のタイトル:グループB
(料金一覧のポータル)
・
・
・
グループA、B、・・・は、マスタの「グループ」なるフィールドに値を持たせていて、リレーションのキーとなっています(「料金表」側ではグローバルフィールドを使用)。
ここで、料金の内容が、顧客により異なることがあります。例えばある顧客は、ある項目が標準料金よりも安い、などです。ポイントは、ほとんどの項目はすべての顧客で共通だけれども、いくつかの項目のみ顧客ごとに金額が異なることです。
前回の質問で教えていただいたように、マスタ側に「顧客」というフィールドを作成し、金額が異なる項目(レコード)を複製して顧客フィールドに顧客名を入力しています。つまりこの例では、ひとつの項目について、標準料金のレコードと、その特別な顧客用のレコードの2つが存在し、顧客に応じて料金表の表示を切り替えることになります(「顧客」がリレーションのキー)。
前回はどうやったのかうまくいったようですが、そのファイルはもはや存在せず、いまやろうとしても再現できません。特に、「ポータルに基本的には標準料金を表示させつつも、特定の項目については顧客ごとの割引料金を表示させる」ことができません。
ご教授いただけないでしょうか。よろしくお願いいたします。
Offline
顧客ごとの表示はどのように?
今のグループごとのポータルに混ぜて表示なら簡単ですよね?
料金表の別レコードに?
グループと切り替えて?
「項目」
といわれていますが、それが何をさすのか分かりません。
「商品フィールド」
「特定のレコード」
等、
できる限りFMで定義された用語を使用した方が分かりやすいですよ。
Offline
チポさま、ありがとうございます。
質問がわかりづらくて申し訳ありません。。
>顧客ごとの表示はどのように?
「料金表」は基本的には「料金マスタ」をポータル表示するためだけのテーブルです。
顧客ごと(さらには年度ごと)にレコードを作成します。
そのレコードで、料金マスタの内容をポータル表示させます。
>今のグループごとのポータルに混ぜて表示なら簡単ですよね?
それが、デフォルトの料金と、顧客特有の料金どちらかのみならばできるのですが、両方を組み合わせる方法がわかりません。
グループは、全顧客に共通です。(要は「料金表」のレイアウトはひとつです。)
各グループ内の項目(請求項目)も共通ですが、顧客ごとに金額が異なることがあります。
例:
表のタイトル:野菜
キャベツ 100円
レタス 150円
表のタイトル:肉
豚肉 200円
鶏肉 120円 ←この金額が顧客によっては100円のことがある
よろしくお願いいたします。
補足:
「グループ」というのは、ひとつの料金表内で表示する料金の単位です。
「野菜」「肉」「魚」・・・などをそれぞれ表にまとめて、全体でひとつの料金表を構成します。
当然、マスタ側では、以下のようになっています。
「項目」「価格」「グループ」
ごぼう 100 野菜
セロリ 200 野菜
牛肉 300 肉
羊肉 200 肉
Last edited by eddie (2017-07-04 17:55:54)
Offline
> 表のタイトル:肉
> 豚肉 200円
> 鶏肉 120円 ←この金額が顧客によっては100円のことがある
これを
豚肉 200円
鶏肉 120円
鶏肉 100円 顧客A
このような表示でいいのならば、単にグループで絞り込めばいいことでは。
違うのでしたら表示の例等を。。
Offline
豚肉 200円
鶏肉 120円
鶏肉 100円 顧客A
ということではなく、顧客A専用に、
豚肉 200円
鶏肉 100円
という表を作成したいのです。
Offline
今のポータルなら、顧客でフィルタを掛ければいいでしょう。
別のポータルでなら、顧客を照合に加えればいいですね。
Offline
ただ、
豚肉 200円
鶏肉 100円
この例だと、豚肉はデフォルト料金なので、「顧客A」の情報を持っていません。
結局、マスタ側ですべての料金について顧客ごとにレコードを作成しないといけないでしょうか?
ほとんどの料金が共通なので、それは使いまわしたいのですが。。
Offline
そういうことですか。。
料金マスタで、品名で自己リレーションし、
List ( 料金マスタ2::顧客名 )
というフィールド(仮にリストとします)を作ります。
顧客名ごとのポータルのフィルタを
料金表::顧客名 = 料金マスタ::顧客名
or
IsEmpty ( PatternCount ( 料金マスタ::リスト ; 料金表::顧客名 ) )
とすればいいのではないかな。。
Offline
チポさんと似た考え方ですが。
商品マスターの下に価格マスターをもたせる考え方です。ポータルのフィルターもチポさんの提案に一捻り足せば、いいようです。
Let (
ls = List ( 価格マスター 一覧 2::顧客 ) ;
Case (
IsEmpty ( FilterValues ( ls ; 受注テーブル::顧客名 ) ) ; IsEmpty ( 価格マスター 一覧::顧客 ) ;
受注テーブル::顧客名 = 価格マスター 一覧::顧客
)
)説明面倒なので、サンプル見てください。
https://www.dropbox.com/s/0iyyrh8ih8i31 … 7.zip?dl=0
Last edited by Shin (2017-07-05 22:41:57)
Offline
Pages: 1
[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 567.49 KiB (Peak: 582.52 KiB) ]