はじめに
インターネットブラウザの検索テキストボックスのようにAccessのテキストボックスでも検索履歴を表示させたいと思い、この方法をやってみました。
本記事とは若干コントロール名などが違いますが、下記記事(在庫管理システム)にて実践しています。
-
-
簡易的にAccessデータベースで在庫管理システムを作成(サンプル付)
必要に迫られて簡易的な在庫管理システムを作りました。 在庫管理システムを作るにあたり、それはもう膨大な数のWebサイトを参考にしました。そのまま使えるAccessの在庫管理システムがあればいいのに、そ ...
続きを見る
テーブル
テーブルにて「T_検索履歴」を作ります。
ID | オートナンバー型 |
検索履歴 | 文字列型 |
フォーム
フォームにコンボボックスを配置します。名前を「cmb_検索文字列」とします。ウィザードが有効になっている場合、以下のようなコンボボックスウィザードが表示されますが、「キャンセル」します。

検索用コマンドボタンも配置します。名前を「cmd_検索」とします。
コンボボックスの【プロパティシート】を開き、【データ】タブの【値集合ソース】を次のようにします。「distinct」を使うことによって重複文字列をひとつにまとめてくれます。
1 |
select distinct T_検索履歴.検索履歴 from T_検索履歴 |
「検索用コマンドボタン」の【プロパティシート】を開き、【イベント】タブの【クリック】時に「コードビルダー」を選びます。
ココに注意
【プロパティシート】の【入力チェック】は「いいえ」にしてください(おそらくデフォルトは「いいえ」)。
VBAコード
VBAのエディタが開きますので下記コードを記入します。検索ボタンを押したときのコードが記入済みだと思いますので、そのコードの後ろに追記すれば良いです。テーブル「T_検索履歴」に検索文字列がどんどん追加されていきます。
1 2 3 4 5 6 7 8 9 |
Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("T_検索履歴", dbOpenTable) With rst .AddNew .Fields("検索履歴") = Me.cmb_検索文字列 .Update .Close End With Set rst = Nothing |