ACCESSではフォームからデータを入力します。
入力されたデータはそのままテーブルに反映される仕様ですが、若干のタイムラグがあります。
こうしたタイムラグによって、最新の値がうまく反映できないケースがあります。
そこで利用するのがSaveRecordです。
今回は、SaveRecordでレコードを即座に保存する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
レコードを即座に保存するDoCmd.RunCommand acCmdSaveRecord
ACCESSのフォームで入力中の情報をテーブルに即座に反映するには、
DoCmd.RunCommand acCmdSaveRecord
を利用します。
この1行を書くだけで入力中のデータが保存されます。
DoCmd.RunCommandとは
DoCmd.RunCommand acCmdSaveRecordは、DoCmd.RunCommandメソッドの引数に「acCmdSaveRecord」を指定したものです。
DoCmd.RunCommandとは、ACCESSの組み込みコマンド、つまりACCESSのメニューにもともとある標準的な機能を呼びだして利用するメソッドです。
DoCmd.RunCommandの後に半角スペースを空けて引数を入れれば、様々な処理を実行できます。
以下に一例を記載します。
| 引数 | 内容 |
|---|---|
| acCmdSaveRecord | レコードを保存する |
| acCmdAboutMicrosoftAccess | ACCESSのバージョン情報を表示する |
| acCmdCopy | 選択したオブジェクトをコピーする |
| acCmdDocMaximize | 開いているオブジェクトを最大化する |
| acCmdDocMinimize | 開いているオブジェクトを最小化する |
DoCmd.RunCommand acCmdSaveRecordが必要な理由
ACCESSのフォームではレコードソースにテーブルやクエリを設定するのが一般的です。
この場合、フォームで入力した値は自動的に元となるテーブルに記録されます。
Excelでは保存ボタンを押さないと保存されませんが、ACCESSの場合は保存ボタンを押す必要もなく自動で反映されるのです。
では、なぜDoCmd.RunCommand acCmdSaveRecordでレコードを保存する必要があるのでしょうか。
それは、ACCESSのフォームで入力した値がテーブルに反映されるまでに若干のタイムラグがあるためです。
ACCESSのフォームは、特定のレコードを更新して、次のレコードに移動した際に保存されます。
そのため、次のレコードに移動する前に入力した値を利用した処理を行うと、古いデータで処理がされてしまうのです。
特にサブフォームで単価と数量を掛け算した金額の合計値をメインフォームに反映させるような処理の際に重宝します。
以下に参考となる記事もありますのでご覧ください。

以上、SaveRecordでレコードを即座に保存する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。
