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

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

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

You are not logged in.

Announcement

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


#1 2023-04-16 07:31:44

Fuji-san-2
Member

三連続するテキストデータの判定

Mac13.3.1 FP Ver.19での使用条件です。

講座の担当者の年間データ作成で困っています。
週5日、4クラス、1限目~6限まで講座があります。
ある一日の講座の担当者を割り振る際、3限連続する場合にメッセージを出させたいです。
1つの講座の担当者は複数名になることがあり、
4月20日 Aクラス 1限目 木下・鈴木
4月20日 Aクラス 2限目 山田
4月20日 Aクラス 3限目 西山・山田
中略
4月20日 Bクラス 1限目 鈴木・山田
4月20日 Bクラス 2限目
4月20日 Bクラス 3限目

でBクラス1限目に「山田」を入力した際にメッセージを出させるイメージです。

自己参照で、「日付」と改行処理した「担当者」をリレーションキーとして使い、重複データを探すのかと考えましたが上手くいきません。
お知恵を拝借できればと思います。よろしくお願いします。

Offline

#2 2023-04-16 10:07:11

himadanee
Guest

Re: 三連続するテキストデータの判定

日付と限-1(もうひとつ別のリレーションで限-2を使う)でリレーションして、2つのリレーションで両方とも同じ担当者がいればメッセージを出す、でいいのでは。

#3 2023-04-16 11:28:31

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

himadanee様 ありがとうございます。

「2つのリレーションで両方とも同じ担当者がいれば」の部分があまり分かっていません。
連続を判別するフィールドの計算式?を教えていただければ幸いです。

Offline

#4 2023-04-16 13:29:59

himadanee
Guest

Re: 三連続するテキストデータの判定

フィールド名が書いてないので...「1限目」のフィールドは?
そのフィールドから-1と-2する計算フィールド(テキストならSerialIncrementで可)を作って、それぞれでリレーションします。
すると(クラスは関係ないので)「4月20日 3限目」のレコードからは「4月20日 2限目」「4月20日 1限目」が関連レコードになるので、担当者フィールドを参照します。

>改行処理した「担当者」をリレーションキーとして使い
も併用してもいいでしょう。そうすると、「担当者フィールドを参照」しないで関連レコードの有無だけで判定できます。

#5 2023-04-16 19:48:14

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

himadanee様、

お付き合いいただき、ありがとうございます。うーん、私の理解が浅いようで、上手くいきません。

関係するフィールドは以下です。
日付(日付)
クラス(クラス)
限(数字)
講座名(テキスト)
担当者(テキスト)
担当者_改行(計算)→ 担当者が複数名の時に「担当者」フィールドを改行区切り

ここに
限_1(計算)→ 限-1
限_2(計算)→ 限-2
を索引設定済のフィールドとして作成しました。

自己参照のリレーションで
日付と日付、
担当者_改行、
限と限_1、そして限と限_2、
をつなげています。

三連続を判定するフィールドとして、
判定(計算)→
とここが分かりません。

リレーションの構成がまちがっているのでしょうか?
おそらくは、おっしゃっている、「関連レコードの有無」の理解が不足しているのでしょうが・・・

すみません、ご教示いただければ助かります。

Offline

#6 2023-04-16 21:06:20

himadanee
Guest

Re: 三連続するテキストデータの判定

ちょっと最後の質問とは別の話なのですが、最初に「Bクラス1限目に「山田」を入力した際にメッセージを出させるイメージ」と言ってたんでー1とー2でリレーションという方法を考えましたが、
順番に入力するとは限らないですよね?
例でいえば「4月20日 Aクラス 2限目 山田」を最後に入力したときにも何かしらメッセージが出ないとまずいのでは?

#7 2023-04-16 21:20:17

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

himadanee様、

おっしゃる通りです。言葉足らず、説明不足ですみません。
必ずしも順番通りの入力ではなく、「同じ担当者が3つの講座を連続して持つという条件」が揃ったことを判定したいのです。

Offline

#8 2023-04-17 10:03:24

チポ
Member

Re: 三連続するテキストデータの判定

> 担当者_改行
これがやりにくいので、
1担当者1レコードとします。
現状変えられないのなら、別テーブルで。。

さらに、時限照合用に計算フィールド・繰り返し3回を作り
時限
時限+1
時限+2
となるようにします。

リレーション
日付 = 日付
and
担当者 = 担当者
and
時限 = 時限照合用

これで、三回連続した、最後のレコードの
Countが3になります。

もう一つリレーションを
日付・担当者
として、
上記のCountのMaxが3
でアラートを出せばいいのでは。

Offline

#9 2023-04-17 13:45:52

Shin
Member

Re: 三連続するテキストデータの判定

講座テーブル  担当テーブル  担当テーブル2
  日付           =     日付          =    日付
  時限           =     時限
                          担当          =    担当
というリレーションを組みます。担当者は、一人1時限ごとに1レコードのテーブルにします。
担当テーブルの担当フィールドの制限の計算式に、

Let (
[
	ls = UniqueValues ( List ( 担当テーブル 2::時限 ) ) ;
	bs0 = List ( 時限 - 2 ; 時限 - 1 ) ;
	bs1 = List ( 時限 - 1 ; 時限 + 1 ) ;
	bs2 = List ( 時限 + 1 ; 時限 + 2 )
] ;
	Max (
		ValueCount ( FilterValues ( ls ; BS0 ) ) ;
		ValueCount ( FilterValues ( ls ; BS1 ) ) ;
		ValueCount ( FilterValues ( ls ; BS2 ) ) 
	) < 2
)

という式を設定します。
レコードを確定しようとしたときに評価されて、アラートが出ます。

https://www.dropbox.com/s/zxh7pm3qzgiu4 … 2.zip?dl=0

Last edited by Shin (2023-05-05 23:35:45)

Offline

#10 2023-04-17 16:37:51

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

チポ様 Shin様

ありがとうございます。少々お時間をいただいて、挑戦してみます。
結果はまた報告させていただきます。
重ねてありがとうございました。

Offline

#11 2023-04-17 22:23:47

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

チポ様、

チポ様のやり方をためてしているのですが、

さらに、時限照合用に計算フィールド・繰り返し3回を作り
時限
時限+1
時限+2
となるようにします。

の部分が分かりません。計算の繰り返しフィールドで、「時限+1」「時限+2」のように、個別の計算式を定義することができるのでしょうか?

Offline

#12 2023-04-18 09:07:09

チポ
Member

Re: 三連続するテキストデータの判定

「時限フィールド」の値の書式が
1限目
2限目
・・・
として、

繰り返しフィールドの計算式です
  Serialincrement ( 時限フィールド[1] ; Get ( 計算式繰り返し位置 ) - 1 )
繰り返しは必ず3回にします。


SerialIncrement関数のヘルプです
https://help.claris.com/ja/pro-help/con … ement.html
使い方を覚えてください。

Offline

#13 2023-04-18 12:47:35

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

チポ様、

ありがとうございます。その部分はできました。引き続きチャレンジしてみます。

Offline

#14 2023-04-21 22:12:35

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

チポ様、

もう一つ助けてください。

リレーション
日付 = 日付
and
担当者 = 担当者
and
時限 = 時限照合用
これで、三回連続した、最後のレコードの
Countが3になります。

の、最後、Countが3になる、の部分の計算式が分かりません。知識不足ですみません。どのような式になりますでしょうか?

Offline

#15 2023-04-24 08:57:39

チポ
Member

Re: 三連続するテキストデータの判定

Count ( 自己リレーション::担当者 )
のようなのでいいでしょう。

Count関数のヘルプです
https://help.claris.com/ja/pro-help/content/count.html

Offline

#16 2023-04-24 17:10:26

Fuji-san-2
Member

Re: 三連続するテキストデータの判定

チポ様、

ありがとうございます。上手くいきそうです。お助けいただき、ありがとうございました。

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: 592.95 KiB (Peak: 609.85 KiB) ]