みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
こんにちは、スクリプトステップで異なるファイル間でのLoop処理を入れるタイミングが測れず困っております。
環境
OS Win11 PRO
バージョン Filemaker PRO 19.6.3
困りごと
「受注」ファイルと「商品マスタ」ファイルがあります。
この2つは、商品番号というフィールドでリレーションされています。
【12345】という商品番号の【デスクセット】という商品があったとして、これを受注するため、商品マスタファイルで
12345という商品番号を検索させるスクリプトを作りました。
これで、ヒットするレコード数が1件ならば、必要なフィールドを変数に設定して、引数で持ってきて
受注ファイルの各フィールドに設定していけばOKなのですが、セット商品などの場合、同じ商品番号で複数のレコードがヒットします。
(デスクセットを構成している、デスク・椅子・棚などのような感じ)
Loopをかけて、上から順番に受注ファイルへ持って行き、次のレコードが無くなったらLoopから抜けたいと思っていますが、
どこにLoopを入れたら良いのかが分かりません。
現在は、受注ファイル側で
1.変数設定:$商品番号
↓
2.スクリプト実行:商品番号検索 ファイル:商品マスタ 引数:$商品番号
↓
3.「商品マスタに移って」GET(スクリプト引数)で商品番号を取得
↓
4.商品番号で検索
↓
5.必要な項目をQuote関数でまとめて変数設定
↓
6.「受注ファイルに戻って」Evaluate関数で、商品マスタから取得した項目を変数化
↓
7.受注ファイルの必要な箇所へフィールド設定
ざっくりとこんな感じになっています。
Loopの入れどころをどこにすれば、受注ファイルに商品マスタ内の情報を持ってくることが出来ますでしょうか?
分かりにくい説明で申し訳ありません。
Offline
5をLoopで処理するんでしょうけど、そもそもLoopしないでもレコードのインポートだけで済みませんか?
「7.受注ファイルの必要な箇所へフィールド設定」というのは、受注ファイルのサブファイルの複数レコードに入れないで、複数の商品の情報を1レコード内に入れるということですか?
それで後々困らないなら、ExecuteSQL関数で取り込めば簡単そうですが...
まず、商品マスター側のコード管理を少し変更した方がいいのでは。
> 同じ商品番号で複数のレコードがヒット
この状態は好ましくありませんので、商品番号が複数あるのでしたら枝番をつける必要があるでしょう。今の商品番号と別に、その枝番を含めた商品管理番号を作るべきです。
または、セット商品があるのでしたら、セット番号を商品番号として扱い、それに関連させるように、セット内容を持たせておくのがいいでしょう。(セット内容の単品売りがあるのでしたら、これにしないと管理できません)
この状態でしたら、検索で複数ヒットすることはありませんので、簡単な設定だけで済みます。セットの内容は、リレーションを通してみればいいです。
Offline
受注ファイルでは、
セット商品は1セットで1レコードですか?
セットの商品ごとに1レコード?
前者なら、himadaneeさんのインポートで出来ますね。
後者ならその構造を考え直したほうがいいのでは。
Offline
himadaneeさま
アドバイスありがとうございます。
受注ファイルのサブファイルの複数レコードに入れるという認識で合っています。
3商品がヒットしたら、受注ファイルのサブファイルも3レコードつくるという形です。
たしかに、インポートしてしまった方が良いような気がしています。
ありがとうございます。
Offline
Shinさま
ご回答ありがとうございます。
説明不足で申し訳ありません。
商品マスター側では、「販売番号」「販売名」「商品番号」「商品名」「価格」などのフィールドがあります。
Shin様のおっしゃる通りで、セット商品は単品売りもしています。
販売番号:12345 が デスクセットだとしたときに、商品マスターで販売番号:12345を検索にかけると、
販売番号:12345 販売名:デスクセット 商品番号:10 商品名:デスクA
販売番号:12345 販売名:デスクセット 商品番号:20 商品名:チェアA
販売番号:12345 販売名:デスクセット 商品番号:30 商品名:棚A
の3点がヒットしています。
この3点は、それぞれ単品でも販売しているため、単品で販売する時には、
販売番号:10 商品番号:10 商品名:デスクA
を販売番号:10で検索して受注ファイルに貼りつけるイメージでいます。
これでいくと、Shin様のおっしゃる「販売番号」と「商品番号」の関係が枝番という事になりますでしょうか。
Offline
チポ様
ありがとうございます。
セット商品は、セットを構成する商品1点ごとに1レコードと思っています。
やはり構造的に難しいのでしょうか。。
Offline
その構造だと、販売番号と商品番号の2重管理になり、データベースとして合理的ではありません。合理的なデータベースでは、1個のキーで1元管理します。
私が設計するなら、
商品番号:12345 販売名:デスクセット
商品番号:10 商品名:デスクA
商品番号:20 商品名:チェアA
商品番号:30 商品名:棚A
として管理し、セット商品のレコードから、セットマスターのテーブルを別に作り、セット番号 12345 に対して、商品番号:10、商品番号:20、商品番号:30 というデータを持たせたレコードをそれぞれ作ります。発注サブファイルに12345が入力されれば、セット商品であれば、さらにそれの関連レコードへ移動して、その対象レコードを追加でインポートすればいいでしょう。
この構造を採れば、セットレコードが作られるので、セットで受注したか、商品102030をそれぞれ単品で受注したか、区別ができます。そのため、セット価格というものを設定していたとしても、運用が簡単です。また、ダイニングテーブルセットでしたら、チェアが複数になるので、それへの対応も簡単です。さらに、受注(会計)用の伝票と、出荷用の伝票を別管理することも簡単です。
さらに、セット単位での在庫と単品での在庫をそれぞれカウントできるようになります。(上の構造では、セット在庫しかカウントできません)
今の構造で、販売番号が重複しているものがセット商品なので、そのセットとしての商品名のレコードを作り、その内容をセットマスターのテーブルにインポートすれば、簡単に移行できます。
Last edited by Shin (2023-04-05 15:53:55)
Offline
セットの商品一つ毎に1レコードならとりあえず問題ないですね。
現状運用しているファイルを大きく変更は大変でしょうから、
とりあえず現状のまま運用して、
変更はファイルのコピーを取って考えたらいかがでしょう。
受注のレコード作成は、インポートがおすすめですよ。
Offline
Pages: 1
[ Generated in 0.014 seconds, 10 queries executed - Memory usage: 587.03 KiB (Peak: 603.57 KiB) ]