第82回 トリガでクイック検索をしよう

エヌ・ケイ・カスタマイズの青木です。
昨年の2月に入職し始めてFilemakerのことを知りました。Filemakerの勉強を始めてもうすぐで1年がたちます。
まだまだ知らないこと、分からないことばかりですが、Filemakerの機能を勉強しながら、発見、おさらい、再発見、活用をブログでお伝えしていきたいと思います。

今回は、グローバル格納フィールドを使用しトリガでクイック検索の機能を実装したいと思います。
グローバル格納とはデータの世界とはちょっと違う世界にあって、どこからでも使える機能があり、データでもなく、レコードでもなく便宜上フィールドとして定義をされているという風に考えることができます。
例えば、「タスク一覧」レイアウトで、ステータスやカテゴリーをクイック検索できると便利です。 しかしステータスツールバーを表示しない場合、クイック検索はどのようにしたらよいのでしょうか。
実は、スクリプトで似た機能をつくれます。「グローバル格納フィールド」と「スクリプトトリガ」 を使用します。

準備

まずクイック検索機能の準備からです。
①[データベースの管理]ダイアログの「フィールド」タブを選択します。
②「タスク」テーブルが選択されていることを確認します。

③グローバル格納フィールドを作成します。
a.フィールド名は「g_ クイック検索」
b.フィールドタイプは「テキスト」

c.フィールドオプションの[データの格納タブ]で[グローバル格納]にチェックを入れます。
このフィールドがクイック検索の条件となるキーワードを入力するところになります。
④[OK]をクリックしてダイアログを閉じてください。

⑤「g_ クイック検索」を上部ナビゲーションヘッダのやや右側に配置します。

スクリプトトリガを設定

次に作成した「g_ クイック検索」フィールドにキーワードを入力すると、スクリプトトリガでスクリ プトが実行されてクイック検索が実行されるようにします。
①配置した「g_ クイック検索」フィールドをクリックします。
②[書式]-[スクリプトトリガ設定 …]メニューを選択します。

スクリプトトリガを設定しつつスクリプトも作成します。
a.[スクリプトトリガ設定]ダイアログが表示されます。
b.[イベント]を[OnObjectSave]をクリックします。
c.[選択]をクリックします。

d.左下の+ボタンを押し新規でスクリプトを作成します。
例)スクリプト名:タスク一覧クイック検索
OKを押します。

ステップを入力します。
e.クイックで検索をすると『クイック検索の実行』が表示されますので選択します。
f.オプションのギアマークを選択します。
※これは、どの値を使ってクイック選択を実行しますか?と聞かれているので
g.『g_クイック検索』をダブルクリックで検索します。
これによりタスク管理のグローバルクイック検索のフィールドの値を使ってクイック検索そのものを実行するということが分かります。
h.[OK]などをクリックしてダイアログをすべて閉じます。

トリガの設定はできました。

次はクイック検索しやすくなるための作業です。
[クイック検索の実行]スクリプトステップのオプションは[計算式の指定]ダイアログが 表示されます。これは「どのフィールドに入力された値でクイック検索をおこなうのか」 を指定するためです。
①クイック検索グローバル格納フィールドの右下にトリガを設定したバッジがついています。(表示がなければ[表示]-[オブジェクト]-[スクリプトトリガ]メニューを選択し オン に してください)
②「g_クイック検索」フィールドをクリックし、インスペクタの「データ」タブの[動作]で
a.[フィールド入力]では、「検索モード」を オフ にします。
b.[次のオブジェクトへ移動に使用するキー]をすべて オン にします。
※デフォルトではtabキーのみですがreturnキーenterキーのすべてにチェックを入れます。

returnキーはフルキーボードによるenter
enterキーはテンキーのキーボードによるenterになります。
これによって入力をする、確定をする、こういった流れの中でこの機能を使います。

動作確認

それでは、動作を確認します。
①すべてを表示します。(30件)

②進行中と入力しreturnを押します。
※returnを押すと次のオブジェクトへ移動=このフィールドから抜ける
ファイルメーカではフィールドから次のフィールド等へ移動する時にその移動する直前に内容を保存します。
つまり、保存をする→スクリプトが実行される→そのあとこのフィールドからカーソルが抜けるを一瞬で行います。
returnを押すと進行中の15件に絞り込みされたことが分かります。

さらに条件をもう一つ足してみます。
③スペースを入力した後に優先度の高い低いの高を入力し、この状態で再度returnを押すとステータスが進行中で優先度が高いものに絞り込みされたとが分かります。

このようにクイック検索の機能を実装したことによって表示メニューからステータスツールバーを非表示にして使用したとしてもクイック検索そのものは実行できるようになります。
※クイック検索の為に使用したグローバルクイック検索というフィールドはファイル→管理→データベースのフィールドの所に、あたかもフィールドの一つのように定義をしましたが、グローバル格納というオプションを入れることによって通常のレコードの中の何かしらの情報を保存するフィールドとは全く別の働きをするようになっています。
フィールドのように見えますが実際には通常のフィールドとは違いますのでここだけはしっかり覚えておきましょう。