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

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

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

You are not logged in.

Announcement

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


#1 2020-08-30 01:10:06

C.C
Guest

リレーションの貼り方とポータルの出し方が解りません。

質問宜しくお願いします。FMバージョン 19です。

ポータルにデータが出てこなくて困っているのですが、テーブルとフィールドは
(例)
アルファ::番号 (値が"A","C"の2つのレコードがある)
アルファ::状態("使用"というテキスト値)
アルファ::リレーション (グローバル値 "a")

ベータ::番号 (値が"A","B","C"と3つのレコードがある)
ベータ::状態 (計算 Caseでアルファ::状態が"使用"なら"使用" IsEnptyなら"未使用")
ベータ::リレーション (グローバル値 "a")

表示させたいポータルはアルファのレコードが2つあり、番号にAとCとあるとします。
アルファにレコードがあれば、そのアルファ::番号を"使用"にしたいのですが
ポータルには
[使用]  A
[未使用] B
[使用]  C
と表示させたいのですが、うまくいきません。番号同士を繋ぐとベータ::状態はうまく反映されますが、ポータルが一つしか出ません。
レイアウトのレコードを表示でのテーブルとリレーションの貼り方とポータルのテーブル・配置するフィールドのテーブル
を教えてもらいたいです。

宜しくお願いします。

#2 2020-08-30 07:52:33

Moz
Member

Re: リレーションの貼り方とポータルの出し方が解りません。

ベータにはすべての番号を作成しておき、
アルファにその番号が存在するか否かをアルファのレイアウトで常に表示しておくってことですかね。

アルファ・ベータをデカルト積「x」のリレーション、
ベータの状態の計算式は以下の様に。
Case ( PatternCount ( List ( アルファ::番号 ) ; 番号 ) ; "使用" ; "未使用" )

こういうことですかねぇ。
https://bit.ly/3gEoJ8n

Last edited by Moz (2020-08-30 07:52:55)

Offline

#3 2020-08-30 12:19:55

Shin
Member

Re: リレーションの貼り方とポータルの出し方が解りません。

ポータルで表示するレコードを自己リレーション先にしないといけないのでは。
全く別の発想を含めた2方法を実装しています。
https://www.dropbox.com/s/8ks83y0m2ttrk … 2.zip?dl=0

Offline

#4 2020-08-30 12:24:45

C.C
Guest

Re: リレーションの貼り方とポータルの出し方が解りません。

Mozさんありがとうございます!
上記パターンでは上手くいったのですが、一点お伝えし忘れたことがあり
番号 が数字などになった場合、PatternCountですと 21 は 1 と 2 も使用となってしまいます。
これを回避するにはどのような式にしたらいいでしょうか?

#5 2020-08-30 13:40:45

C.C
Guest

Re: リレーションの貼り方とポータルの出し方が解りません。

Shinさんありがとうございます。
一応Mozさんの方法でやってみて、このケースではうまくいっておりましたので、簡単さも含めてこちらで進めてみようかと思います。
あとは番号が数字だった場合の
Case ( PatternCount ( List ( アルファ::番号 ) ; 番号 ) ; "使用" ; "未使用" )
の式がをどのようにすればいいか解れば目的達成となります。

宜しくお願いします。

#6 2020-08-30 14:23:05

Shin
Member

Re: リレーションの貼り方とポータルの出し方が解りません。

アルファ側のレイアウトでよかったのですか。

ValueCount ( FilterValues () ) でいいでしょう。
ベータからアルファへ番号でリレーションを張ってもシンプルですよ。

Last edited by Shin (2020-08-30 14:29:35)

Offline

#7 2020-08-30 14:47:56

C.C
Guest

Re: リレーションの貼り方とポータルの出し方が解りません。

Shinさんありがとうございます。
はい。アルファ側のレイアウトで表示となります。

ValueCount ( FilterValues ( アルファ::番号 )  ; 番号 ) ; "使用" ; "未使用" )

など色々試してみましたが、式が正しくないとなります。
どのように設置すればいいか、具体的にご教授いただけたら幸いです。

#8 2020-08-30 15:44:21

Moz
Member

Re: リレーションの貼り方とポータルの出し方が解りません。

こんな感じですかね。
Case ( ValueCount ( FilterValues ( ベータ::番号 ; List ( アルファ::番号 ) ) ) ; "使用" ; "未使用" )

FilterValues ( フィルタするテキスト ; フィルタ値 )
フィルタするテキストの値がフィルタ値に含まれていれば残ります。
ValueCount は値の数なので FilterValues の結果が1つでもあれば真となります。

考え方を習得しましょう。まるっとコピペで動いても応用が利かず次に詰みます。

フィルタの対象はベータの番号で
フィルタ値は List ( アルファ::番号 ) です。アルファの番号ひとつひとつでベータの番号をフィルタします。

アルファの番号に21があり、ベータの番号が21の時にはフィルタ値側にも21があるので真です。
アルファの番号に1がなければ、ベータの番号が1の時にはフィルタ値側に1がないので偽です。

Case

Case は条件分岐なので省略してはいけません。
条件に当てはまれば "使用" 当てはまらなければ "未使用" です。代わりに If でも構いません。

FilterValues

手直しファイル
https://bit.ly/3gHe5hl

Last edited by Moz (2020-08-30 15:46:19)

Offline

#9 2020-08-30 15:51:54

C.C
Guest

Re: リレーションの貼り方とポータルの出し方が解りません。

Mozさんありがとうございます!

自分一人でこの式をゼロから作れと言われてもまだ無理そうですが、各関数の意味は説明と
FMの関数リファレンスで理解できました。
次同じようなものがあれば応用ができそうです。

ご丁寧に本当にありがとうございました。助かりました!

#10 2020-08-31 09:00:08

Shin
Member

Re: リレーションの貼り方とポータルの出し方が解りません。

https://www.dropbox.com/s/yr0qjl3du9kak … 2.zip?dl=0
サンプルを更新しています。
最後の作例が、最もシンプルでしょう。

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.13 KiB (Peak: 529.04 KiB) ]