みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
ファイルメーカーの初心者です。アドバイスわかりやすくいただけると助かります。
商品仕入処理で、仕入明細と同時に商品在庫も更新したい。
(関連テーブルの複数のテーブルのレコードを同時に追加または更新したい)
現状のご説明
・商品マスタと在庫マスタを分けて管理しています。
・テーブル構成
アンカーテーブル「仕入伝票テーブル」
リレーション
「仕入伝票テーブル」=「仕入明細」
「仕入明細」=「商品マスタ」
「仕入明細」=「在庫テーブル」
・ポータルに「仕入明細」を設定
現状:
ポータルの仕入明細の「商品追加」とともに、在庫テーブルの「在庫数」も増やしたいが、仕入明細レコードは
増えるが在庫テーブルのレコードが増えません。
スクリプトやSQLを書かないと同時に複数のテーブルの更新はできないのでしょうか。
ファイルメーカーで最適な方法を教えて頂けると幸いです。
よろしくお願いいたします。
Offline
合理的に考えればいいのでは。
例えば、仕入伝票の明細データは、1項目ごとにみれば入庫明細です。販売伝票の明細も、同様に出庫明細です。その入庫明細と出庫明細を合わせるみる(実際には、それに棚卸しの明細が追加されますが)と、在庫明細になります。
つまり、
仕入伝票 明細
仕入番号 - 仕入番号
販売番号
商品番号
入庫数量
販売伝票 明細
仕入番号
販売番号 - 販売番号
商品番号
出庫数量
在庫台帳 明細
仕入番号
販売番号
商品番号 ー 商品番号
入庫数量
出庫数量
というテーブル構成にすればいいです。
仕入番号、販売番号は、UUID を使えば共用できます。
Last edited by Shin (2020-12-22 21:28:41)
Offline
Offline
Shin様
アドバイスありがとうございます!
なるほど。それはシンプルでいいですね。その方向性で進めてみます。
参考までに教えて頂けるとうれしいです。
ファイルメーカーではテーブルを2つ同時に更新することはできないのでしょうか?
Offline
Moz様
はい。同じ質問をさせて頂きました。少し急いでおりまして。申し訳ございません。
Offline
マルチポストはマナー違反です。急いでいたら良いという道理はありません。
どちらかで解決したらもう片方にちゃんと報告できるならまだマシですが......。
テーブルを2つ同時に更新するというのは何をもって同時を意味するのでしょう?
スクリプトを使えば複数のテーブルに順次処理を行えます。
そうではなく標準のインタフェースのみ(スクリプトを使わずに)で
1箇所に入力した瞬間に他のテーブルにも同じことを行うという意味ですかね。
Offline
> それはシンプルでいいですね。
データの動きを正規化すると、必然的にこの構造になります。
もし、紙の在庫台帳が別に存在しているのでしたら、入庫伝票を見て、在庫伝票に区分しながら手で転記していく作業が必要でしょうね。これは、在庫テーブルの明細が別に存在していることと同じで、その転記をさせる作業(スクリプト)が別に必要となり、明細を入力するごとにそれを走らせることになります。
同じ操作でも、入庫伝票を複写紙で作ったとします。複写側をタイトル部分を含めて1行ごとに切り分けて、ラックに並べます。入庫番号でみれば入庫明細となり、商品コードごとに分類しておけば、それが在庫台帳になります。紙の複写は同じレコードを作る作業ですので、FileMaker では、リレーションマップでのオカレンスの複製と同じことです。
という具合に、手作業をデータの動きからみていくと、考え方がわかるはずです。
> ファイルメーカーではテーブルを2つ同時に更新することはできないのでしょうか?
その意図は?同じデータが複数のテーブルに別のレコードとして独立して存在することは、理論的には正しくありません。もし、そのデータが修正された場合、それを他のレコードに反映させる必要が出てきますので、非常に面倒です。例外は、リレーションなどのキーとして存在する場合です。
どのデータベースでも、単なる入力で複数のテーブルへ影響を与えることはできません。行うとすれば、何らかのアクションが必要です。FIleMaker で実現しようとするなら、トリガーか何かで、その動きを設定したスクリプトを起動する、という方法でしょう。
Last edited by Shin (2020-12-23 12:20:31)
Offline
Moz様、Shin様
アドバイスありがとうございます。
このような掲示板を利用するのは初めてで、マルチポストというマナー違反だとは知らず投稿しておりました。
大変申し訳ござませんでした。以後気を付けます。
テーブルオカレンスという概念がまだ理解できていなかったのかもしれません。改めて基礎から勉強したいと思います。
ありがとうございます。
Offline
[ Generated in 0.009 seconds, 10 queries executed - Memory usage: 564.84 KiB (Peak: 570.09 KiB) ]