出版

簡単に実装できる検索コントロールを Access フォームに追加して、ユーザーを支援します。
Access フォームへのデータ入力は、連結フォームとコントロールのおかげで簡単です。実際、ウィザードがセットアップ全体をガイドしてくれます。ただし、結果を簡単に検索できるとは限りません。検索機能を追加する方法はいくつかありますが、ヘッダーにテキストボックスやコンボボックスを追加するのが最も簡単に作成・実装できる方法の一つです。
しかし、最初のステップはフォームを改造することではありません。検索条件として使用する値を決定することです。主キー値が第一候補となるかもしれません。しかし、主キー値は必ずしも現実的ではありません。例えば、ユーザーは姓の値で検索したい場合があり、その姓はデータの主キーの一部であるかどうかはわかりません。
ユーザーがデータをどのように検索したいかがわかれば、検索ソリューションを作成して実装できます。例えば、以下の手順は、(Access に付属するデモデータベースである Northwind の)「受注」フォームに検索コントロールを追加します。
- 「受注」フォームのデザインビューで、ヘッダーを開き、非連結テキストボックスコントロールを挿入します。検索コントロールをヘッダーに配置する必要はありませんが、ヘッダーに配置することで、検索機能をフォームの他の部分から目立たせることができます。
- テキストボックスにtxtSearchという名前を付けます。
- フォーム デザイン ツールバーのコード ボタンをクリックして、フォームのモジュールを開きます。
- txtSearch コントロールの After Update イベントに次のコードを入力します。
プライベートサブ txtSearch_AfterUpdate()
'txtSearch の内容に基づいてレコードを検索します。
Dim strSearch As String
エラー時にerrHandlerへ移動
'テキスト検索用に区切られています。
'strSearch = "OrderID = " & Chr(39) & Me!txtSearch.Value & Chr(39)
'数値の場合は区切られます。
strSearch = "OrderID = " & Me!txtSearch.Value
「記録を見つけてください。」
Me.RecordsetClone.FindFirst strSearch
Me.Bookmark = Me.RecordsetClone.Bookmark
サブを終了
エラーハンドラー:
MsgBox "エラー番号: " & Err.Number & "; 説明: " & _
エラー説明
終了サブ
フォームをフォームビューに切り替え、新しい検索コントロールに注文番号を入力し、Enter キーを押します。コントロールの After Update イベントを実行すると、OrderID フィールドで txtSearch の現在の値と一致するものが検索され、それに応じてフォームとサブフォームが更新されます。一致するものが見つからない場合、フォームにはレコードセットの最初のレコードが表示されます。無効なデータ型を入力するとエラーが発生します。このエラー処理ルーチンは基本的なものなので、十分にテストし、必要に応じて適切なアクションを組み込むことをお勧めします。この手法を独自のフォームに適用する場合は、次の 2 つの領域を更新する必要があります。
- 適切に区切られた検索ステートメントを選択し、もう一方のステートメントをコメントアウトしてください。コードには、テキストフィールドを検索するためのサンプルステートメントが含まれていますが、これはコメントアウトされています。この例では、数値フィールド(OrdersテーブルのOrderID)を検索します。
- OrderID への明示的な参照を適切なフィールド名に置き換えます。(上記の強調表示されたステートメントを参照してください。)
検索機能を実装する方法は数多くありますが、これは最もシンプルな方法の一つです。単一のフィールドを検索する限り、この方法は問題なく機能します。検索値のリストが比較的短い場合は、テキストボックスではなくコンボボックスを使用し、コントロールのドロップダウンリストに検索値を表示することで、簡単に選択できるようにすることができます。

スーザン・ハーキンス
スーザン・セールス・ハーキンスは、デスクトップソリューションを専門とするITコンサルタントです。以前は、世界最大の技術雑誌出版社であるコブ・グループの編集長を務めていました。