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

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

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

You are not logged in.

Announcement

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


#1 2023-07-30 22:09:40

関連レコードへ移動、逆方向は?

先日は、サービスAやサービスBのレコードから、該当顧客のレコードへ直達するスクリプトを教わり、便利になりました。
今回は、顧客のレコードからサービスAの該当レコードへ行けるよう、同じようなスクリプトを作成しましたが、うまく行きません。
顧客テーブルにサービスA外部キーを設定し、サービスA主キーとリレーションさせています。
顧客によっては、サービスAがない客(サービスBのみ)から、サービスAを数回している客までいます。
サービスAからの該当顧客は1人のみですが、顧客からサービスAは、0から数件となるので、中間テーブルが必要かもと考えています。
考え方やヒントなどよろしくお願いします。

Offline

#2 2023-07-30 22:27:33

himadanee
Guest

Re: 関連レコードへ移動、逆方向は?

サービスと顧客のリレーションで、どっちのフィールドも索引があるでしょう(サービスのテーブルに顧客の外部キー)から、追加の設定は不要のはずです。
「サービスAやサービスB」というのが1つのテーブルなら、移動してからサービスAのみ検索(絞り込み)です。

#3 2023-07-31 00:12:36

Shin
Member

Re: 関連レコードへ移動、逆方向は?

最初のリレーション方向が逆です。サービス側に顧客キーを保持させるように作ります。そうでないと、サービスを複数受けられると顧客テーブル側で複数のサービスキーを保持することになり、煩雑になります

Offline

#4 2023-07-31 06:53:19

himadanee
Guest

Re: 関連レコードへ移動、逆方向は?

ん?
>顧客テーブルにサービスA外部キーを設定し、サービスA主キーとリレーションさせています。
というのは、今回の質問のために追加した設定ということだと思ったけど、違うのかな。
いずれにしろ、Shinさんのおっしゃる通り、顧客(1)側にキーを持つのはサービスのレコード(多)を編集するたびにマスター側を変更しないといけないので面倒ですよね。
非保存計算フィールドでキーのリストを持つこともできるけど、普通はあえて持つ必要がないので...

「先日」というのが https://fm-aid.com/bbs2/viewtopic.php?id=14435 だとすると、サービステーブルは1つのようなので、関連レコードのうち特定のものだけという要望ですか。
関連レコードに移動してから絞り込みがいやなら、サービステーブル側に計算フィールドを追加してリレーションすることもできます。
Case(サービス="A";顧客外部キー)
みたいな感じで。
しかしどうせスクリプトでしかできないので、スクリプトに1ステップ追加する方が...

#5 2023-07-31 08:29:06

Shin
Member

Re: 関連レコードへ移動、逆方向は?

ひょっとして、そのサービステーブルは、マスターとしてのテーブルなのですか。

Offline

#6 2023-07-31 15:49:36

Re: 関連レコードへ移動、逆方向は?

早速のご回答ありがとうございます。
顧客テーブル、サービスAテーブル、サービスBテーブル、あとメンバーテーブルを作っています。
顧客テーブルとメンバーテーブルはマスターで、サービスAテーブルとサービスBテーブルはイベントになると思います。
サービスAから顧客レコードへ直行と、顧客レコードからサービスAのレコードへ、と逆方向なので、逆方向のリレーション設定が必要になると思っていました。
サービスAは、終了時を記録するので、該当のレコード(開始時に作成)を早く探せるように改善を試みているところです。それぞれの顧客について、最新の物だけ必要となります。
元から作ってあるサービスAに顧客外部キーのリレーションで、考えてみます。

Offline

#7 2023-07-31 17:46:28

Shin
Member

Re: 関連レコードへ移動、逆方向は?

具体的な動きがわかれば単純な仕組視で動きそうなのですが、書いてある内容で動きが全く想定できません。
また、サービスというのが何のことかわかりませんが、なんらかのイベントがあって、それに参加する顧客と、運営側のメンバーを管理するものなのでしょうか。また、イベントテーブルが2個あるのも、何とも違和感が強いです。

Offline

#8 2023-08-01 09:09:29

チポ
Member

Re: 関連レコードへ移動、逆方向は?

https://fm-aid.com/bbs2/viewtopic.php?id=14435
このスレの回答を参考にしてみてください。

Offline

#9 2023-08-09 23:26:27

Re: 関連レコードへ移動、逆方向は?

よく考えれば、顧客とサービスAから成るTOGを元にしたレイアウトで、顧客を検索すると、何とかできそうです。
イベントテーブル2個、サービスAとサービスBですが、顧客によっては両方の対象になるので、そのように作っています。
このソリューションがうまくできれば、過去に製作入力した、ファイルメーカーがリレーショナルになる前からのデータを取り込みたいと思います。

Offline

#10 2023-08-10 07:20:27

himadanee
Guest

Re: 関連レコードへ移動、逆方向は?

う~ん、結局どういう状態なのかわかりませんね。
リレーション定義自体に「方向」はないので、どっちかのキーにグローバルフィールドとか非保存計算フィールドを使ってなければ、どっちからどっちへも「関連レコードへ移動」できるのですが...
「関連レコードへ移動」は、結局のところある条件で検索しているのと同じこと(レイアウトの切り替えや検索条件の設定など複数の作業が1ステップに記述可能なだけ)なので、検索でやっても別に構わないですが...

#11 2023-08-10 09:40:40

Shin
Member

Re: 関連レコードへ移動、逆方向は?

> イベントテーブル2個、サービスAとサービスBですが、顧客によっては両方の対象になる
イベント、というテーブルを作るべきしょう。その中に、サービスA・サービスBを区分するフィールドを作ります。それをポータルで表示しておき、両方の場合にはポータルの内容が2行になるように作ればいいです。

Offline

#12 2023-08-11 21:01:43

Re: 関連レコードへ移動、逆方向は?

アドバイスありがとうございます。
サービスAとサービスBに、それぞれ関連テーブルを付けたいので、別テーブルで構築しています。
ポータルは中間テーブル上に作成すると思っていますが、合っていますか。
顧客も100人を超え、アイウエオ順のスクロールでは面倒になりました。数文字入れて検索できるよう改良中です。
皆様からのアドバイス、ヒントでノロノロですが、進んでいます。ありがとうございます。

Offline

#13 2023-08-11 21:53:15

Shin
Member

Re: 関連レコードへ移動、逆方向は?

> サービスAとサービスBに、それぞれ関連テーブルを付けたいので、別テーブルで構築しています。
1テーブルでも、同じ動きは作れます。
全体が小さいうちに改善しておくことをお薦めします。

> ポータルは中間テーブル上に作成する
両方のテーブルがどちらもマスターテーブルでしたら、その中間テーブルになりますが、見かけはサービス側のテーブルはマスターではなさそうですので、それをポータルとして使えばいいでしょう。

Last edited by Shin (2023-08-12 16:02:07)

Offline

#14 2023-08-16 18:53:03

Re: 関連レコードへ移動、逆方向は?

正規化の概念で別のテーブルと思いますが、1テーブルでも試してみます。
サービスのテーブルはイベントとなります。
顧客レコードからサービスレイアウトに行き、新規レコードを作成するスクリプトを作りましたが、顧客とは関係なく、ただ新規サービスレコードができるだけでした。
当面は、新規サービスレコードの顧客欄に入力します。

Offline

#15 2023-09-11 13:01:43

Re: 関連レコードへ移動、逆方向は?

顧客からサービスへの移動がどうしてもできないので、
リレーションシップの設定で、「このリレーションを使用してこのテーブルでのレコードの作成を許可」として、
先にサービスのレコードを作り、関連レコードへ移動のスクリプトで顧客レコードへ移動するようにしました。

Last edited by 古参初級者 (2023-09-11 13:04:11)

Offline

#16 2023-09-11 14:03:33

Shin
Member

Re: 関連レコードへ移動、逆方向は?

サービス、というものが、どのような概念でテーブルが作られているのかが具体的にわからないので、コメントがつかないのですよ。
1イベントごとに1テーブルを追加するのでしょうか。そうでしたら、正規化理論からの誤りです。
イベント毎、顧客毎のそれぞれの参加状況を見たいのですよね。

こんな構造にするのがいいと思いますが。(簡単な入力用の仕組みを組み込んであります。その部分は中級者向けです)
https://www.dropbox.com/scl/fi/hmpnhku3 … 2svu7&dl=0

Last edited by Shin (2023-09-11 19:05:10)

Offline

#17 2023-09-14 14:46:34

Re: 関連レコードへ移動、逆方向は?

Shin様

イベントは、2種類あり、サービスAとサービスBがイベントテーブルになります。
サービスAは、開始と終了があるので、終了時に顧客名からすぐに検索できるようにしたいですが、10件程度なので、スクロールでも何とかなっています。
顧客とメンバーがマスターになると思います。
サンプルファイルありがとうございます。じっくり勉強したいと思います。

Offline

#18 2024-01-22 15:41:40

Re: 関連レコードへ移動、逆方向は?

やっとできました。
顧客をアンカーとし、サービスをブイとするTOGを作り、顧客主キーと、サービステーブルの顧客外部キーをリレーションさせ、
関連レコードへ移動のスクリプトで、取得元をブイのサービステーブルにし、使用するレイアウトをサービスをTOGのアンカーとするレイアウトにしたらできました。
勘違いしていたことは、TOGで、左を外部キー、右を主キーとすると思い込んでいたことと、サービスをアンカー、顧客をブイとするリレーションを使うと思っていたことです。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.017 seconds, 9 queries executed - Memory usage: 558.93 KiB (Peak: 579.84 KiB) ]