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

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

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

You are not logged in.

Announcement

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


#1 2023-05-14 18:12:08

かりもふ
Guest

中間テーブルを介したポータルの行の複製と削除が上手く行かない

いつもお世話になっております。
FMP19をWindowsで活用しています。いつもみなさまの投稿で勉強させていただいています。

表題についてご質問したいことがあります。
現在使用しているカスタムAppで案件に紐づく商品を入力しています。
(案件が1、商品が多)

テーブル構成は「案件」、「明細」、「商品」の3つのテーブルがあって
大元となる「案件」から「明細」を中間に挟んで「商品」をリレーションした
「案件_明細_商品」TOを作って、
大元となる案件テーブル上にそのTOのポータルを配置し、そこに入力していっています。
入力自体はこれで問題ないのですが、ポータル上で実行する以下の2つのスクリプトの動作に問題があります…。

↓ポータル上で実行しているスクリプト
【商品複製スクリプト】
1. 変数を設定 [$name,商品名]
2. 変数を設定 [$standard,規格]
3. ポータル内の行へ移動 [選択:オン、最後の]
4. フィールド設定 [案件_明細_商品::商品名; $name]
5. フィールド設定 [案件_明細_商品::商品名; $standard]

【削除スクリプト】
1. ポータル内の行を削除 [ダイアログあり:オフ]

このスクリプトですが、どちらも単体で使う分には問題ないのですが、
【商品複製スクリプト】で複製した商品を【削除スクリプト】で削除した場合、
「商品」テーブルのレコードは消えるけど、「明細」テーブルには残るという感じになってしまいます。
これはスクリプトの組み方が悪いのか、中間テーブルを挟んでしまう以上、仕方がないことなのでしょうか?
お知恵を貸していただけたら幸いです。

#2 2023-05-14 20:02:16

himadanee
Guest

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

「案件」が案件のマスタ、
「商品」が商品のマスタ
だとすれば、「商品の複製」というのはマスタでなく明細の複製ですよね。(同じ商品の複数使用)
その場合商品テーブルにレコードが追加されたらまずいですが...

>「商品」テーブルのレコードは消えるけど、「明細」テーブルには残る
削除スクリプトは、ポータル行削除ということは、明細の削除ではないのですか?

#3 2023-05-14 21:46:59

Shin
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

商品テーブルは、商品マスターですよね。
私なら、そのスクリプトは
   関連レコードへ移動[新規ウインドウ:関連するレコードを表示]
   レコード複製
   ウインドウを閉じる
と作ります。持っていくデータが無いので、シンプルになります。
明細を複製するので、ポータルの行削除で削除できるはずです。

商品マスターの各レコードにユニークなフィールドを作り、それを商品コードとしてそのコードで入力していく事をお勧めします。

Last edited by Shin (2023-05-15 08:52:47)

Offline

#4 2023-05-15 09:45:11

チポ
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

> 「案件_明細_商品」TO
これは商品テーブルですか?

お二人が書かれているように
商品テーブルは1商品1レコードの商品マスタ?

それとリレーションの説明も。。

Offline

#5 2023-05-17 20:06:55

かりもふ
Guest

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

himadanee様、Shin様、チポ様

返信ありがとうございます。
すみません、説明が足りていませんでした…
あと勘違いしていこともありました。

商品テーブルは1商品1レコードの商品マスタになりまして、
「案件_明細_商品」TOは案件→明細→商品のリレーションで繋げた商品マスタです。
リレーションシップは以下のような形になります。
案件(1)→明細(多)、
明細(1)→商品(1)

普通なら「明細」テーブルは不要だと思うのですが、帳票作成のために使っています。
(「商品」以外にも「製版」、「プリント」のテーブルがあり、「明細」を中間テーブルにすることで
納品書や請求書等の帳票を「明細」をリスト表示したレイアウトで作成しています。)

> >「商品」テーブルのレコードは消えるけど、「明細」テーブルには残る
> 削除スクリプトは、ポータル行削除ということは、明細の削除ではないのですか?

すみません。再度試してみたら手入力であっても、削除スクリプト実行で「明細」テーブルには残りました…。
(何故か「明細」「商品」共にレコードが消えると思っていました。)
複製スクリプトが悪いわけではなかったみたいです

Shin様の

>関連レコードへ移動[新規ウインドウ:関連するレコードを表示]
>レコード複製
>ウインドウを閉じる

これを「明細」、「商品」両方にやることで削除スクリプトのポータル行削除で両方のテーブルから消えるようになりました…!
しかし、スクリプト実行中、ウインドウが表示されてしまうのですが、これをユーザーに見せない方法はありますか?(ウインドウの固定を試してみましたが見えました)
あと、手入力でも「明細」、「商品」消せるようにしたいのですが、何かいい方法はありますでしょうか?

質問ばかりで申し訳ありません……よろしくお願いいたします。

#6 2023-05-17 22:09:26

Shin
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

案件レコード(受注票と同等ですよね)の下に明細テーブルを作るのは、その各レコードの取引先、取引日から計算した締日の情報をキーにして集計し、月毎の請求書を作ります。ごく普通の事です。

なぜ、商品マスターのレコードを削除する必要があるのですか

Last edited by Shin (2023-05-17 22:16:59)

Offline

#7 2023-05-18 09:03:36

チポ
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

案件テーブルに商品マスタのポータルを置くことが間違いで、
詳細のポータルを置いて、そこへ入力することで詳細のレコードを作ってゆく。

詳細のレコードは積み重ねてゆくのが普通で削除は考えません。

また、
商品マスタは普通のユーザーは手を付けないようにするのが常道でしょう。

Offline

#8 2023-05-19 09:32:07

himadanee
Guest

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

>詳細のレコードは積み重ねてゆくのが普通で削除は考えません。
その通りで、入力ミスのときは削除ということもあるかもしれませんが...
その場合も詳細を削除するだけで商品マスタは削除したらだめですよね。

「商品」というのが1点もので同じ商品は二度使わないようなものなんですかね??

#9 2023-05-19 11:13:51

Shin
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

> 「商品」というのが1点もので同じ商品は二度使わないようなものなんですかね??
#1 で、商品レコードを複製してそのまま使っているので、それは無いでしょう。
データベースの根本的な動きを誤解されていますね。

Offline

#10 2023-05-19 11:14:53

チポ
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

> 案件テーブルに商品マスタのポータルを置くことが間違いで
こう書きましたが、間違いとは言い切れないか。。

そのポータルに入力したり、削除するのが間違いで、
詳細の入力補助に、商品の一覧表示をするのなら、それも有りですね。

> 「商品」というのが1点もので同じ商品は二度使わない
ああ、それも考えられますね。
とすれば商品マスタが不要になるのでは。

Offline

#11 2023-05-20 08:45:13

Shin
Member

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

ひょっとして、商品テーブルをポータルで表示しているのは、その案件で入力した内容の明細に対応する商品レコードを表示するためなのですか。
それなら、明細ポータルの中に、明細の内容と、そこから関連づけた商品テーブルのレコードを並べておけばいいです。

スクリプトの実行中に別ウインドウが表示される点は、新しいウインドウを目立たない位置に小さく表示させればいいでしょう。モニターの表示外でも動きに問題はないのですが、何かのトラブルと時に少し面倒です。

Last edited by Shin (2023-05-20 08:47:26)

Offline

#12 2023-05-20 09:17:51

himadanee
Guest

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

商品マスタが一般的なものなら、1つの商品が複数の案件で使われるので、
<quote>リレーションシップは以下のような形になります。
案件(1)→明細(多)、
明細(1)→商品(1)</quote>ではなく
案件(1)→明細(多)、
明細(多)→商品(1)
ということになっていて、明細にレコード追加する際に商品に追加する必要はないし、明細からレコード削除する際に商品からは削除しません。

#13 2023-05-20 14:56:21

かりもふ
Guest

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

Shin様、チポ様、himadanee様

ありがとうございます、返信が遅くなって申し訳ございません…!
そしてまたもや説明不足で申し訳ございません…。

himadanee 様
>「商品」というのが1点もので同じ商品は二度使わないようなものなんですかね??
はい、その通りです。すみません「商品」というテーブル名がすごく紛らわしいですよね…
業務の内容としては、お客さんから送られてきたものにプリントを行ったり加工したりして送り返す、
というものなので、商品マスタは常に1回限りの物として使用しています。
(複製機能を使いたいのは、「タオル ホワイト」、「タオル ブラック」、「タオル ブラウン」……等、一部だけ違うパターンを登録するためです)

チポ様
>とすれば商品マスタが不要になるのでは。
たしかに商品マスタはいらないかもですね…。
チポ様がおっしゃる明細マスタに商品情報を登録するやり方がベストでしょうか…

#14 2023-05-20 20:55:38

himadanee
Guest

Re: 中間テーブルを介したポータルの行の複製と削除が上手く行かない

>「商品」以外にも「製版」、「プリント」のテーブルがあり
ということなので、中間テーブルがあってもいいのでは。
全部1テーブルで済むなら構造的には簡単かもしれませんが、レコードによって使わないフィールドが増えるわけでしょうから、どっちがいいのか。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 562.44 KiB (Peak: 582.98 KiB) ]