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

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

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

You are not logged in.

Announcement

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


#1 2016-09-16 09:55:23

taka
Guest

ポータルフィルタについて

いつもお世話になっています。
FM13 Win7使用です。

インターフェイステーブル
業務分類F
詳細GF
区分GF

業務テーブル
業務分類F
詳細F
区分F

リレーション
インターフェイステーブル::業務分類F = 業務テーブル::業務分類F

インターフェイステーブルに業務テーブルのポータルを設置

区分Fは「予定」「緊急」の2種類
詳細Fは「a」「b」「c」「d」の4種類の組み合わせで15種類 組み合わせは1つのときもあれば4つのときもあります(例 a、a+b、a+c+d、c+d・・・)


このときにポータル内に表示させるレコードを 詳細GF 区分GF を使って制限したいと思っています。
制限の方法はandで空欄の場合は制限なし(全レコードを表示)にしたいと思っています。
詳細Fは選択した内容が「含まれる」ものをすべて表示したいです
(例 詳細GF=a a、a+b、a+cなど「a」が入るものをすべて表示
   詳細GF=a,b a+b、a+b+c、a+b+dなど「a+b」が入るものをすべて表示)

できますでしょうか?
説明がへたくそで申し訳ありませんが宜しくお願いします。

#2 2016-09-16 10:10:34

チポ
Member

Re: ポータルフィルタについて

> 例 a、a+b、a+c+d、c+d・・・
この例のように、
各値の区切りは「+」なんですか?

また、各値の並びは一定なのでしょうか。
例えば、b+a は無いとしていいのでしょうか?

Offline

#3 2016-09-16 10:21:44

taka
Guest

Re: ポータルフィルタについて

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

各値の区切りは「+」です。
並び順も「a」「b」「c」「d」の順番で並んでいます
a
b
c
d
a+b
a+c
a+d
b+c
  ・
  ・
  ・
a+b+c+d

のようになっています。

#4 2016-09-16 11:33:56

チポ
Member

Re: ポータルフィルタについて

空欄は
  IsEmpty ( 詳細GF ) or IsEmpty ( 区分GF )
でいいですね。

詳細の条件は
詳細の + を ¶ に変えて FilterValues で値の有無を判定できます。
式は
  Let ( [ sf = Substitute ( 詳細F ; "+" ; ¶ ) ;
            sgf = Substitute ( 詳細GF ; "+" ; ¶ ) ;
            fv = FilterValues ( sf ; sgf ) ] ;
            fv = sgf & ¶  // FilterValues の返り値には最後に ¶ が付いてきます
             )

区分の条件は = で結びます。

で、条件式は
  ( 空欄の条件 ) or ( 詳細の条件 and 区分の条件 )
とすればいいでしょう。

Offline

#5 2016-09-16 13:42:35

taka
Guest

Re: ポータルフィルタについて

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

そもそもの条件式を

(IsEmpty(詳細GF) or 詳細の条件) and (IsEmpty(区分GF) or 区分の条件)

と考えていたのですがこれは

チポ wrote:

  ( 空欄の条件 ) or ( 詳細の条件 and 区分の条件 )

と同じと捉えていいでしょうか?


チポ wrote:

詳細の条件は
詳細の + を ¶ に変えて FilterValues で値の有無を判定できます。
式は
  Let ( [ sf = Substitute ( 詳細F ; "+" ; ¶ ) ;
            sgf = Substitute ( 詳細GF ; "+" ; ¶ ) ;
            fv = FilterValues ( sf ; sgf ) ] ;
            fv = sgf & ¶  // FilterValues の返り値には最後に ¶ が付いてきます
             )

区分の条件は = で結びます。

先に情報を出していなくて大変申し訳ないのですが、詳細GFはチェックボックスで考えています。
そうすると

sgf = Substitute ( 詳細GF ; "+" ; ¶ ) は sgf = 詳細GF としてしまっていいのでしょうか?

宜しくお願い致します

#6 2016-09-16 14:02:59

チポ
Member

Re: ポータルフィルタについて

条件式の and or は私のではダメでした。

takaさんの
> (IsEmpty(詳細GF) or 詳細の条件) and (IsEmpty(区分GF) or 区分の条件)
でいいようですね。


チェックボックスは、
チェックを入れた順に値が改行で並びます。

ですから、
> sgf = Substitute ( 詳細GF ; "+" ; ¶ ) は sgf = 詳細GF
これを良しとしても、

> fv = sgf & ¶
これが確実ではなくなりますね。

ValueCount
で両者の値数の一致を見たらいかがでしょう。

Offline

#7 2016-09-16 14:20:55

taka
Guest

Re: ポータルフィルタについて

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

チポ wrote:

チェックボックスは、
チェックを入れた順に値が改行で並びます。

ですから、
> sgf = Substitute ( 詳細GF ; "+" ; ¶ ) は sgf = 詳細GF
これを良しとしても、

> fv = sgf & ¶
これが確実ではなくなりますね。

ValueCount
で両者の値数の一致を見たらいかがでしょう。

ValueCountを使うとするならばどのような式になるのでしょうか?
  Let ( [ sf = Substitute ( 詳細F ; "+" ; ¶ ) ;
            sgf = Substitute ( 詳細GF ; "+" ; ¶ ) ;
            fv = FilterValues ( sf ; sgf ) ] ;
            ValueCount(詳細F) ≦ ValueCount(fv)
             )
みたいな形ですか?

もうしわけありませんが良くわかっていないのでご教授願えると幸いです。

#8 2016-09-16 14:25:18

チポ
Member

Re: ポータルフィルタについて

Let ( [ sf = Substitute ( 詳細F ; "+" ; ¶ ) ;
            sgf = 詳細GF ;
            fv = FilterValues ( sf ; sgf ) ] ;
             ValueCount ( fv ) = ValueCount ( sgf )
             )

でいいでしょう。

Offline

#9 2016-09-16 14:42:44

taka
Guest

Re: ポータルフィルタについて

チポ様

無事に作成できました。
ありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.012 seconds, 10 queries executed - Memory usage: 520.39 KiB (Peak: 524.93 KiB) ]