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

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

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

You are not logged in.

Announcement

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


#1 2018-02-08 15:13:10

pyape
Member

1対多を同時に2つやる方法

親1と子1
親2と子2
というテーブルがあるとして、それぞれの親子はIDでリレーションを組んでいるとします

親1と子1を1対多でポータル入力する
そのポータルに子2のフィールドも配置したとき
親2と子2でも1対多でレコードを作成するにはどうやったらいいですか?

親1と子2の関係のように、親2のレイアウト(子2をポータルで表示させる)を表示させたときに、
ポータルに関連する子2のレコードが表示されるようにしたいです
もちろん修正や削除したら親2も変更されるようにしたいです

WINDOWS10 FM16 です

Offline

#2 2018-02-08 15:55:22

チポ
Member

Re: 1対多を同時に2つやる方法

親1と親2は異なるテーブルですか?
それと同テーブルのオカレンスですか?

子に付いても同じ質問です。

Offline

#3 2018-02-08 16:35:48

pyape
Member

Re: 1対多を同時に2つやる方法

はい。それぞれ異なります
うまく伝えられなくも申し訳ありません

親1と子1が1対多
親2と子2が1対多
ということです
あとから気がついたのですが親1と親2も1対多にする必要があるかもしれません

親1テーブルのレイアウトにポータルを配置して、
子1と子2のフィールドを配置
親1と子1は1対多の関係でレコードを作成していけますが
同様に親2と子2の1対多にしたいということです
ポータルの子2のフィールドのユニークな値ごとに、親2にレコードを作成したいです

結果的にそのような形でレコードが作成されればいいので
スクリプトでレコードを作成するような感じでもかまいません

子2のフィールドを集計フィールド(一覧)にして
それからユニークな値を抽出して親2にレコードを作成するようなことも考えましたが
子2のレコード修正や削除に対応できそうになかったのでどうやっていいかわからなくなりました

抽象的に書いたほうがわかりやすいと思ってそうしていましたが
わかりにくくてすみません

親1=伝票 子1=詳細
親2=下請伝票 子2=下請詳細
といった感じです
ある売上に対して伝票を作成して詳細を入力する
その詳細レコードごとに、下請けに発注するので下請詳細に入力
その下請詳細を下請伝票にまとめる、ということです

この伝票の売上は1000円。詳細はこれこれ。下請けは全部で2社つかった(下請伝票をみればわかり、支払明細はこれをもとにつくる)、その詳細はこれこれ(下請詳細)
とわかるようにしたいです

説明が下手なのでわけがわからないかもしれませんが
なんとなく伝わったでしょうか?

Offline

#4 2018-02-08 16:55:35

チポ
Member

Re: 1対多を同時に2つやる方法

> 親1テーブルのレイアウトにポータルを配置して、
> 子1と子2のフィールドを配置

子1と子2の関係が書かれていません。

何らかでリレーションしたとしても、
配置された子2のフィールドは子1から見て照合1番のレコードのものとなります。

Offline

#5 2018-02-08 17:21:16

Shin
Member

Re: 1対多を同時に2つやる方法

子1詳細と親2下請伝票 は、同じものと看做せるのでは。
伝票 -> 下請伝票 -> 明細
と考えれば良いのでしょう。

Offline

#6 2018-02-08 17:36:39

pyape
Member

Re: 1対多を同時に2つやる方法

下請伝票に売上詳細もいれるんですか?

Offline

#7 2018-02-08 22:00:33

Shin
Member

Re: 1対多を同時に2つやる方法

1売上詳細が、1下請けならば、それでもいいのでは。
ただ、売上伝票から親伝票の他のレコードへつなぐリレーションを張り、内容を区分すると良いかも。

Offline

#8 2018-02-09 00:37:25

pyape
Member

Re: 1対多を同時に2つやる方法

売上 下請 などレコードの内容ごとにテーブルにわけなくても、
区分などでそれぞれを抽出できるようになっていれば
データベース的には問題ないということですか?

できる限りは分けたほうがメンテナンスなどがし易いということでしょうか

Offline

#9 2018-02-09 09:30:52

チポ
Member

Re: 1対多を同時に2つやる方法

テーブルを作るときに、
何を基準に1レコードとするか
をしっかり考えるべきです。

例えば、
住所録を作るのに
  1個人を1レコードとする
と考えるか、
  1所帯を1レコードとする
と考えることも出来ますよね。

また、
納品の製品1件ごとを1レコードとする詳細テーブル
その詳細をまとめて納品1件を1レコードとする伝票テーブル
こういうのもありますね。

で、
その基準となるものが同じテーブルは作らない。
これが大事です。

同じテーブルが複数あると、
その同期、整合性を保つのが大変になりますよ。

Offline

#10 2018-02-09 15:30:28

Shin
Member

Re: 1対多を同時に2つやる方法

親受 = 明細 というのと、親受 = 下請 = 明細 があると、一括した処理ができない、という事です。親受のところで、下から上がってくる費用の総計が必要ですよね、
そのような処理があるのかどうかを書いていただけないと、先に進めません。

Offline

#11 2018-02-09 17:05:48

pyape
Member

Re: 1対多を同時に2つやる方法

親受に対して複数の明細
その明細に対してそれぞれひとつの下請明細

です

別のレイアウトで
下請伝票に対して複数の下請明細
で入力するデータもあるので、統一するために
下請明細 から、下請伝票をつくりたいということです

Offline

#12 2018-02-09 17:57:35

Shin
Member

Re: 1対多を同時に2つやる方法

親受 = 下請 = 明細 だけで言い様ですね。明細と下請伝票は同じモノと考えれば、
https://www.dropbox.com/s/ej9uznfqi7u1l … 2.fp7?dl=0

Last edited by Shin (2022-11-10 10:05:14)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 569.15 KiB (Peak: 586.05 KiB) ]