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

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

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

You are not logged in.

Announcement

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


#1 2023-01-12 09:15:51

ミミ
Guest

文字列の部分一致でのリレーション

FMP19を使用しています。
どうにも上手くいかず、お力をお貸し頂きたくお願い致します。

・データテーブル[担当者フィールド]
・個人別テーブル[名前フィールド]

この2つのテーブルをリレーションしたいのですが、担当者フィールドには1人の名前が入っていることもあれば複数の名前が入っていることがあり、個人別フィールドには1人の名前だけが入ります。


[担当者フィールド]佐藤、鈴木、山本(または佐藤のみ)
[名前フィールド]佐藤

担当者フィールドの名前を繰り返しフィールドに1人ずつ分割して自動入力し、その繰り返しフィールドと[名前フィールド]をリレーションするなど試みてみたのですが、上手く動作しません。

何か良い方法がございましたらぜひご教示頂きたく、宜しくお願い致します。

#2 2023-01-12 09:33:33

チポ
Member

Re: 文字列の部分一致でのリレーション

個人別::名前

データ::担当者
を、ORで照合したいのでしたら

> 担当者フィールドの名前を繰り返しフィールドに1人ずつ分割して自動入力し、
> その繰り返しフィールドと[名前フィールド]をリレーション

これでいいのですが、、

Offline

#3 2023-01-12 09:59:42

ミミ
Guest

Re: 文字列の部分一致でのリレーション

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

やはり繰り返しフィールドとのリレーションが上手くいっていません。

書き忘れてしまったのですがリレーションの条件にもう1つ[日付]というフィールドがあるのですが、それが原因でしょうか?(日付と名前でリレーション)

#4 2023-01-12 10:05:16

Shin
Member

Re: 文字列の部分一致でのリレーション

データテーブル[担当者フィールド] から 個人別テーブル[名前フィールド] へリレーションしているのではないですか。
繰り返しフィールドからのリレーションは、繰り返し位置が1のフィールドがキーになります。
繰り返しフィールドへのリレーションは、繰り返しフィールド全体がキーになります。

もし、データテーブルに個人別テーブルの何かのフィールドを参照したいのでしたら、担当者名と同じ繰り返し数の繰り返しフィールドを用意してルックアップするのが簡単です。

Offline

#5 2023-01-12 10:07:07

チポ
Member

Re: 文字列の部分一致でのリレーション

リレーションの照合は

個人別::名前 = データ::担当者繰り返し
and
個人別::日付 =  データ::日付

でいいのですが。。


テーブルの説明が分からないのですが、
個人別テーブルに日付があるのでしょうか?

Offline

#6 2023-01-12 10:19:58

ミミ
Guest

Re: 文字列の部分一致でのリレーション

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

> データテーブル[担当者フィールド] から 個人別テーブル[名前フィールド] へリレーションしているのではないですか。

はい、そのようにしています。

・繰り返しフィールド「からの」リレーション
・繰り返しフィールド「への」リレーション

すみません、この違いが分からず…
「データベースの管理」のリレーション設定で、どちらが左でどちらが右か、という意味ではないですよね?

レイアウトで表示されている「参照している側」と「されている側」という意味でしょうか?

初心者レベルの質問で申し訳ございません…。

#7 2023-01-12 10:28:38

ミミ
Guest

Re: 文字列の部分一致でのリレーション

チポさん、再度ありがとうございます。

> 個人別::名前 = データ::担当者繰り返し
and
個人別::日付 =  データ::日付

この通りになっています。

大まかにご説明しますと、データテーブルには
・日付
・担当者(1人または複数)
・顧客名
などのフィールドがあります。

個人別テーブルには
・日付
・担当者(1人)
などのフィールドがあり、

個人別テーブルのレコードは「日付と担当者名」ごとに必要で、毎日1人1枚のレコードになります。

例えばデータテーブルの「顧客A」には3名(佐藤、鈴木、山本)で同行する場合もあり、「顧客B」は佐藤のみ、「顧客C」は山本のみの場合に、個人別テーブルで

・1/12の佐藤レコード…顧客A、顧客B
・1/12の鈴木レコード…顧客A
・1/12の山本レコード…顧客A、顧客C

としたいと思っています。

#8 2023-01-12 11:11:11

Shin
Member

Re: 文字列の部分一致でのリレーション

中間テーブルを作らないと無理でしょう。
データテーブル      担当テーブル      個人別テーブル
  時引キー         =     時引キー
                              担当者キー     =  担当者キー
  日付                                              氏名
  顧客名
という構成にして、担当テーブルをそれぞれポータルで表示しておくといいでしょう。

Last edited by Shin (2023-01-12 11:11:42)

Offline

#9 2023-01-12 11:12:01

チポ
Member

Re: 文字列の部分一致でのリレーション

個人別でその日に担当した顧客のリストを得る
ですよね?
どのような方法をとっていますか?

普通に考えれば、
Listを使った計算フィールド、
ポータルで表示
位でしょうが、いかがですか?

Offline

#10 2023-01-12 13:03:04

ミミ
Guest

Re: 文字列の部分一致でのリレーション

Shinさん、チポさん、何度もありがとうございました。
無事解決いたしました!

・データテーブル[担当者フィールド]を、別の[繰り返し担当者フィールド]に複数名の名前を分割して自動入力
・[繰り返し担当者フィールド]と個人別テーブル[名前フィールド]をリレーション

として上手くいっていなかったのですが、チポさんの

> Listを使った計算フィールド、

でList関数の使い方を知りまして、[繰り返し担当者フィールド]を[Listで改行する計算フィールド(非繰り返し)]に変更し、このフィールドとリレーションしてみたところ思い通りの結果になりました。


以前からお2人の回答には色々勉強させて頂いておりますが、今回は直接教えて頂き本当に助かりました。
ありがとうございました!

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 566.7 KiB (Peak: 582.45 KiB) ]