みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして、SKBと申します。先日試用版をダウンロードして手探りを始めた初心者です。よろしくお願いいたします。
普段はWEB系の開発を行っておりますが、Filemakerの操作性やコード削減に魅力を感じて色々試しているところです。表題のテーブルの結合につきましては、Filemakerの概念からきっとズレているのではないかと感じておりますが、適切な表現が思いつかなかったのでご容赦ください。
さて、ネットショップから以下のような2つのCSVがダウンロードできまして、このファイルを元に商品一覧を作成したいと考えております。
1. 商品CSV
商品ID, 商品名
ITEM001, 商品1
ITEM002, 商品2
ITEM003, 商品3
2. 商品サイズCSV(商品サイズを持たない商品もあります)
商品ID, サイズ
ITEM001, 1kg
ITEM001, 5kg
ITEM003, 1L
ITEM003, 10L
これらネットショップから取得した2つのCSVを元に、以下のような商品一覧を作成したいと考えています。
商品ID, 商品名, サイズ
ITEM001, 商品1, 1kg
ITEM001, 商品1, 5kg
ITEM002, 商品2, (なし)
ITEM003, 商品3, 1L
ITEM003, 商品3, 10L
商品CSVの中にはサイズに分かれているものと分かれていないものがあり、例えば「ITEM001」は 1kg と 5kg のサイズに分かれておりますので、実在する商品は商品1の1kgパックと商品1の5kg の2商品ということになります。また、「ITEM002」は商品サイズCSVに含まれておりませんので、商品2そのものが実在する1商品となります。
このように作成したい「商品一覧」は、現実の商品と1対1で対応した表であり、それを元に在庫一覧や価格表を作れるのではないかと考えております。
このような場合、Filemakerではどのように実現することになるのでしょうか?
Filemakerで何ができるのか、何ができないのか、どうするべきなのかを分かっていない現時点で、おぼろげに思いつくアプローチとしましては、
1. 商品一覧テーブルのみを作成しておいて、2つのCSVをインポートする際に何らかの処理を挟んでテーブルに挿入・更新する
2. それぞれのCSV用のテーブルを用意しておいてインポートし、それらを元に上記のように結合した表をレイアウト上?に実現する
3. それぞれのCSV用のテーブルと商品一覧テーブルを用意して、CSVをインポートする際に商品一覧テーブルに挿入・更新する
4. 商品サイズCSVファイルの方に前処理(サイズなしの商品も空で登録)をしてからインポートして、商品サイズCSVテーブルのレイアウトで実現する。
5. そもそもFilemakerで商品マスタを作成し、それを元にネットショップに反映させるべき....(在庫を含めた最新のデータは常にネットショップ上にありますのでネットショップをマスタにしたいです...)
あたりなのですが、何かアドバイス・ヒントがいただけないかと思い質問致しました。
よろしくお願いいたします。
今回の目標は、一覧表を作ることだけでしたら、
商品 と 商品サイズ テーブルを作って、商品名(できれば商品コード)でリレーションを張っておきます。
それぞれのデータは、それぞれのテーブルへそのままインポートします。
在庫は、最も小さい範囲での区分で行われるべきでしょうから、この構造でしたらサイズテーブルで行われるべきですので、サイズが1サイズで省かれているものは、何らかのサイズに相当するデータをあらかじめ作っておくか、インポートした後にレコードを照合して、サイズのない商品のサイズレコードを作ります。
この作業には、サイズから商品テーブルへ関連レコードへ移動、対象外を表示、サイズテーブルへインポート、という処理だけでできます。
Offline
Shin様
ご回答ありがとうございました。
CSVファイルインポート後の状態を作って、以下のようにテストできましたのでご報告いたします。
1. 「商品」テーブル
商品ID, 商品名, サイズ
ITEM001, 商品1, (空欄)
ITEM002, 商品2, (空欄)
ITEM003, 商品3, (空欄)
2. 「商品サイズ」テーブル
商品ID, 商品名, サイズ
ITEM001, (空欄), 1kg
ITEM001, (空欄), 5kg
ITEM003, (空欄), 1L
ITEM003, (空欄), 10L
3. 商品IDでリレーションを張る
4. スクリプト(商品サイズレイアウト上のボタンに配置)
全レコードを表示
関連レコードへ移動 [ 関連レコードのみを表示 ; 対象レコードの照合 ; テーブル: 「商品」; 使用するレイアウト「商品」(商品)]
対象外のみを表示
レコードのインポート [ ダイアログあり:オフ ; テーブル: 商品サイズ ; 「商品.fmp12」; 追加 ; シフト JIS]
レイアウト切り替え [「商品サイズ」(商品サイズ); アニメーション : なし]
全レコードを表示
5. 実行結果(商品サイズ)
商品ID, 商品名, サイズ
ITEM001, (空欄), 1kg
ITEM001, (空欄), 5kg
ITEM003, (空欄), 1L
ITEM003, (空欄), 10L
ITEM002, 商品2, (空欄)
以上
分かりにくかった点は、レコードのインポート部分で作成したファイル自体を選ぶという点(これに気づくのに数時間かかりました...)と、
レイアウトの切り替えを行う点でした。
しかし、これだけのコードで済んでしまうのは本当に衝撃的ですね。
テストを踏まえて作り込んでいきたいと思います。
ありがとうございました。
Last edited by SK (2021-09-05 19:54:35)
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 562.97 KiB (Peak: 587.88 KiB) ]