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

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

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

You are not logged in.

Announcement

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


#1 2021-09-05 15:13:45

jjj
Member

既に登録があるか判定し、なければ新規レコード作成

環境
FileMakerPro19&Server
OS:Windows10

「指示書」テーブルから、必要事項だけを抜き出し(コピー)、
「商品マスター」に新規レコードを作り、その必要事項のペーストを行おうとしています。

両テーブルに、「指示書No」フィールドを設置し、
登録しようとする「指示書No」がない場合のみ、上記が行えるように判定したいと思いますが、
どうしてよいかわかりません。

なるべく簡潔な方法をお教えいただければ幸いです。
宜しくお願い致します。

Last edited by jjj (2021-09-05 15:19:50)

Offline

#2 2021-09-05 15:38:44

Shin
Member

Re: 既に登録があるか判定し、なければ新規レコード作成

商品マスターへのレコードの追加を行うのですよね。
指示書Noが、商品マスターへどう関連するのですか、商品マスターの中では、出荷などのデータは全く関係ないでしょう。

商品マスターの商品IDが無い(商品マスターに登録が無い)場合に、商品IDを設定する、ということでしたら、理解できますが。

もし、指示書の中で商品マスターに無いと判断したレコードを勝手に作る事を許可しておき、それを自動的に商品マスターに登録させる、という手順を考えているのでしたら、商品マスターの一意性が徐々に崩れて行きますよ。(必ず重複登録が繰り返されます)

どうしても、指示書の中で新規登録をしたいのでしたら、仮番号を与えておき、商品名や規格などを入力させてから、類似品を含めてマスターを検索させ、その上で登録する、という手順が必要なのでは。

Offline

#3 2021-09-05 16:15:24

jjj
Member

Re: 既に登録があるか判定し、なければ新規レコード作成

Shinさん、ご返信ありがとうございます。

Shin wrote:

商品マスターへのレコードの追加を行うのですよね。
指示書Noが、商品マスターへどう関連するのですか、商品マスターの中では、出荷などのデータは全く関係ないでしょう。

はい。出荷などのデータは必要ありません。
既に、過去作られた指示書の商品を商品マスターに登録しておこうと言う主旨ですので、
素材等の情報だけ転記するつもりです。

Shin wrote:

商品マスターの商品IDが無い(商品マスターに登録が無い)場合に、商品IDを設定する、ということでしたら、理解できますが。

商品マスターには、「商品登録No」と言うフィールドを別途設けてあります。
過去の指示書の情報を活かし、商品マスターへ追加を行う必要が出来たため、
商品マスターにも「指示書No」を設け、同じ指示書のデータを重複して取り込まないようにしようとしています。

Shin wrote:

もし、指示書の中で商品マスターに無いと判断したレコードを勝手に作る事を許可しておき、それを自動的に商品マスターに登録させる、という手順を考えているのでしたら、商品マスターの一意性が徐々に崩れて行きますよ。(必ず重複登録が繰り返されます)
どうしても、指示書の中で新規登録をしたいのでしたら、仮番号を与えておき、商品名や規格などを入力させてから、類似品を含めてマスターを検索させ、その上で登録する、という手順が必要なのでは。

この取込作業を行うのは、私(管理者)のみです。
極端な話、出荷情報などが異なるだけで、同じ仕様の商品の指示書が2枚あったとしても、
商品マスターに2つのレコードが出来てかまいません。
本来の商品マスターの概念とは異なるのは重々承知なのですが、この方法で取り込まれたレコードについては、後で転用することはなく、記録として登録するだけなので問題ないと考えています。

Offline

#4 2021-09-05 17:36:23

Shin
Member

Re: 既に登録があるか判定し、なければ新規レコード作成

> 商品マスターに2つのレコードが出来てかまいません。
> 本来の商品マスターの概念とは異なるのは重々承知なのですが、この方法で取り込まれたレコードについては、後で転用することはなく、記録として登録するだけなので問題ないと考えています。
この構造は、商品マスターという名前の、指示書明細テーブルですね。

現在登録済みの商品マスターというテーブルの各レコードには、指示書Noが登録してあるのでしょうね。
それでしたら、指示書の中に商品データが存在している事が2重データになるので、データベースの構造としては推奨できません。
そうでないのなら、商品マスターというテーブルをクリアして、全ての指示書の商品データを、指示書Noと合わせてインポートします。(指示書側の商品データは以後使用しません)指示書レイアウトで、商品マスターというテーブルをポータルで表示させておけば、同じ表示になります。

Last edited by Shin (2021-09-05 18:33:17)

Offline

#5 2021-09-05 18:33:09

jjj
Member

Re: 既に登録があるか判定し、なければ新規レコード作成

Shin wrote:

> この構造は、商品マスターという名前の、指示書明細テーブルですね。

もろもろ思うところありますが、そういうことになります(汗)。


Shin wrote:

現在登録済みの商品マスターというテーブルには、指示書Noが登録してあるのでしょうね。
それでしたら、指示書の中に商品データが存在している事が2重データになるので、データベースの構造としては推奨できません。
そうでないのなら、商品マスターというテーブルをクリアして、全ての指示書の商品データを、指示書Noごとインポートし、指示書側の商品データは消去します。指示書レイアウトで、商品マスターというテーブルをポータルで表示させておけば、同じ表示になります。

元々この商品マスターは、ご提案いただいた「ポータル表示させておけば同じ表示になります」、もしくは、”この商品マスターから”必要な部分のみ指示書に向かって転記する形を考えて作成してありました。
社内的な都合で、このような構造を作る事を迫られてしまったため、やむをえず、と言ったところだったのですが、今一度、社内であるべき構造での構築が出来るよう話あってみることにします。

ただ、共通の名を持つフィールドを照合し、登録がなければレコードを作る、と言う方法については、他の異なるテーブルでも使いたい技術となりますので、
これはこれで方法を教えていただければ幸いなのですが、いかがでしょうか?

Offline

#6 2021-09-05 18:45:13

Shin
Member

Re: 既に登録があるか判定し、なければ新規レコード作成

> 共通の名を持つフィールドを照合し、登録がなければレコードを作る、と言う方法
データベースの基本的な理論に合わせた動きでしたら、データの2重登録につながりますので、その動きは原則作らない方がいいです。
照合するフィールドをキーにしてリレーションし、その他のフィールドは関連レコードとしてレコードを作るといいでしょう。

今回のファイルも、本来でしたら、本当の意味の商品マスター(1商品1レコード)を作り、商品IDをキーにして全体を構築するべきです。入力が速くなり、集計も早くなり、ファイルも小さくなります。同じデータが重複して存在することは、メンテナンスの意味でも、データベースをシンプルに保つ意味でも、デメリットにしかなりません。

Offline

#7 2021-09-05 19:02:32

jjj
Member

Re: 既に登録があるか判定し、なければ新規レコード作成

Shin wrote:

> 共通の名を持つフィールドを照合し、登録がなければレコードを作る、と言う方法
データベースの基本的な理論に合わせた動きでしたら、データの2重登録につながりますので、その動きは原則作らない方がいいです。
照合するフィールドをキーにしてリレーションし、その他のフィールドは関連レコードとしてレコードを作るといいでしょう。

今回のファイルも、本来でしたら、本当の意味の商品マスター(1商品1レコード)を作り、商品IDをキーにして全体を構築するべきです。入力が速くなり、集計も早くなり、ファイルも小さくなります。同じデータが重複して存在することは、メンテナンスの意味でも、データベースをシンプルに保つ意味でも、デメリットにしかなりません。

そうですね、わかりました。
話せば長い理由もあるのですが、おっしゃる通りデータベース本来のあるべき姿ではないのはわかりますので、
全般的に構造を考え直してみます。

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

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.015 seconds, 7 queries executed - Memory usage: 543.22 KiB (Peak: 563.76 KiB) ]