みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM11 WIN7 このサイトは過去色々勉強させて頂いており、大変助かっております。
とは言え、まだ初心者レベルなのでよろしくお願いします。
現在作成中のDBは結構複雑なのですが、ポイントだけ教えて頂きたいので
単純な例で説明します。
①顧客購入履歴DB
顧客名フィールド、商品フィールド
②新規顧客名簿DB
顧客名フィールド、評価フィールド
という具合に2つのDBファイルがあります。
商品は(みかん、バナナ、リンゴ...)という感じです。
②のDBにて、顧客名フィールドでリレーションを貼り、①の商品フィールドをポータルで表示すると
ずらりと購入商品が表示されます。(※評価の対象はかつて商品を購入した方のみ対象となります。)
例えば
顧客名:山田
-------
商品:みかん
バナナ
みかん
みかん
評価=4
顧客名:鈴木
-------
商品:みかん
リンゴ
評価=5
そこで、私のやりたいことは次のような事です。
顧客毎にポータルに表示される全ての商品をチェックして
評価フィールドの値として
みかんのみ購入なら=1
バナナのみ購入なら=2
リンゴのみ購入なら=3
みかんとバナナを購入しているなら=4
みかんとリンゴを購入しているなら=5
...
というふうに計算式で評価していきたいのですが
なかなかうまい考えが見つかりません。
ご教授の程、よろしくお願いします。
みかんのみ購入なら=1
バナナのみ購入なら=2
リンゴのみ購入なら=3
みかんとバナナを購入しているなら=4
みかんとリンゴを購入しているなら=5
この例以外にももっと有るんでしょう?
そのリストのテーブルは有るんですか?
有ればそれはどのような形になっていますか?
Offline
評価点数を得る計算式、
Let([
#lst=List(①テーブル::商品);
#5=List("みかん";"リンゴ");
#4=List("みかん";"バナナ");
#3="リンゴ";
#2="バナナ";
#1="みかん"
];
Case(
FilterValues(#5;#lst)=FilterValues(#5;#5); 5;
FilterValues(#4;#lst)=FilterValues(#4;#4); 4;
FilterValues(#3;#lst)=FilterValues(#3;#3); 3;
FilterValues(#2;#lst)=FilterValues(#2;#2); 2;
FilterValues(#1;#lst)=FilterValues(#1;#1); 1
)
)
Offline
チポさま、Hiroさま 早速アドバイスして頂き大変有難う御座います。
チポ様リストは作ってません。
リストのテーブルを使った方がスマートに出来そうですね。
Hiro様 計算式有難う御座います。勉強になります。今の仕事に応用できるか後で調べてみます。
昨夜、Hiroさまからの計算式を応用してみたところ、うまくやりたい事ができました。
ありがとうございました。
3日間悩み続けていたことが、お陰であっという間に実現できました。
ここのサイトで類似の案件をしらべ、自分なり試行錯誤してみたのですが、うまくいかず
最初はFMの計算式にwhile 文のようなものがあれば簡単に実現できると思ったのですが、
それが無いため、他の方は再帰ループ等で対応されている様ですが、複雑な条件式を再帰ループで回すのは頭が混乱して私には無理でした。
なにかもっと簡単で分かりやすい方法は無いものかと思って質問したのですが、
なーるほど。一旦データをまとめて吸い上げて、テキスト関数でチェックする方法は思い付きませんでした。
大変勉強になりました。有難う御座います。又よろしくお願いします。
Pages: 1
[ Generated in 0.025 seconds, 9 queries executed - Memory usage: 509.48 KiB (Peak: 516.39 KiB) ]