フィルター機能

Accessのフィルター機能は不可解なことが多い。なぜエラーが発生するのか分からないところで発生したりする。特に致命的でないのでエラーを無視する方法で回避している。

即時フィルター

キー入力の度に候補を絞り込むインタフェースです。

長所:即時性

短所:レスポンス

キークリック時

Escキーが押下された場合は入力域を消去します。Tabは無視?

入力域変更時

フィルタ文字列を組み立てて、フィルターを実行します。

フィルター機能の改善

キー入力の度に候補を絞り込むインタフェースはレコードが少ないうちは良いのですが、件すぐあ多くなるとレスポンスが悪くなります。

そこで、キー入力の間隔を監視して、入力が止まってからフィルターをかけるようなインタフェースを考えます。

キークリック時

検索を開始したことを示すフラグをONにします。

入力域変更時

なにもしません。

タイマー時

前回保存した検索文字列と変わっていたら、検索文字列を退避して脱出
検索開始F=Falseなら脱出、そうでないならFalseに設定して継続

フィルタ文字列組立
フィルタ設定

(1)まだ1回も検索していない場合で、何もキーを押していない状態では前回=今回となるが検索はスキップする必要がある。

(2)検索直後で、何もキーを押していない状態では前回=今回となるが検索はスキップする必要がある。

(1)(2)の状態をトラップするため、キークリック時に検索開始F=Trueに設定し、絞込みをする際にFalseに戻す。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です