ACCESS SaveRecordでレコードを即座に保存する方法

ACCESSではフォームからデータを入力します。
入力されたデータはそのままテーブルに反映される仕様ですが、若干のタイムラグがあります。

こうしたタイムラグによって、最新の値がうまく反映できないケースがあります。
そこで利用するのがSaveRecordです。

今回は、SaveRecordでレコードを即座に保存する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。

目次

レコードを即座に保存するDoCmd.RunCommand acCmdSaveRecord

ACCESSのフォームで入力中の情報をテーブルに即座に反映するには、

を利用します。
この1行を書くだけで入力中のデータが保存されます。

DoCmd.RunCommandとは

DoCmd.RunCommand acCmdSaveRecordは、DoCmd.RunCommandメソッドの引数に「acCmdSaveRecord」を指定したものです。

DoCmd.RunCommandとは、ACCESSの組み込みコマンド、つまりACCESSのメニューにもともとある標準的な機能を呼びだして利用するメソッドです。

DoCmd.RunCommandの後に半角スペースを空けて引数を入れれば、様々な処理を実行できます。
以下に一例を記載します。

引数内容
acCmdSaveRecordレコードを保存する
acCmdAboutMicrosoftAccessACCESSのバージョン情報を表示する
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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

フッターバナー

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

SaveRecordでレコードを即座に保存する方法

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次