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

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

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

You are not logged in.

Announcement

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


#1 2023-05-05 06:59:40

Fuji-san-2
Member

重複するレコードで、重複する過去レコードと共に判別する方法

FM Ver.19
Mac Ventura下での利用です。

重複するレコードが入力された際、重複した新しいデータは、自己リレーションを利用して判別することができています。
このとき、重複していた元の過去データも判別したいのですが、可能でしょうか?

例:
レコード番号 納品日 項目
1      5月5日 りんご
2      5月5日 バナナ
3      5月5日 ぶどう
4      5月5日 バナナ
5      5月5日 みかん

4のバナナは判別できていて、2のバナナも判別したいです。

過去ログに同様の質問があったならすみません。一応確認したのですが・・・

Offline

#2 2023-05-05 10:05:52

Shin
Member

Re: 重複するレコードで、重複する過去レコードと共に判別する方法

何を持って判別するのかわかりませんが。
おそらく項目をキーにして自己リレーションされているのだと思いますが、ポータルで表示するとか、リレーション先から  List ( リレーション::日付 ) を取得するのは目的にあいますか

Last edited by Shin (2023-05-05 10:32:13)

Offline

#3 2023-05-05 17:07:55

Fuji-san-2
Member

Re: 重複するレコードで、重複する過去レコードと共に判別する方法

Shin様、

ありがとうございます。
以前、https://fm-aid.com/bbs2/viewtopic.php?id=14221 で、皆さまのお知恵を貸していただいた件の延長です。
前回は、チポ様の方法で上手くいきました。

三連続するデータ判定の際、himadanee様に指摘頂いたことですが、「三連続目のデータがかならずしも最新ではない」場合にも判定結果を出す必要があり、これにつきましては皆さまのおかげで上手くいきました。

今回も前回同様、過去データに変更が生じた場合にも、それがそれ以降のデータと重複が生じた際に、ダイアログメッセージを出したいというのが大まかな流れです。

例えば次の例です。
4月20日 Aクラス 1限目 国語 木下・鈴木
4月20日 Aクラス 2限目 数学 山田
4月20日 Aクラス 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限目が「国語 木下・鈴木」になった際にも、判定し、ダイアログを出したいのです。

上記それぞれ2回目のデータ(3限目社会やBクラス1限目国語)については、重複が判定できています。(自己リレーションです)
ですが、1回目のデータ(1限目社会やAクラス1限目国語)変更の入力時に、それがより新しいデータと重複するか、判定できず、よってダイアログも出せていません。
このようなことは可能なのでしょうか?

Shin様に教わった、ポータルおよびList関数では上手くいきそうにないもので・・・
すみません、お知恵を拝借できれば助かります。

Offline

#4 2023-05-05 23:32:07

Shin
Member

Re: 重複するレコードで、重複する過去レコードと共に判別する方法

その2つの状況で、何を避けたいのか、条件を書いてください。

私の方法ではうまくいかないとはどういうことでしょう。サンプルファイルはみてみました?

Last edited by Shin (2023-05-06 15:53:52)

Offline

#5 2023-05-06 06:58:58

himadanee
Guest

Re: 重複するレコードで、重複する過去レコードと共に判別する方法

「もうひとつ」の方は、同じ担当者が同時に複数のクラスは持てない、という重複なのはわかりますが、1つ目の方は?同じ日に同じ教科を2回やることはない?

どっちの条件も、時系列は関係ないので、自己リレーションでやってれば「より新しいデータと重複するか、判定できず」ってことはないはずですが...

#6 2023-05-06 16:25:16

Fuji-san-2
Member

Re: 重複するレコードで、重複する過去レコードと共に判別する方法

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

避けたいことは、一つ目は、himadanee様ご指摘の通り、同じ日に同じクラスで同じ教科を2回やることはないので、そのような変更が生じた際、ダイアログで警告したいのです。
二つ目もご指摘の通り、同じ日の同じ時間に別クラスを担当することはないので、そのような変更発生時にダイアログ警告を出したいのです。

今現在、縦の重複(同日、同クラスに同じ授業)も、横の重複(同日、別クラスに同じ担当者)も、どちらも生じた際には、計算フィールド(自己リレーションからのユニークな値の相違を判定させて)それぞれ「縦重複」、「横重複」というテキストを返させて、そのテキストがある場合に警告ダイアログを出させています。

ところがこの方法では、新しいデータを入力させたときは良いのですが、既にあるデータに変更を加えて、上記2つのいずれかの条件になったとき、ダイアログ警告が出ません。

ダイアログを出すスクリプトは、
If [縦重複判定フィールド="縦重複"]
カスタムダイアログを表示
End If

です。ひょっとしてこの書き方が間違っているのでしょうか?ちなみにこのままでは、より新しいデータとの重複はダイアログが出ますが、古いデータに変更発生時には、"縦重複"が返されないので、当然ダイアログが出ません。

Offline

#7 2023-05-08 08:46:41

チポ
Member

Re: 重複するレコードで、重複する過去レコードと共に判別する方法

前スレの私の回答は、
「三連続」が条件でしたよね。
今回は単に重複を条件とするのですから解法も異なりますよ。


同一日付で、同じ項目があれば重複
とするのなら、
自己リレーションを
日付 and 項目
で照合して、関連レコードが2以上が重複です。
これは Count関数で求められ、重複レコード全てに同じ表示がされます。

もう一つの
同一日付で、同一時限に担当が重複
なら、
新たに自己リレーション
日付 and 時限 and 担当
で照合すればいいですが、、
担当が複数あって、そのうちの一人でも重複
というのなら、1担当1レコードとしたテーブルが簡単ですね。

Offline

#8 2023-05-09 14:00:37

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.007 seconds, 7 queries executed - Memory usage: 524.03 KiB (Peak: 528.57 KiB) ]