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

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

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

You are not logged in.

Announcement

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


#1 2015-05-11 15:33:47

jose
Member

ポータル内の検索にて

テーブルAとテーブルBが関連付けられていて、レイアウト1はテーブルBのレコード、テーブルAのポータルがあります。
ポータル内で検索をかけると、

これらのテーブル間の1つまたは複数のリレーションシップが無効なため、この操作は実行できません。

と出てしまいます。この原因はどのように解決できるでしょうか。

以下具体的に書いておきます。
テーブルAは生徒個人情報
テーブルBは保護者(家庭)情報
兄弟が複数存在するためこのようにテーブルを分けています。

テーブルBをメインにしているレイアウト1は、リスト表示にして家庭数をリストアップしています。
ポータルを設置して保護者のレコードに生徒をリストアップしています(ポータル内の情報にはクラスあり)
レイアウト1にて例えばクラスAの保護者リストを抽出したいので、検索モードに変えてポータル内から検索をかけると、上のメッセージが出てしまいます。
ご教授いただけたら幸いです。

Offline

#2 2015-05-11 15:55:58

Layouter
Guest

Re: ポータル内の検索にて

ABだけでなくクラスのテーブルが別にあるのでは?

#3 2015-05-11 16:08:06

jose
Member

Re: ポータル内の検索にて

>Layouterさん
クラスのテーブルはありますが、ポータル内のフィールドはテーブルA(生徒個人情報)のみとなっています。クラスで検索をかけたいのですが、その家庭に兄弟がいると生徒とそれぞれのクラスがポータル内に表示されます。そこに問題があるのでしょうか?

Offline

#4 2015-05-12 09:16:06

チポ
Member

Re: ポータル内の検索にて

簡単に検証してみましたが、
正常に検索されましたよ。


リレーション等もう少し詳しく説明してみたらいかがでしょう。

Offline

#5 2015-05-15 15:10:41

jose
Member

Re: ポータル内の検索にて

>ちぽさん
連絡ありがとうございます。もう少しテーブルの関係を詳しく書かせてもらいます。
前スレでは

テーブルAは生徒個人情報
テーブルBは保護者(家庭)情報
兄弟が複数存在するためこのようにテーブルを分けています。

と書きましたが正確には、
テーブルA:クラス名簿(経歴)情報
テーブルB:保護者個人情報
テーブルC:生徒個人情報

です。リレーションは以下のとおりです。

1、テーブルB::家族ID = テーブルA::家族ID(ポータルで表示のため)
2、テーブルB::今年度 = テーブルA::年度(ポータルのクラス経歴レコードを今年度でフィルターをかけるため)
3、テーブルA::生徒ID = テーブルC ::生徒ID(名前などの情報)

テーブルBベースのレイアウトには、テーブルAのポータルで生徒を表示しています。テーブルAはクラス名簿経歴、年度の名簿なので、テーブルBの今年度(Year(get(日付)+275)-1)の計算式と会う年度でフィルターをかけています(おそらく検索に関してはここが問題になっているようなのですが・・・)

上記のリレーション2を削除して、ポータル内のフィルタで前年度のレコードを非表示にすると検索はできるのですが、日表示されている過去のクラスレコードも検索対象となるためちゃんと抽出できません。

スクリプトを作ってしまった方が早いですか?

Offline

#6 2015-05-15 17:07:32

チポ
Member

Re: ポータル内の検索にて

2、テーブルB::今年度 = テーブルA::年度(ポータルのクラス経歴レコードを今年度でフィルターをかけるため)

これが分かりません。
どのように使っているのでしょう。。

このリレーションがなくてもフィルタは掛けられますよ。

  テーブルB::今年度 = テーブルA::年度 

これでいいでしょう。

Offline

#7 2015-05-16 08:58:32

jose
Member

Re: ポータル内の検索にて

>ちぽさん

2、テーブルB::今年度 = テーブルA::年度(ポータルのクラス経歴レコードを今年度でフィルターをかけるため)
これが分かりません。
どのように使っているのでしょう。
このリレーションがなくてもフィルタは掛けられますよ。

(テーブルA::年度)クラス名簿(履歴)なので例えば2011, 2012, と年度で抽出するためのフィールドです。なので、今年度は2015、(テーブルB::今年度)保存なしの計算式と合致したものだけ抽出するようにしたのですが具体的にどのようにフィルタをかけられるかご教授いただけますか?

テーブルB::今年度 = テーブルA::年度
これでいいでしょう。

これは上のリレーションは同じではないのですか?

Offline

#8 2015-05-18 09:00:36

チポ
Member

Re: ポータル内の検索にて

まだ分りません。。

ポータルに今年度のレコードのみを表示したいのでしたら、

ポータルフィルタの条件式を

テーブルB::今年度 = テーブルA::年度

とすればいいのですが。

リレーションの照合から変えるのなら、
  テーブルB::家族ID = テーブルA::家族ID
  and
  テーブルB::今年度 = テーブルA::年度
とすればいいでしょう。


状況が正確に分からないので、
最初のポータルの検索の質問の回答は出来ません。。

Offline

#9 2015-11-17 21:10:58

jose
Member

Re: ポータル内の検索にて

>チポさん
リレーショングラフで気になっているのですが、キーフィールドの片方が、計算式で非保存となっています。
計算式の方は ⊢ のマーク
反対の方は ⩚ (多を表示するマーク)となっています。

これが検索できないのと関係していますか?

Offline

#10 2015-11-17 21:25:16

jose
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.016 seconds, 7 queries executed - Memory usage: 525.35 KiB (Peak: 529.89 KiB) ]