今一つ、「対象レコードの絞り込み」という機能と、「検索モード」の用途の違いが理解できていません。
ココがポイント
今回は、ドロップダウンリストからデータを抽出(検索!?)するTipsをまとめました!
確実にシステムを組むために必要になる機能ですね。
やりたいことの説明
あるシステムを作っている段階なのでネーミングは気にしないでください。
やりたいことは、データテーブルのフィールド中には、「出荷人、進捗項目」があるという前段階です。
そして、レイアウトにて、出荷人検索をドロップダウンリストで選択すると、データが絞られるというものです。
更に、進捗状況のチェックボックスにチェックしたデータを更に絞り込むという事がやりたいのです。
ちなみに、テーブルの方は、shipperというのとorderというテーブルにしてあり、出荷人IDでリレーションしています。
特に今回の機能ではリレーションは関係ないとは思います。
検索キー(ドロップダウンリスト)でフィールド追加
FileMakerProを使って中々理解に苦しむのが、グローバルフィールドでした。
マイクロソフトのアクセス(以下Access)を使っていると、非連結テキストボックスというものがあるのでグローバルフィールドの事は考えなくても良かったという面で理解に苦しんだのかもしれません。
レアアウトに設置した出荷人テキストボックスにドロップダウンリストにすると、選択中のレコードが強制的に変更されてしまいます。
検索キーとしてのドロップダウンリストなので、それでは困ってしまいます。
そこで、出荷人検索というフィールドを追加してから、オプションから、グローバルに変更しました。
ココに注意
初心者にはグローバルの理解が難しい
自分の使い方があっているのか?間違っているのか分かりませんが、とにかくフィールドを追加しないとレコードの内容が書き換えられてしまうので、グローバルフィールドを追加しました。
ちなみに、グローバルフィールドは、全レコード同じ値になるという特徴があるようです。
自分の場合は、「グローバルID」というフィールドを追加して、ログイン時に、ユーザーIDを書き込んでいます。
それにより、ユーザー毎の制限を付ける時にグローバルフィールドの値を利用しています。
ドロップダウンリストだからと言ってグローバルにする必要はないのかもしれませんが、レコードごとにばらばらな検索キーが入っていても見栄えが良くないのでそうしただけです。
ドロップダウンリスト検索(抽出)
出荷人検索フィールドを設置してドロップダウンリストにして、値一覧にて、出荷人にすればいいだけなので簡単です。
次に、ドロップダウンリストから選択した時に、データの抽出をするスクリプトを作成しました。
検索モードからのデータ絞り込みにて対象データを表示させるわけなのですが、3行で処理ができました。
自分の場合は、その後レコードの並べ替えをしているので4行になっています。
この検索モードでは、「全てを表示」というのを押せば、全レコードが再表示されます。
Accessのクエリー概念とは違うのは、レコードが抽出されている訳ではなく、検索されて見えなくなっているという感じなのかもしれません。
チェックボックス機能を実装
ドロップダウンリストから出荷人を選択すると、チェックボックスにチェックした内容のレコードをOR検索できるようにしました。
チェックしてなければ、出荷人だけの検索となり、チェックした場合は、その検索も含まれた状態で検索できるようにしたものです。
※FileMakerのスクリプトエディターは、コピペが他のソフトにできないので、コード表記が画像になっています。
レイアウトに、「フラグ検索」というグローバルフィールドを設置してから、チェックボックスに変更しました。
チェックボックスにチェックすると、その値が日本語で改行されてフィールドに入力されるようです。
つまり、例えば、3つにチェックすると、フラグ検索フィールドには、
1行目 受付中
2行目 手配中
3行目 手配済
というようになります。
検索モードにすれば、デフォルトで1回目は検索条件が設定できますが、2回目以降は、「レコード/検索条件複製」にて、2行目移行を検索条件に設定している訳です。
ココがポイント
コードを見ると複雑のように感じますが、よく見れば何やっているのか理解できます
これで、自分が欲しいと思っていた検索機能が実装できました。
検索データが無い時のダイヤログを消したい
一致した検索データが無いと上の図のような警告ダイヤログがでます。
ココがポイント
検索データが無い時は何も表示させない仕様にしたい!
スクリプトの「検索実行」前に、「エラー処理[オン]」を入れれば表示がでなくなりました。