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

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

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

You are not logged in.

Announcement

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


#1 2017-02-13 15:32:18

にも
Guest

ポータルのソート

【Mac】【FM Pro 15 Ad】

ポータルで表示している商品マスタの絞り込み検索をする為、フィルタの設定をしています。
種別を選ぶと、その選んだ種別に該当するレコードがポータルに表示される、
更にメーカーを選ぶと、種別・メーカーどちらにも該当するレコードが表示される という内容です。

下記フィルタ設定に入っている内容です。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If (商品マスタ::グローバル種別  ≠  "" ; 商品マスタ::グローバル種別 = 商品マスタ 10::種別 ;1)
and
If (商品マスタ::グローバルメーカー  ≠  "" ; 商品マスタ::グローバルメーカー = 商品マスタ 10::メーカー ; 1)
and
If (商品マスタ::グローバル容量  ≠  "" ; 商品マスタ::グローバル容量 = 商品マスタ 10::容量 ; 1)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

上記は絞り込み検索なのですが、更に追加機能でソートができるようにしたいと思っています。

種別、メーカー、容量のフィールドの上にボタンを作り、
そのボタンを押すとそれぞれのフィールドをキーにソートがかかるようにしたいです。

この既に実装している絞り込み検索用のフィルタの内容に、
どのようにソートの内容を追加したら良いのか分からずご質問させて頂きました。

宜しくお願いします。

#2 2017-02-13 15:55:58

Shin
Member

Re: ポータルのソート

ポータルのソートを動的に行う機能はありません。
ごく簡単に実現したいのでしたら、タブコントロールを作り、ボタンの変わりに、ソートキーをタブ名にしておきます。それぞれのタブの中に、そのソートを設定したポータルを置きます。

本格的に凝りたいのでしたら、ソートキーを設定するボタンで、関連レコードへ移動、で関連テーブル側に移動し、目的のソートをします。適当な数値フィールドをシリアル値で全置換します。これを表示させれば良いですが、対象レコード数が多ければある程度時間を取ります。
または、計算フィールドを作り、ソートフィールドを参照する、という事も出来ますが、こちらは表示させる時に索引を作りますので表示がもたつくでしょう。
ただ、これらはユーザーが一人の時には良いのですが、複数が同じテーブルにアクセスしているとうまく動かないかもしれません。

Last edited by Shin (2017-02-13 16:05:47)

Offline

#3 2017-02-13 16:35:11

Hiro
Member

Re: ポータルのソート

ソートはフィルターで動的に制御することはできません。

代替え機能を自装するなら、たとえば、
・作業用ソートフィールド(計算フィールド、計算結果はテキスト)を作り、
・それをソート対象にポータル設定し、
・選択ボタンで作業用ソートフィールドで算出する対象フィールドを切り替えます。
・例えば、「選択G」グローバルフィールドに「対象項目名」値一覧から選択してもらうなら、
・作業用ソートフィールドの式は、
   Case(
      マスタ::選択G="種別"; 種別;
      マスタ::選択G="メーカー"; メーカー;
      マスタ::選択G="容量"; Right("0を桁数分列挙" & 容量; 桁数)      //桁数は想定最大数、テキストソートの統一化の為措置
   )

Last edited by Hiro (2017-02-13 16:36:24)

Offline

#4 2017-02-13 17:02:08

himagine
Guest

Re: ポータルのソート

昔のBBSから引用

メイン側(でなくてもいいが)に指定用のグローバルフィールド2個作る。
sort テキスト フィールド名または計算式を入れる
dir テキスト T+/T-/N+/N-の選択(テキスト順か数値順か・昇順か降順か)
ポータル側に計算フィールド3個作る。(sortnだけ結果数字、他は結果テキスト)
sortta  計算  非保存, = Case ( main::dir = "T+" ; Evaluate ( main::sort ) )
sortn  計算  非保存, = Case ( main::dir = "N+" ; Evaluate ( main::sort ) ; main::dir = "N-" ; - Evaluate ( main::sort ) )
sorttd  計算  非保存, = Case ( main::dir = "T-" ; Evaluate ( main::sort ) )
この計算フィールド3個でソートする(sorttdだけ降順)
どれか1つ以外は空欄なので順番はどうでもOK(これがみそ)

グローバルフィールド(ソート指定)を変えた場合は「ウィンドウ内容の再表示」
日付や時刻は数値順を指定します。

#5 2017-04-05 16:58:40

にも
Member

Re: ポータルのソート

大変遅くなりましたが、今回はShin様のごく簡単な実装にしてみました。
Hiro様、himagine様の案も試しに作ってみたり、大変勉強になりました。

ありがとうございました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 564.07 KiB (Peak: 589.4 KiB) ]