1.テスト環境準備
例として、自分がこれまで行ったことのある地方名を選択する画面を用意することにします。
1-1.「名前」と「行ったことのある地方」というテキストフィールドを持つテーブルを作成します。
1-3.「行ったことのある地方」フィールドのコントロールスタイルに「チェックボックスセット」を指定し、値一覧に「地方リスト」を設定します。
2.データ入力
下図の例では、田中、山川、鈴木、大西の4名はいずれも「北海道」「関東甲信」「近畿」の3つにチェックを入れました。ところが、チェックを入れた順序が異なっていたため、
田中 : 北海道 ¶ 近畿 ¶ 関東甲信
山川 : 近畿 ¶ 関東甲信 ¶ 北海道
鈴木 : 近畿 ¶ 北海道 ¶ 関東甲信
大西 : 関東甲信 ¶ 近畿 ¶ 北海道
といった具合に、バラバラの並びで登録されました。
これを、いずれも値一覧「地方リスト」の並び順の通り
北海道 ¶ 関東甲信 ¶ 近畿
と表示したい時、どうすればよいでしょうか。
3.入力した値の並び替え ~ FilterValues ~
いくつかの方法が考えられるかと思いますが、今回はFilterValues関数を使用してみます。
フィルタ値で指定した値のみを含むテキスト結果を、フィルタするテキストに入力されている順序で返します。
FilterValuesは、不要な値を含むテキストの中から、必要な値のみを抽出するときに用いる関数です。
例えば、
"北海道¶福島¶大阪¶埼玉¶宮崎¶東京¶青森¶福岡¶岩手"
の中から東北地方の都道府県名のみを抽出する場合、
FilterValues ( "青森¶秋田¶岩手¶宮城¶山形¶福島" ; "北海道¶福島¶大阪¶埼玉¶宮崎¶東京¶青森¶福岡¶岩手" )
とすると、抽出結果は
"青森¶岩手¶福島"
となります。
今回は不要なものを排除するという用途ではありませんが、フィルタテキストの順序に並び替えてくれるという特性を活用します。
計算フィールド「行ったことのある地方_並び替え」を作成し、計算式に
FilterValues ( ValueListItems ( "" ; "地方リスト" ) ; 行ったことのある地方 )
と記述します。
この計算フィールドを表示すると、4名とも
北海道 ¶ 関東甲信 ¶ 近畿
となりました。
なお、計算フィールドを用意せずに、「行ったことのある地方」フィールドの「入力値の自動化」オプションにFilterValuesの計算式を設定することも可能です。
4.まとめ
チェックボックスで選択された値を、FileMakerレイアウト上でチェックボックス形式のまま表示するのであれば、登録された順番を気にする必要はありません。しかし、テキスト形式で表示したりExcelやcsvでエクスポートしたりする際に、並びを揃えておきたいことがあります。FilterValues関数を使うことで、簡単に値一覧の順番に並び替えることができます。