[ Siena 目次 ]

部分一致検索のサンプル

テキストで書かれたデータの部分一致検索を実現します。
「検索・照会画面のサンプル」「備忘録アプリ」の試作でも実践した方法です。
ここでは、より簡潔なサンプルで紹介します。 一部、「テキストボックスの初期化のサンプル」と重なる部分があります。 テキストボックスの初期化や使い方について見てみたい方は、「テキストボックスの初期化のサンプル」をご参照ください。


実際の画面を確認

作成したのは、メインとなる1画面のみです。
スクリーン1
一番左に全件表示のギャラリー、その右に抽出後のギャラリー、その右にテキストボックス・登録・検索用のボタンを配置しました。 既にデータを登録したので、ここでは画面にある通り、 "鈴木" という文言で検索します。
スクリーン2
"鈴木" さんのデータのみ、抽出後ギャラリーに表示されました。 今度は、 "三郎" という文言で検索します。
スクリーン3
"三郎" さんのデータのみ、抽出後ギャラリーに表示されました。 最後に "木" の一文字で検索します。
スクリーン4
全員に "木" が入っているので、抽出後ギャラリーに全件が表示されました。


以下に、作成時のポイントを記述します。

[ 目次 ]
  1. 実際の画面を確認
  2. ポイント
  3. 仕様確認
  4. 仕組みの解説



ポイント

Filter 関数に検索条件を指定するとき、 in というキーワードを使用します。
今回でいえば、
Collect(SearchedTBL,Filter(WorkTBL,StringInput in Name)) といった具合です。
以下の解説で改めて出てきますので、そちらでもご確認ください。



仕様確認

検索ボタンを押すと、テキストボックスの入力値を含むデータを、抽出後ギャラリーに表示します。



仕組みの解説

ここでは、貼り付けた部品の属性を ExpressView で確認します。
部品を選んで右下の ExpressView ボタンをクリックすれば、画面右に開きます。
以下、画像をクリックすると拡大画面が表示されます。

  1. テキストボックス
  2. このテキストボックス用のストリング変数を、デフォルトに指定します。
    Default 属性で、 StringInput と指定している部分がそれです。

    値が変更されたときに、入力値をストリング変数に転送します。
    OnChange 属性で、 UpdateContext({StringInput:InputText!Text})
    と指定している部分がそれです。
    テキストボックス1

  3. 検索ボタン
  4. ストリング変数の値を含むデータを、検索用コレクションに登録します。
    OnSelect 属性で、
    Clear(SearchedTBL);Collect(SearchedTBL,Filter(WorkTBL,StringInput in Name))
    と指定している部分がそれです。
    検索ボタン1

  5. 登録ボタン
  6. 入力された値をコレクションに登録し、ストリング変数を初期化しています。
    OnSelect 属性で、
    If(StringInput<>"", Collect(WorkTBL,{Name:StringInput}));
    UpdateContext({StringInput:""})

    と指定している部分がそれです。
    登録ボタン1

  7. 全件ギャラリー
  8. 全件用コレクションのデータを表示します。
    Items 属性で、 WorkTBL と指定している部分がそれです。
    全件ギャラリー1

  9. 抽出後ギャラリー
  10. 検索用コレクションのデータを表示します。
    Items 属性で、 SearchTBL と指定している部分がそれです。
    抽出後ギャラリー1

  11. スクリーン
  12. スクリーンが表示されるときに、ストリング変数を初期化しています。
    OnVisible 属性で、 UpdateContext({StringInput:""})
    と指定している部分がそれです。

    この処理を入れておかないと、初期表示時に入力をしないで登録ボタンを押したとき、入力値がないはずなのに空白がコレクションに登録されてしまいます。
    スクリーン1