ACCESSでは日付単位でレコードを作成するシーンが多々あります。
例えば日々の売上を入力するデータベースや、勤怠管理のデータベースなどです。
そういった際に、1か月分の日付レコードを自動生成することができれば便利です。
今回は日付レコードを一括作成する機能をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSで実際に作成したフォームやレポートを、その作成方法と共にご紹介していきます。
日付をレコード追加する機能
最初に作成する機能の内容を紹介します。
今回は、以下のTRN_日付テーブルを準備しました。

日付のフィールドだけがあるテーブルです。
サンプル用なので日付だけにしましたが、実際にし利用する場合は日付単位で入力する他のフィールドを付加したテーブルにすることが多いでしょう。
このテーブルに、日付を本日の日付まで自動的に追加するというプロシージャを作成します。
VBAプログラミング
では、実際に作成したVBAのプロシージャを紹介します。
Public Sub hiduke_tsuika()
Dim cnn As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim recent_date As Date
recent_date = DMax("日付", "TRN_日付")
'今日の日付とTRN_日付の最新日付が同じかチェック
If recent_date = Date Then
'同じなら終了
Exit Sub
'違っていた場合は今日の日付までレコード追加
Else
'変数にADOオブジェクトを代入
Set cnn = CurrentProject.Connection
Set rst1 = New ADODB.Recordset
rst1.CursorLocation = adUseClient
'レコードセットを取得
rst1.Open "TRN_日付", cnn, adOpenKeyset, adLockOptimistic
Do Until recent_date = Date
rst1.AddNew
rst1!日付 = DateAdd("d", 1, recent_date)
rst1.Update
recent_date = rst1!日付
Loop
'終了処理
rst1.Close: Set rst1 = Nothing
cnn.Close: Set cnn = Nothing
End If
End Sub
VBAのADOを使ってテーブルにレコードを追加するプロシージャです。
順に解説していきます。
最初に
Dim cnn As ADODB.Connection
Dim rst1 As ADODB.Recordset
で変数の宣言をしています。
これはADOで使用する変数の宣言です。
ADOについて詳しくは以下の記事をご覧下さい。

次に
recent_date = DMax("日付", "TRN_日付")
では、recent_dateという変数に、TRN_日付テーブルの最新の日付を入力します。
この変数を使って、TRN_日付テーブルの日付と現在の日付を比較していきます。
If recent_date = Date Then
の条件式でrecent_dateとDate(現在の日付)を比較し、異なっていればレコードの追加処理を行います。
Do Until recent_date = Date
rst1.AddNew
rst1!日付 = DateAdd("d", 1, recent_date)
rst1.Update
recent_date = rst1!日付
Loop
上記のループ処理では、recent_dateがDateと同一になるまで、1レコードずつ追加をしています。
rst1というレコードセットにTRN_日付テーブルを代入しており
rst1!日付 = DateAdd("d", 1, recent_date)
でrecent_dateに+1日した日付を設定した上でレコードの追加を行います。
そして
recent_date = rst1!日付
でrecent_dateを1日増加させて再度ループの判定を行っていくという処理です。
この処理を実行するととで、本日の日付分まで自動でテーブルにレコードを追加することが可能です。
以上、日付レコードを一括作成する機能をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

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