みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
【Mac】【FM Pro 15 Ad】
ポータルで表示している商品マスタの絞り込み検索をする為、フィルタの設定をしています。
種別を選ぶと、その選んだ種別に該当するレコードがポータルに表示される、
更にメーカーを選ぶと、種別・メーカーどちらにも該当するレコードが表示される という内容です。
下記フィルタ設定に入っている内容です。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If (商品マスタ::グローバル種別 ≠ "" ; 商品マスタ::グローバル種別 = 商品マスタ 10::種別 ;1)
and
If (商品マスタ::グローバルメーカー ≠ "" ; 商品マスタ::グローバルメーカー = 商品マスタ 10::メーカー ; 1)
and
If (商品マスタ::グローバル容量 ≠ "" ; 商品マスタ::グローバル容量 = 商品マスタ 10::容量 ; 1)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
上記は絞り込み検索なのですが、更に追加機能でソートができるようにしたいと思っています。
種別、メーカー、容量のフィールドの上にボタンを作り、
そのボタンを押すとそれぞれのフィールドをキーにソートがかかるようにしたいです。
この既に実装している絞り込み検索用のフィルタの内容に、
どのようにソートの内容を追加したら良いのか分からずご質問させて頂きました。
宜しくお願いします。
ポータルのソートを動的に行う機能はありません。
ごく簡単に実現したいのでしたら、タブコントロールを作り、ボタンの変わりに、ソートキーをタブ名にしておきます。それぞれのタブの中に、そのソートを設定したポータルを置きます。
本格的に凝りたいのでしたら、ソートキーを設定するボタンで、関連レコードへ移動、で関連テーブル側に移動し、目的のソートをします。適当な数値フィールドをシリアル値で全置換します。これを表示させれば良いですが、対象レコード数が多ければある程度時間を取ります。
または、計算フィールドを作り、ソートフィールドを参照する、という事も出来ますが、こちらは表示させる時に索引を作りますので表示がもたつくでしょう。
ただ、これらはユーザーが一人の時には良いのですが、複数が同じテーブルにアクセスしているとうまく動かないかもしれません。
Last edited by Shin (2017-02-13 16:05:47)
Offline
ソートはフィルターで動的に制御することはできません。
代替え機能を自装するなら、たとえば、
・作業用ソートフィールド(計算フィールド、計算結果はテキスト)を作り、
・それをソート対象にポータル設定し、
・選択ボタンで作業用ソートフィールドで算出する対象フィールドを切り替えます。
・例えば、「選択G」グローバルフィールドに「対象項目名」値一覧から選択してもらうなら、
・作業用ソートフィールドの式は、
Case(
マスタ::選択G="種別"; 種別;
マスタ::選択G="メーカー"; メーカー;
マスタ::選択G="容量"; Right("0を桁数分列挙" & 容量; 桁数) //桁数は想定最大数、テキストソートの統一化の為措置
)
Last edited by Hiro (2017-02-13 16:36:24)
Offline
昔の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(これがみそ)
グローバルフィールド(ソート指定)を変えた場合は「ウィンドウ内容の再表示」
日付や時刻は数値順を指定します。
大変遅くなりましたが、今回はShin様のごく簡単な実装にしてみました。
Hiro様、himagine様の案も試しに作ってみたり、大変勉強になりました。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 557.47 KiB (Peak: 581.42 KiB) ]