【Access VBA】実践演習 #2 (検索機能の実装)


このシリーズでは書籍管理システムの作成を通して、Access VBAの使い方を学ぶことを目標とします。
データベース操作はDAOを使って実装します。
Accessの基本的な操作は知っているけれど、VBAはあまり書いたことがない方を対象としています。

途中SQLも使いますので、不安な方はこちらの記事等で確認してください。
AccessでSQLの練習

必要なファイルのダウンロードやテーブル等の確認は初回の記事をご覧ください。
【Access VBA】実践演習 #1


今回は「F_書籍検索」の各機能を実装していきたいと思います。

■練習2-1 (検索ボタン)

「検索」ボタンをクリックしたときに、
「タイトル」「カテゴリ」「著者」の値に応じた検索結果が表示されるようにしてください。
※「タイトル」「著者」は部分一致検索、「カテゴリ」は完全一致検索とします。
※全て空の状態で検索が押されたときは、全件表示となるようにしてください。
(実行例)

(補足)
・F_書籍検索のレコードソースは「Q_書籍検索」クエリを使用しています。

解答例・解説
方法はいくつかありますが、2パターン紹介します。

①レコードセットの「Filterプロパティ」を使った検索
②SQLを使った検索

■練習2-2 (クリアボタン)

「クリア」ボタンをクリックしたときに入力フォームの値が消去され、
全レコードが表示されるようにしてください。

(ヒント)
・値の消去は、入力フォームの値をNullに設定。
・フィルターの解除は全件取得した結果をレコードセットに設定。

解答例・解説
練習2-1と同様に、2パターン紹介します。

①クエリを使って取得
②SQLを使って取得

■練習2-3 (貸出ボタン)

「貸出ボタン」をクリックした際に、「F_貸出登録」を開くようにします。
ただし、対象の書籍(BOOK_ID)のフォームが開くようにフィルターをかけてください。
また、「貸出中」の書籍の場合にはエラーメッセージを表示してください。

・BOOK_ID=2 の貸出ボタンクリック時

・BOOK_ID=3 の貸出ボタンクリック時

(ヒント)
・フィルターはDoCmd.OpenFormの第4引数で指定可能。

解答例・解説

■練習2-4 (編集ボタン)

「編集ボタン」クリック時に、「F_書籍編集」を開くようにしてください。
その際、「DoCmd.OpenForm」の引数「OpenArgs」に対象のBOOK_IDを設定してください。
また、開く処理の前に「F_書籍編集」を閉じる処理を実装してください。

(補足)
・OpenArgsは開くフォームに対して値を渡すための引数です。
今回は「F_書籍編集」にBOOK_IDを渡しています。
・閉じる処理は既に開いているフォームに対してOpenArgsの値が渡されない現象(バグ?)を防ぐためです。

解答例・解説

以上、「F_書籍検索」関連の機能を実装しました。
やや難し目の内容も含んでいますが、今回の内容が理解できていると
データベース操作で良く使う検索の処理はおおよそ問題無いかと思います。

次回は登録処理を実装する予定です!

■記事一覧

#1 (準備とトップページの処理)
#2 (検索機能の実装)
#3 (登録機能の実装)
#4 (編集機能の実装)
#5 (貸出・返却機能の実装)

  • このエントリーをはてなブックマークに追加

PAGE TOP