このシリーズでは書籍管理システムの作成を通して、Access VBAの使い方を学ぶことを目標とします。
データベース操作はDAOを使って実装します。
Accessの基本的な操作は知っているけれど、VBAはあまり書いたことがない方を対象としています。
途中SQLも使いますので、不安な方はこちらの記事等で確認してください。
⇒ AccessでSQLの練習
必要なファイルのダウンロードやテーブル等の確認は初回の記事をご覧ください。
⇒ 【Access VBA】実践演習 #1
今回は「F_書籍編集」の各機能を実装していきたいと思います。
■練習4-1 (BOOK IDコンボボックス)
BOOK IDコンボボックスの値が変わったときに、IDに応じた「タイトル」「カテゴリ」「著者」の
値が各フォームに入力されるようにしてください。
(ヒント)
・コンボボックスの「更新後」イベントを使用(他のイベントでも可)
・FindFirstでレコード検索(Q_書籍検索を使用する場合)
解答例・解説
今回も2パターン紹介します。
■練習4-2 (処理の共通化)
練習4-1で作成した「BOOK_ID_AfterUpdate」の処理を以下に置き換えてください。
また、同じ処理が実行されるように、Subプロシージャ「displayBookInfo」を作成してください。
Private Sub BOOK_ID_AfterUpdate() Call displayBookInfo(Me!BOOK_ID) End Sub
■練習4-3 (F_書籍検索から開いた時の処理)
検索機能を作成(第2回)の時に編集ボタンの処理を作成しました。
「F_書籍検索」から編集ボタンをクリックしたときに、該当の書籍の情報を表示させてください。
(ヒント)
・フォームの「読み込み時」イベント(Form_Load)を使用。(Form_Open等でもOK)
・OpenArgsがNullでない場合は練習4-2で作成した「displayBookInfo」に渡す。
■練習4-4 (編集ボタン)
今回のメインとなる編集ボタンの処理です。
編集ボタンをクリックすると、対象の書籍の情報を更新します。
登録の時と同じように、各フォームが空の場合はエラーメッセージを表示し、
編集完了時にもダイアログを表示するようにしてください。
解答例・解説
今回も2パターン紹介します。
■練習4-5 (リセットボタン)
最後にリセットボタンの処理を実装しましょう。
ボタンクリック時にBOOK_IDの現在の値(編集前の値)を反映するようにします。
その際以下のような確認メッセージを表示して、OKのときだけリセットしましょう。
(ヒント)
・練習4-2で作成したdisplayBookInfoを利用する。
・BOOK_IDが空の時は処理をしない。
今回は編集機能の作成を行いました。
共通処理をまとめるところはVBAの復習になったかと思いますし、
親フォーム(F_書籍検索)から子フォーム(F_書籍編集)への値の受け渡しは応用が効く処理だったと思います。
次回は貸出と返却機能を作成し、一通り完成となる予定です!
■記事一覧
#1 (準備とトップページの処理)
#2 (検索機能の実装)
#3 (登録機能の実装)
#4 (編集機能の実装)
#5 (貸出・返却機能の実装)