みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FMVer19のユーザです。
複数フィールドを関連レコードからコピペしたいのですが、引数利用して
できないかなと思いスクリプトを作りましたが、うまくいきません。
以下具体的な内容の説明です。
見積システムを構築していて見積の明細行は明細レコードから見積フォームのポータル領域に表示する形式になっております。
明細行の標準単価(定価)と原価は製品DBから製品型番をキーにしてルックアップで入力されるようになってます。
数量が多くなる場合は数量毎の価格がディスカウントテーブルで設定されていて製品DBのポータル上に
数量毎の単価と原価が表示されています。(数量が増えると価格も原価も安価になります。)
今見積の明細行で型番を入力し標準の単価(定価)と原価が入力されていますが、ディスカウント価格(単価)とその場合の原価を製品DBから
それぞれのフィールドにコピー&ペーストで上書きしたいと考えております。
今考えているスクリプトは下記のようなものですがうまく動作しません。
1.見積明細行から関連データである製品DBの該当製品(その明細行の製品)のレコードに飛ぶ。
2.ディスカウント価格の2つのフィールドをコピーするためのスクリプトを実行
(製品DBのポータル領域に表示される特定の数量の行を選択してスクリプト実行ボタンをクリック)
※スクリプト内容は下記のものです。
スクリプト実行[指定:一覧から;「ディスカウント価格入力」; ・・・・(「ディスカウント価格入力」は見積明細行で単価と原価を上書きする際に実行するスクリプト名です。)
引数:数量価格テーブル::単価&"¶"& 数量価格テーブル::原価 ・・・・(「数量価格テーブル」は製品DBのポータルに表示されている数量毎の価格テーブルです。)
3.見積入力フォームの明細行に戻り「ディスカウント価格入力」のスクリプトを実行
変数を設定[$引数1; 値:GetValue(Get(スクリプト引数);1)]
変数を設定[$引数1; 値:GetValue(Get(スクリプト引数);2)]
フィールド設定[見積明細::単価; $引数1]
フィールド設定[見積明細::原価; $引数2]
そもそも引数を使うのが正しいのかよくわかりませんが、正しいスクリプトの組み方をご教示頂けますでしょうか?
数量ごとの単価設定は既にできていて、見積の方にデータを入れたいんですよね?
それなら数量(>=)と製品コード(=)でリレーションして「数量価格テーブル」からルックアップするだけでいいはずですが...
複数フィールドのリレーションで「一致する値がない場合」は、動作が不定ですか?
スクリプトは使わなくてもいいですよ。
商品マスターと別に、価格マスターを作り、商品コード、最低数量、価格を持たせておきます。
明細の数量と最低数量を比較するリレーションを張り、その価格を参照するだけでいいです。設定日付も考慮すれば、ダイナミックに動きますので、よりいいでしょう。
https://www.dropbox.com/s/fqhoae1oowq0z … 2.zip?dl=0
Offline
早速回答ありがとうございます。
>himadaneeさん
まず、製品コードを参照とするルックアップについては現状では、標準単価が入るように設定されていますが、
型番と数量の2つのフィールドを参照してルックアップするようなやり方があるのでしょうか?
もしあれば、ご教示ください。
>Shinさん
「明細の数量と最低数量を比較するリレーションを張り、その価格を参照するだけでいいです」
申し訳ありません。上記のやり方につきまして私の理解力が足らず、理解できません。
かみ砕いてご説明いただけませんでしょうか?
サンプルのファイルを見てみてください。
価格の変更を見越して、設定日付を加味した動きを実装しています。
なお、定価と原価も、ちょっと無理やりですが、価格テーブルで管理できる仕組みを持っています。
Last edited by Shin (2023-04-03 08:42:17)
Offline
ありがとうございます。
サンプルファイルを確認しました。
各製品ごとに価格マスターテーブルを作成すると理解しました。
製品の種類が少ない場合は、この方式でできそうなおですが、製品が数千種類と多く
また特注品が毎日追加されていく場合、その都度テーブルを作成するのは大変かもしれないと
思っています。
そのような場合にもし、他の解決方法がありましたら、ご教示頂けますでしょうか?
商品マスターの中のレコードを追加する手間と、手で作業する手間のトレードでしょうね。
特注品は数量値引きが無いと思いますので、商品名などを入力するだけでしたら、そんなに手間はかからないのでは。
今マスターがあるのでしたら、それをインポートするような事もできると思います。
価格マスターには、商品コード、設定日、ロット最低数量、価格 を保存しています。商品ごとのテーブルではなく、全ての商品のすべての価格を網羅して設定してあります。例えば、商品 0000 で定価1000円 ロット100個で900円ならば
商品コード、設定日、ロット最低数量、価格
0000 2024/01/01 1 1000
0000 2024/01/01 100 900
というレコードを作ります。そこに対して、
商品コード = 商品コード
受注日 ≥ 設定日
数量 ≥ ロット最低数量
というリレーションで、設定日、ロット最低数量 でどちらも降べきにソートしておきます。そのリレーションで価格を参照すると、数量50でしたら1000、数量200でしたら900が取得できます。
Last edited by Shin (2023-04-04 16:26:50)
Offline
フィールドがいくつだろうと、リレーションを設定できればルックアップも可能です。Shinさんのサンプルがやってるはずです。
サンプルは見てないですが、
「各製品ごとに価格マスターテーブルを作成する」というのはあり得ないので、
「各製品ごとに価格マスターテーブルにレコードを作成する」の意味だとして、
>明細行の標準単価(定価)と原価は製品DBから製品型番をキーにしてルックアップで入力されるようになってます。
という風に単価表をすでに作ってるんだから、それほど違いはないと思うのですが。
>特注品が毎日追加されていく場合
マスタにレコードを登録しなければ、ルックアップされないだけなので、金額を直接見積に入れれば問題ないです。
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 585.03 KiB (Peak: 601.94 KiB) ]