- ベストアンサー
accessでオートコンプリート機能みたいな
access2002です。 データ入力時に、1文字か2文字を入力するだけで それに適合したデータのみを出すようにしたいと思っています。リストもコンボボックスでも、データの数が多いんです。 クエリの抽出条件に Like "*" & [検索したい文字を入力] & "*" と入れました。 1個のデータだとうまくいきました。 次の人のデータ時にうまくいかなかったので、データ更新をしました。 すると、パラメータの入力の窓がでますが、文字がみえません。かまわず打ち込むと、文字は出ないのに、認識しているらしく、適合したリストがでます。 文字はどうしたらでますか。 また、こういったデータの件数が多い場合は、このやり方でいいのでしょうか。 教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>はい、likeを使って、「先頭文字にかぎらず、文字を入れると、コンボボックスの中のものがでる。」 >って言うのが理想です。 コンボボックスに特定の文字を入力確定後、カーソル下矢印キーを押すと、 特定文字を含んだデータのみコンボボックスでプルダウウン表示される。 そのプルダウン表示から最終的に欲しい1つのデータを選択する。 このような動作をご希望でしょうか? そうであれば下記設定にて可能です。 **************************************************** コンボボックスがあるフォーム(フォーム1 とします)のプロパティ キーボードイベント取得:はい **************************************************** コンボボックスの設定(コンボ0 とします) 値集合タイプ:テーブル/クエリ 値集合ソース: SELECT T_商品.品名 FROM T_商品 WHERE (((T_商品.品名) Like "*" & Forms!フォーム1!コンボ0 & "*")); 入力チェック:いいえ 自動拡張:いいえ ****************************************** イベント 更新後処理 Private Sub コンボ0_AfterUpdate() Me.コンボ0.Requery End Sub キークリック時 Private Sub コンボ0_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyDown Then Me.コンボ0.Dropdown End If End Sub ****************************************************
その他の回答 (4)
- onakagoo
- ベストアンサー率45% (5/11)
ただし、これは、コンボボックスの中に表示されるのではなく、一覧表示される表にフィルターがかかるものですけど。。。
- onakagoo
- ベストアンサー率45% (5/11)
う~ん、likeを使用しての実現は無理っぽい気がします。 フィルターと関数を使用すれば、簡単に実現できます。 テキスト入力フィールド(検索したい文字)の「更新後処理」などに下記のVBAを記述します。 DoCmd.ApplyFilter , "instr([テーブル1]![文字一覧],forms![フォーム1]![検索したい文字]) <> 0"
- onakagoo
- ベストアンサー率45% (5/11)
う~ん、どういうことを実現されたいのかよく分からないので、何とお応えしたらよいか!? もう少し具体的にご質問ください。 likeを使用して同じ機能を実現されたいのですか? それとも、likeでできる様々なあいまい検索をさせて、入力制御をさせたいのですか?
補足
onakagooさん、何回もすみません。 実は、access やっては、やめ、また、やる・・って調子でなかなか進みません。 お手数かけます。 はい、likeを使って、「先頭文字にかぎらず、文字を入れると、コンボボックスの中のものがでる。」 って言うのが理想です。
- onakagoo
- ベストアンサー率45% (5/11)
まさに、オートコンプリート機能を使用されてはどうでしょうか? アクセスで言うオートコンプリート機能は「自動拡張」です。 これを「はい」に変更。 それとも、これでは何か問題があるのでしょうか?
お礼
ありがとうございます。 できるんですね。 欲を言えば、ついでにlikeを使って、同じようなのを先頭には、だせますか?
お礼
hanmaさん。 ありがとうございました。 できました~。
補足
すみません。 hamhaさんでした。