初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2021-03-01 18:30:06

hiroy
Guest

商品のバリエーション展開

初めまして、
アパレルブランドを立ち上げ、商品や顧客の管理や販売の集計を行うためにFileMakerを始めた全くの初心者です。
いきなりつまづいてしまったので教えてください。

商品を管理したいのですが、サイズバリエーション(S/M/L/フリーサイズなど)とカラーのバリエーション(白/黒など)をどのように設定すれば良いのか悩んでしまっています。
(価格や素材など含めた)商品のテーブルと、サイズのテーブルとカラーのテーブルをつなげるのだとは思うのですが、サイズ/カラー2つのバリエーションをどう関係付ければ良いのかがわかりません。(商品とサイズ、商品とカラーはそれぞれ「多:多」で「サイズバリエーションテーブル」「カラーバリエーションテーブル」が必要でしょうか?さらにそれらをつなぐためには、、)

商品の登録も簡単に行いたいのと、ゆくゆくはそれぞれのバリエーション個別の集計や発注なども行いたいので、「商品A/サイズS/白」「商品A/サイズS/黒」「商品A/サイズM/白」、、というように順列組み合わせのように一覧できるようにもしたいです。
(カラーは全商品共通のコードにしています)

本当に初歩的な話なのだと思いますが、よろしくお願いいたします。

#2 2021-03-01 18:41:44

hiroy
Guest

Re: 商品のバリエーション展開

追記ですが、FileMaker Pro19をMacで使っています。

#3 2021-03-02 08:44:35

Shin
Member

Re: 商品のバリエーション展開

最終的に何を作るかによるのですが、単なるカタログレベルでしたら、1商品1レコードにして、その中にサイズとカラーを持たせておけばいいでしょう。(どのような作り方でも、基本的な商品マスターとして、この形のテーブルは必要になると思います)
在庫管理や販売管理を行うためには、サイズごと、カラーごとに別商品とみなさないと数の管理はできませんので、それぞれで1レコードを持たせていくことになるでしょう。このテーブルは、上のカタログテーブルからインポートをloopで繰り返す事で簡単に登録は可能です。

Offline

#4 2021-03-02 09:15:21

himadanee
Guest

Re: 商品のバリエーション展開

>インポートをloopで繰り返す事で簡単に登録は可能
ちなみに、SQLを使うと、全部の組み合わせを一発で生成可能です。
が、実際には、存在しない組み合わせを作ってもしょうがないので、1件ずつ手作業で登録することになるんじゃないかな~
在庫の初期値を入れるときに、使えるかな?

#5 2021-03-02 10:10:03

hiroy
Guest

Re: 商品のバリエーション展開

shin様、
ありがとうございます。
ベースになる商品マスター(カタログテーブル)と別に、全バリエーションのレコードを持ったテーブルを(インポートをloopで繰り返して)作る、ということですね。ここを分けるという発想がありませんでした。
FileMaker的(データベース的?)な見方で考えるというのがまずは初心者には難しいですね。
スクリプトも全く、、なのですが、「インポート」と「loop」という用語をいただきましたので調べてまずは形にしてみたいと思います。

himadanee様、
新たな用語、「SQL」ありがとうございます。
ゆくゆくは在庫の管理も行えるようにしたいと考えているので調べてみます。

#6 2021-03-17 19:01:30

hiroy
Guest

Re: 商品のバリエーション展開

自力でなんとかすると大見栄きったのですが結局そもそものところでつまずいております。

shin様のおっしゃる様な2種類のテーブルが必要なのが分かり、「カタログ的テーブル」は作ることができました。
その「カタログ的テーブル」を使って「個別テーブル」を作る方法がわかりません。
(「カタログ的テーブル」のデータを「個別テーブル」にインポートして作るという理解で合っていますでしょうか?)
その操作はどの様なタイミングで行うことなのか、ということがわかりません。(本当にそもそもの部分ですが)

商品の登録は「カタログ的テーブル」上のレイアウトで行いますが、そのタイミングで同時に別のテーブルにもデータを書き出すというイメージでしょうか?
それとも常に更新される様な設定にするということでしょうか?

インポートについて調べましたが「エクセルの住所録を取り込む」という様な、手作業で行う様な事例しか見つけられませんでした。
また同時に2つのテーブルを扱う様な使い方も見つけられません。。
よろしくお願いいたします。

#7 2021-03-18 21:01:38

Shin
Member

Re: 商品のバリエーション展開

シンプルなサンプルです。
https://www.dropbox.com/s/70it3a4otqaog … 2.zip?dl=0
構造はシンプルですが、内容は少々高度かもしれません。
サイズ、カラー展開したレコードを別テーブルに作り、メインテーブルから、個別に追加削除ができます。

ちょっとファイルの形を変えれば、販売店での在庫管理にも応用できます。

Last edited by Shin (2021-03-18 21:02:25)

Offline

#8 2021-03-19 11:59:32

hiroy
Guest

Re: 商品のバリエーション展開

shin様、

サンプルまで、、ありがとうございます!
すごいです、本当にシンプルです。
ただリレーションシップグラフを見てもレイアウトを見ても、何が行われているのか今の私には理解するのすら相当大変そうです。
まずは分析して理解することから始めます。
本当にありがとうございます。

#9 2021-08-14 22:55:37

hiroy
Guest

Re: 商品のバリエーション展開

大変間が空いての投稿、失礼いたします。

前回shin様にサンプルまでいただきましたが、結局中身の理解ができず自分のやろうとしていることと組み合わせることができず諦めていました。(申し訳ありません)
その後スクリプト を少しづつ理解しloopとimportで、当初の目的「商品テーブル」から「商品詳細」テーブルの変換をなんとか(ある程度)形にすることができました。

1.商品テーブルの「変換」ボタンでスクリプト を起動
2.「商品詳細」テーブルに「商品テーブル」からカラーバリエーション×サイズバリエーション分の数のレコードをインポート
3.インポートしたレコードを検索
4.loopを使い「フィールド設定」でカラーを置き換え
5.loopを使い「フィールド設定」でサイズを置き換え

ざっくりこんな手順なのですが、4.で「レコード/検索条件/ページへ移動 [次の; 最後まできたら終了:オフ]」で(101)レコードが見つかりません」とエラーが出てしまいます。(3.で検索しているので最後まで行くと次のレコードはないのは当然なのですが。)
これを回避するにはどうしたら良いでしょうか?


4.の部分のみ貼ってみますが、これでわかりますでしょうか?
5.で入れるサイズの分だけ連続してカラーを入れるようにしたので(私的には)ちょっと複雑です。この辺りの構成もシンプルにできる様な気がするので何かアドバイスいただけたら幸いです。(本当は全体をチェックしていただきたいくらいですが、、)

[img=hiroy sample]/Users/araihiroyuki/Desktop/スクリーンショット 2021-08-14 22.08.31.jpg[/img]

#10 2021-08-14 23:05:13

hiroy
Guest

Re: 商品のバリエーション展開

(まずは画像の貼り方を教わらないといけない様です、、)

#11 2021-08-15 00:41:25

hiroy
Guest

Re: 商品のバリエーション展開

一応手書きしました。
$clr_variはカラーの値一覧(繰り返しフィールド)
$size_num はサイズの数、$clr_numはカラーの数
---以下、4.部分のサンプル---

3.より

Loop
  Loop
    フィールド設定 [ 商品詳細 ; ; 色番号 ; GetValue ( $clr_vari ; $cnt) ]
    レコード/検索条件/ページへ移動 [ 次の; 最後まできたら終了:オフ ]
    変数を設定 [ $size_num ; 値: $size_num -1 ]
    Exit Loop If [ $size_num = 0 ]
  End Loop
  変数を設定 [ $size_num ; 値: 商品詳細_商品 : : サイズ数 ]
  変数を設定 [ $cnt ; 値: $cnt+1 ]
  Exit Loop If [ $cnt = $clr_num+1 ]
End Loop

5.へ続く

#12 2021-08-15 05:03:44

Shin
Member

Re: 商品のバリエーション展開

エラーの対処は、次のレコードへ移動で、最終レコードになれば終了のオプションをオンにするべきなのでは。

2.「商品詳細」テーブルに「商品テーブル」からカラーバリエーション×サイズバリエーション分の数のレコードをインポート
で、想定されている数のレコードができていますか?

3.インポートしたレコードを検索
は、必要ですか?インポートした直後ですと、インポートしたレコードのみが対象になっていますので、そのまま次の処理を行えばいいはずです。

4.loopを使い「フィールド設定」でカラーを置き換え
5.loopを使い「フィールド設定」でサイズを置き換え
2次元の表を作ることになるので、カラーと色の組み合わせで、カラーが aaabbbccc、サイズが、smlsmlsml という文字列を作ることになるのですが、これはできていますか。
これも、Get ( レコード番号 ) をみて、一気にやったほうが簡単ですよ。
別々に行いたいのでしたら、Mod ( Get ( レコード番号 ) - 1 ; $clr_no ) + 1 で色情報を設定し、Div ( Get ( レコード番号 ) - 1 ; $size_no ) + 1 でサイズを設定することになります。2回loop を回してもいいですし、1回で両方設定してしまってもいいです。

私の過去のサンプルは、この色とサイズの組み合わせを計算式繰り返しフィールドに作ってしまい、それをインポートするときに複数のレコードに分解するオプションを使っているだけです。結局同じことをしているのですが。

Last edited by Shin (2021-08-15 05:09:54)

Offline

#13 2021-08-15 08:53:14

ブランコ
Member

Re: 商品のバリエーション展開

hiroy wrote:

(3.で検索しているので最後まで行くと次のレコードはないのは当然なのですが。)
これを回避するにはどうしたら良いでしょうか

ループの前にレコード移動:最初を置けばいいのでは?


インポートオプションの繰り返しフィールドをレコード分割は非常に役に立つので覚えた方がいいテクニックです。
質問者さんのフィールド構成がよくわからないのでなんとも言えませんが、少なくともカラーバリエーション情報を保持した商品詳細レコードの作成はスクリプトを一箇所変更するだけで作成可能です。

shinさんのサンプルファイルを見たわけではありませんが、カラーバリエーションとサイズを二次元的に繰り返し計算フィールドに落とし込む式は、ヘルプとにらめっこしながら読んでいけば充分理解出来るものだと思います。これが理解出来れば質問者さんの目的とするスクリプトは
レイアウト切り替え
インポート
のわずか二行で実現可能です。

Offline

#14 2021-08-15 12:11:10

hiroy
Guest

Re: 商品のバリエーション展開

Shin様、
早速の返信ありがとうございます。

Shin wrote:

エラーの対処は、次のレコードへ移動で、最終レコードになれば終了のオプションをオンにするべきなのでは。

色々試している過程でオフになっていました。オンにします。

Shin wrote:

2.「商品詳細」テーブルに「商品テーブル」からカラーバリエーション×サイズバリエーション分の数のレコードをインポート
で、想定されている数のレコードができていますか?

3.インポートしたレコードを検索
は、必要ですか?インポートした直後ですと、インポートしたレコードのみが対象になっていますので、そのまま次の処理を行えばいいはずです。

2.ではLoopで必要回数取り込んでいるのですが、2.終了時点では対象レコードは最後に取り込んだ一つだけになってしまいます。
なので取り込んだ分全てを対象にする様に検索しています。(2.をLoopで行うのがが正解ではないということでしょうか、、)

Shin wrote:

4.loopを使い「フィールド設定」でカラーを置き換え
5.loopを使い「フィールド設定」でサイズを置き換え
2次元の表を作ることになるので、カラーと色の組み合わせで、カラーが aaabbbccc、サイズが、smlsmlsml という文字列を作ることになるのですが、これはできていますか。

文字列にするのではなく取り込む順番を変えてLoopさせています。
(最後まで動けば)とりあえずその様な形で取り込まれています。

Shin wrote:

これも、Get ( レコード番号 ) をみて、一気にやったほうが簡単ですよ。。

私の過去のサンプルは、この色とサイズの組み合わせを計算式繰り返しフィールドに作ってしまい、それをインポートするときに複数のレコードに分解するオプションを使っているだけです。結局同じことをしているのですが。

なるほどです。入れていく順番を変えることしか思いつかず、レコード番号を使うというのは考えにありませんでした。
そ説明していただくと理解できそうな気がしてきました。
ありがとうございました。

#15 2021-08-15 12:38:48

hiroy
Guest

Re: 商品のバリエーション展開

ブランコ様、
早速の返信ありがとうございます。

ブランコ wrote:

ループの前にレコード移動:最初を置けばいいのでは?

Loopの過程で「次のレコードに」進めるために置いているので他の場所の想像がつかないのですが、Loopの前というのはどこになるのでしょう?

ブランコ wrote:

インポートオプションの繰り返しフィールドをレコード分割は非常に役に立つので覚えた方がいいテクニックです。

インポートで「繰り返しフィールドをレコード分割」することが可能なんですね!
調べてみたいと思います。

ブランコ wrote:

shinさんのサンプルファイルを見たわけではありませんが、カラーバリエーションとサイズを二次元的に繰り返し計算フィールドに落とし込む式は、ヘルプとにらめっこしながら読んでいけば充分理解出来るものだと思います。これが理解出来れば質問者さんの目的とするスクリプトは
レイアウト切り替え
インポート
のわずか二行で実現可能です。

『スクリプト の基礎の基礎』という動画で語られてた「手作業の順序でスクリプトを書く」ことでやっとスクリプト が動くのを実現できたような段階なので、二次元的にということも含め思いつかないことがまだまだたくさんです。
(周りくどいことをしている、、とは感じていましたが)
二行に近づけられる様に勉強していきたいと思います。(今は90行くらいです笑)

ありがとうございました。

#16 2021-08-15 12:56:47

Shin
Member

Re: 商品のバリエーション展開

hiroy wrote:

インポートで「繰り返しフィールドをレコード分割」することが可能なんですね!
調べてみたいと思います。

サンプルの中で使っていましたので、よくみてみてください。
サンプルのスクリプトも、重複操作をチェックするための部分がほとんどで、実質数行です。

Offline

#17 2021-08-15 22:42:40

ブランコ
Member

Re: 商品のバリエーション展開

hiroy wrote:

『スクリプト の基礎の基礎』という動画で語られてた「手作業の順序でスクリプトを書く」ことでやっとスクリプト が動くのを実現できたような段階なので、二次元的にということも含め思いつかないことがまだまだたくさんです。。

この動画を見たことがないのでよくわからないですが、自分の実現させたい事を手作業で行い、その動きをスクリプトに書き出すといったようなものでしょうか?
この考えをもとにスクリプトを見ると、やりたい事としては対象レコード全ての色番号フィールドに色を設定するわけですよね。そのためには、ループで五月雨式に色を入力する前に、アクティブレコードを最初のレコードにしてやる必要があります。
つまり、ループスクリプトのすぐ手間にレコード移動:最初をループスクリプトの「次のレコードに」とは「別で」配置してやる必要があります。
ファイルメーカーに限らず、ループ処理というのはループのすぐ手前に初期値を宣言してあげるのが一般的なスタイルです。

hiroy wrote:

二行に近づけられる様に勉強していきたいと思います。(今は90行くらいです笑)

二行といったのはインポートの核となる部分の話で、対象レコードの指定やらを含めると二行では難しいです笑。
しかし、90行ですか。私は頭の出来があまりよろしくないので、90行のスクリプトステップを読むのは脳が拒否しそうです。やはり繰り返し計算フィールドのマスターをオススメします。

Offline

#18 2021-08-16 00:52:46

hiroy
Guest

Re: 商品のバリエーション展開

ブランコ wrote:

この動画を見たことがないのでよくわからないですが、自分の実現させたい事を手作業で行い、その動きをスクリプトに書き出すといったようなものでしょうか?

すいません、具体的な手法ということではなく「そう考えられるからスクリプトは難しくないよ、やってみようよ!」と初心者の気持ちのハードルを下げるための誘い文句の様なものでした。
(それで今回、前述の様な1〜5のプロセスになって、スクリプトは90行になったわけですが笑。)
ただそのスタートからとりあえずスクリプトが動いたことは、プログラミング的な素養の全くない私にとってはかなり嬉しく誘い文句に乗ってよかったと思いました。

ブランコ wrote:

この考えをもとにスクリプトを見ると、やりたい事としては対象レコード全ての色番号フィールドに色を設定するわけですよね。そのためには、ループで五月雨式に色を入力する前に、アクティブレコードを最初のレコードにしてやる必要があります。

実際の動作の構築ももちろんなのですが、その前段階の用意というか準備のための操作/記述というのが初心者にとっては本当に難しいです。
(途中のチェックや問題回避のための用意なども)
場数踏んで慣れるより他ないことなのは理解していますが。。

ブランコ様推奨の繰り返し計算フィールドやShin様からのサンプルを理解し、自分のスクリプトに反映させるにはもう少し時間がかかるかもしれませんが、自分が理解できた範囲から次の段階への道筋が見えたきがします。質問してよかったです。

ありがとうございました。

#19 2021-08-16 13:55:09

Shin
Member

Re: 商品のバリエーション展開

追加ですが、
この2次元への展開は、実は、カラーとサイズが同じ数という時には、n進数への変換と同じ動きになります。例えば、3×3のばあい、3進数をみると、
00
01
02
10
11
12
20
21
22
となりますね。この3の桁と1の桁をみると、上で書いた、aaabbbccc、smlsmlsml と同じですね。理解の助けになれば。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.042 seconds, 9 queries executed - Memory usage: 582.9 KiB (Peak: 619.8 KiB) ]