テーブルの「Search?」にチェックを入れいてるのに検索対象にならない
テーブルの「Search?」にチェックを入れいてるのに検索対象にならない、そんなときの解決方法です。
検索で思った結果が得られない!?が発生する状況
「検索するキーワードを増やしてほしい」といった要望は、まぁまぁ発生します。通常はテーブルの「Search?」にチェックを追加すれば完了する簡単な仕事ですが、たまにそれでは解決しない場合があります。
例えば、以下のような場合です。
- 受注を登録する画面では、受注明細を登録するためのフォーム画面を開く
- 商品を選択する必要があるため、商品マスタから商品を検索する
商品のマスタテーブルには、「商品名」以外に「商品コード」が存在するし、どちらにも「Search?」にチェックを入れています。
しかし、このままで検索で「商品コード」を入力しても検索結果は0件です。
すると、ユーザからは、
「客先で入力する際にいちいち日本語入力では困る。商品名以外、例えば商品コードでも検索できるようにしてほしい」と、最初の要望が発生します。
検索で思った結果が返ってこないのは、なにが原因なのか?
この問題が発生する原因は、AppSheetでRef列を使用している場合、検索画面での検索対象は通常、ラベルとして設定されている列に限定されるためです。
つまり、今回の例では
受注明細を登録するテーブルは、当然ながら「商品」は「商品マスタ」を参照(Ref)しています。
そのため、商品マスタのラベルである「商品名」しか検索できないのです。
この問題でハマりやすいのは、テーブルの「SEAECH?」にチェック入れれば、検索対象になるはずなのに、なぜか検索の対象にならない、なぜ!?という時です。
そして、この問題は、上記の原因さえ分かってしまえば解決方法は簡単です。
解決方法
この制約を緩和して、ラベル以外の列でも検索を可能にする方法を以下に解説します。
AppSheetでは、ラベル(Label)として設定できるのは1列のみですが、その1列に複数の情報を含めるように工夫することができます。
手順
新たに、仮想列(Virtual Column)を作成します。
そしてFormulaに「商品コード」「商品名」など、検索対象としたい複数の列を結合させた新たな商品名を作成します。
仮想列を「Label」に設定します。
これにより、Refで表示される選択リストの検索対象がこの仮想列になります。
結果
上記により「商品コード」・「商品名」のどちらでも検索が出来るようになります。
商品コードで検索した結果
「商品名」で検索した結果
場合によっては、ユーザから、画面に表示するのは「商品名だけでいいよ!」と言われるかもしれません。
ただ検索が正しいかを判断するために、結局表示させる必要があるため、検索用商品名を作成するのが近道だと個人的には考えています。
コメントを残す