VBAの使い方を学ぶことを目標とします。データベース操作はDAOを使って実装します。Accessの基本的な操作は知っているけれど、VBAはあまり書いたことがない方を対象としています。途中SQLも使いますので、不安な方はこちらの記事等で確認してください。必要なファイルのダウンロードやテーブル等の確認は初回の記事をご覧ください。#1今回は「F_貸出登録」「F_返却登録」「F_貸出履歴」の各機能を実装していきたいと思います。(貸出登録ボタン)「F_貸出登録」の「貸出登録」ボタンをクリック時に、以下の処理を行うようにしてください。1.「蔵書一覧」テーブルの対象の書籍の貸出状況を「貸出中」に変更する。2.「貸出履歴」テーブルに新規レコードを追加する。)(追加要件)・貸出状況が「貸出中」の場合はエラーメッセージを表示する。・ユーザーIDや貸出日が空の時にはエラーメッセージを表示する。・貸出登録の前には確認メッセージを表示する。・登録が完了したら「F_貸出履歴」を開く。2パターン紹介します。1レコードセットを使う解答例は以下になります。"ユーザーを選択してください。"貸出日を入力してください。"■貸出登録を行います。"貸出登録が完了しました。Subやや長めのコードですが、内容としては既出の処理の組み合わせとなります。コメントを付けているので追ってみて下さい。新しいこととしては、一つのイベントで2つのテーブルを操作していることですが、その場合はレコードセット用の変数を2つ(rs1とrs2)用意します。2SQLを使う解答例は以下になります。"ユーザーを選択してください。"貸出日を入力してください。"■貸出登録を行います。"貸出登録が完了しました。Sub毎度のことですがSQLがややこしいです。(特にInsert)それぞれ作成したいのは以下のようなSQLです。(返却ボタン)「F_貸出履歴」の「返却」ボタンをクリックした際に、「F_返却登録」を開くようにしましょう。対象の書籍(貸出ID)のフォームが開くようにフィルターをかけてください。返却済み書籍の場合にはエラーメッセージを表示してください。(返却日が空でない書籍)・返却済みの場合エラーメッセージ・未返却の書籍の「返却」ボタンクリック(ヒント)・フィルターはDoCmd.OpenFormの第4引数で指定可能。・「F_返却登録」のレコードソースは「Q_貸出中書籍」です。Subこれも基本的には既出の内容となります。OpenFormするときのフィルターとしては対象カラム名を「ID」にしていて、これは「F_返却登録」のレコードソースである「Q_貸出中書籍」の「IDカラム」を指しています。値に渡している「Me.ID」が「F_貸出履歴」における「貸出ID」列のコントロールを指します。(返却登録ボタン)「F_返却登録」の「返却登録」ボタンをクリック時に、以下の処理を行うようにしてください。1.「蔵書一覧」テーブルの対象の書籍の貸出状況を「貸出可」に変更する。2.「貸出履歴」テーブルの対象のIDのレコードの返却日にフォームの日付を入力する。(追加要件)・返却日が空の場合はエラーメッセージを表示する。・登録が完了したら「F_貸出履歴」を開く。2パターン紹介します。1レコードセットを使う解答例は以下になります。"返却日を入力してください。Sub練習5-1とほとんど同じですが、違いとしては「貸出履歴」テーブルに対する処理が登録(Insert)ではなく更新(Update)になっているところになります。2SQLを使う解答例は以下になります。"返却日を入力してください。Subこれもやはり練習5-1と同様で、InsertがUpdateになっているところだけ異なっています。念のため、各SQLは以下の通りです。8以上、書籍管理システムの作成を通して、AccessVBAでよく使うデータベース操作を見てきました。5回の記事で作成したプログラムが理解できて使いこなせていれば、ほとんどの要件には対応できるかと思います。説明の都合上テーブルやフォームは事前に用意しましたが、プログラムやSQLに慣れてきた方は0からテーブルの設計、フォームの設計を行い、ご自身で同じようなシステム、より良いシステムが作成できるのが理想かと思います。