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

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

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

You are not logged in.

Announcement

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


#1 2022-10-20 03:49:41

mitsuguKG
Guest

同じ組み合わせがある時のカラーリング

50人近くのミュージシャンのセッションの組み合わせをしようとしています。

記入実例(テキスト)
セッション番号   メンバー名
1          AAA dr、BBB piano、CCC bs、DDD sax
2          AAA dr、EEE piano、FFF vo、GGG gt
3          BBB piano、DDD sax、HHH vo、
4          TTT piano、GGG gt、FFF vo

上記のようなデータのレコードが作られたときに、
セッション番号 1 の BBB piano、と DDD sax そして セッション番号 3 の BBB piano、と DDD sax が赤色になる。
セッション番号 2 の FFF vo、と GGG gt そして セッション番号 4 の BGGG gt、と FFF vo が赤色になる。
レコード数(セッション数)は 全部で 30 位あります。

このようなスクリプトや計算式が可能でしょうか。

よろしくお願いします。

#2 2022-10-20 07:02:55

himadanee
Guest

Re: 同じ組み合わせがある時のカラーリング

1メンバー1レコードのテーブルにしたら簡単ではないでしょうか。楽器?も別フィールドにわけるべきでは。
セッション番号   メンバー名 楽器
セッションの情報が番号以外にもあるでしょうから、それは別のテーブルに1セッション1レコードで入れます。

現状ではメンバー名を取り出すだけでも面倒です。区切りが読点とスペースのようですが、メンバー名自体にスペースを含む場合もあるのでは?

あれ?違う楽器を演奏する場合は同一人でも別メンバー扱いなのかな?例の中にはそういうケースはないようですが

#3 2022-10-20 10:48:17

Shin
Member

Re: 同じ組み合わせがある時のカラーリング

規則は?
1セッション内に BBB piano、と DDD sax が揃えば色付けする、ということですか。

Offline

#4 2022-10-20 11:07:02

チポ
Member

Re: 同じ組み合わせがある時のカラーリング

複数のメンバーが重複しているセッションが有るか?
ということですよね?

回答にある通り、
1セッション&1メンバー
ごとに1レコードとするテーブルが基本ですが、、
結構面倒そう。。

Offline

#5 2022-10-20 11:46:44

qb_dp
Member

Re: 同じ組み合わせがある時のカラーリング

色分けでは、表現できなさそうな。
セッション表とは別に、クロス集計を作って各人重複回数を表示するUIが良さそうな。

結構面倒そう。。

同意。

Last edited by qb_dp (2022-10-20 11:47:43)

Offline

#6 2022-10-20 15:12:54

mitsuguKG
Guest

Re: 同じ組み合わせがある時のカラーリング

皆さん、考えていただいてありがとうございます。

Shinさんのご質問 「規則は?」
40位あるセッションでそれぞれのミュージシャンは3~4回演奏します。基本的にどのセッションでも必ず皆新しい人とセッションする。すべてのセッションですべてのミュージシャンはみな初顔合わせとなる。
でも、事情があって、例外的に一回一緒に演奏した人と組むこともたまにありうる。ミュージシャンと楽器は変わりません。違う楽器を演奏することはありません。
---------
1セッション&1メンバーのレコードを作るようにして赤色の表示ができるでしょうか。理由は表示されなくてもかまいません。1セッション&1メンバーのデータを用いて、重複した組み合わせを知らせてくれるプラグインとかないでしょうね。

シリアル セッション番号   メンバー名
1     1       AAA drx
2     1            BBB piano(赤色表示 理由:セッション3で重複)
3     1            CCC bs
4     1       DDD sax(赤色表示 理由:セッション3で重複)

5     2           AAA dr
6     2           EEE piano
7     2            FFF vo(赤色表示 理由:セッション4で重複)
8     2            GGG gt(赤色表示 理由:セッション4で重複)

9     3            BBB piano(赤色表示 理由:セッション1で重複)
10    3            DDD sax(赤色表示 理由:セッション1で重複)
11    3            HHH vo

12    4            TTT piano
13    4            GGG gt(赤色表示 理由:セッション2で重複)
14    4            FFF vo(赤色表示 理由:セッション2で重複)

----
組み合わせのテーブルをスクリプトで作るようにしたら?(*は重複)このあとどうかなりますでしょうか。
AAA drx/BBB piano/1
AAA drx/CCC bs/1
AAA drx/DDD sax/1
BBB piano/CCC bs/1
*BBB piano/DDD sax/1
CCC bs/DDD sax/1

*BBB piano/DDD sax/3
BBB piano/HHH vo/3
DDD sax/HHH vo/3

#7 2022-10-20 16:41:09

Shin
Member

Re: 同じ組み合わせがある時のカラーリング

まあまあ面倒でしょうか。
式が泥臭いですが、色々と改良。割と簡単に解決。3プレーヤー以上の重複でどうなるかは未検証ですが、多分動くでしょう。
https://fm-aid.com/bbs2/viewtopic.php?id=13641

Last edited by Shin (2022-10-26 16:01:44)

Offline

#8 2022-10-21 07:28:04

mitsuguKG
Guest

Re: 同じ組み合わせがある時のカラーリング

Shinさん。解決しそうです。
本当にありがとうございました。
ミュージシャン名をセッションテーブルの繰り返しフィールドに
直接入力(ドラッグアンドドロップ)させ(、, ・などの混合を防ぐため)、

「組み合わせ重複」チェックボタンをクリックしたときに、
すべてのセッションにあるミュージシャン名(1セッション複数ミュージシャン名)を
1セッション1ミュージシャンのテーブルにインポートし、
(こんなとき、ファイルメーカ独特の繰り返しフィールドも役に立ちますね)
Shin が作ってくださったスクリプトに続くようにしようと思っています。
「関連フィールドに行く」ステップで新規ウインドウを開かせず、
「ウインドウを閉じる」もステップを省いて、「レイアウトの移動」で代用すると、
意外とすっきり動くようです。
(Shinさんはこれも動きがわかるようにわざとスクリプトをつくってくださっていたのかなぁ)

実際の使用では、セッションも多くても50位なので、それほど時間はかからないと思います。
2プレーヤー組み合わせ重複の時点で確認するので、
3プレーヤー以上は考えなくて大丈夫かと思います。

私はFileMakerの質問をするのは本当に久しぶり(20年以上前は頻繁に質問していた)ですが、
こんなにも早く答えがくるって、素晴らしいですね。ありがとうございました。
まだ Shin さん作のスクリプトや計算式やリレーションもしっかりと解析し自分のものとし、次の開発に生かしたいと思います。

#9 2022-10-21 07:44:07

Shin
Member

Re: 同じ組み合わせがある時のカラーリング

> すべてのセッションにあるミュージシャン名(1セッション複数ミュージシャン名)を1セッション1ミュージシャンのテーブルにインポートし、
データベースの原則からは、そのテーブルを作るのが本来正しく、コンマ区切りのテキストは、そのデータを加工して作るべきです。ファイルそのもののデータ構造を変えましょう。

作業は、意図的に別ウインドウでさせています。この方がいろいろといいですよ。(運用しているフィアルも、ほぼ全てそうしています)
レイアウト変更して作業させると、元のレイアウトお状態に戻れなくなります。また、別ウインドウで作業させても速度が落ちることはありません、
動きそのものは、フィルターをかけまくったポータルの中身をみているスクリプトですので、解析は厄介だと思いますので、移植も結構難しいと思います。

Last edited by Shin (2022-10-21 08:43:09)

Offline

#10 2022-10-21 09:47:48

チポ
Member

Re: 同じ組み合わせがある時のカラーリング

考え方だけ

1セッション&1メンバー
ごとに1レコードとするテーブル
です

メンバーが参加している他のセッションのリストを作ります。
そのリストと、
同セッションの他の参加者のリストに同じものが有れば
複数重複になりますね。


〇他のセッションのリストは
自己リレーション
  メンバー = メンバー
  and
  セッション ≠ セッション
として、そのList で得られます。
これを次のリレーションの照合フィールドにするので、
計算フィールドではダメです。
テキストフィールドとして、全置換等で入力します。


〇同セッションの他の参加者のリストに同じもの
新たに自己リレーション
  リスト = リスト
  and
  セッション = セッション
  and
  メンバー ≠ メンバー

このリレーションの関連レコードが有れば、複数重複になります。

Offline

#11 2022-10-21 13:38:23

Shin
Member

Re: 同じ組み合わせがある時のカラーリング

チポさんはサンプルを見れないのですが、それと同じ考え方の計算を繰り返しを使ってやっています。
リレーション先の参照で索引を使えないし、全置換するにはスクリプトが必要になるので、その代わりに繰り返しの計算フィールドで展開させて計算させていき、最後にリレーションへ持ち込んで、該当セッションをフィルターで選択しています。

色々手を入れてあります。自然な入力ができる、面白い動きをしますよ。
https://fm-aid.com/bbs2/viewtopic.php?id=13641

Last edited by Shin (2022-10-26 16:01:29)

Offline

#12 2022-10-24 09:54:30

himadanee
Guest

Re: 同じ組み合わせがある時のカラーリング

考え方はほとんど同じな感じもしますが、「1セッション&1メンバーごとに1レコードとするテーブル」だけでやる方法を考えてみました。
条件付書式に使って、塗りつぶしとか文字色を変更できます。
スクリプトは何もいりません。

ExecuteSQL ( "
SELECT COUNT(*)
FROM \"メンバー\"
WHERE \"セッション番号\"<>?
AND
\"セッション番号\" IN (
SELECT \"セッション番号\"
FROM \"メンバー\"
WHERE \"メンバー名\"=? )
AND
\"メンバー名\" IN (
SELECT \"メンバー名\"
FROM \"メンバー\"
WHERE \"セッション番号\"=?
)
GROUP BY \"セッション番号\"
HAVING COUNT(*)>1"
;"";"";
メンバー::セッション番号;
メンバー::メンバー名;
メンバー::セッション番号
)

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.125 seconds, 9 queries executed - Memory usage: 598.96 KiB (Peak: 615.87 KiB) ]