#519 古いデータを自動的に削除するには? VBA

データベースではデータを蓄積していくというのが基本的な考え方ですが、ファイルサイズが大きくなり過ぎてバックアップが面倒だったり、古いデータがあっても見ることもないし削除してしまっても何ら問題ないという場合もあります。

そのような場合、日付/時刻型フィールドに時系列のデータ(売上日や出荷日など)が格納されていれば、それを条件として自動的に古いレコードを削除するようにすると便利です。


それには、一例として次のようなコードを実行します(ここではVBAで書いていますが、同等の削除クエリを作っておいてマクロでそれを開いてもかまいません)。

また実行するタイミングとしては、メインメニューフォームなど、システムを終了する際に最後まで必ず開いているようなフォームの、閉じる時または読み込み解除時イベントを利用するとよいでしょう。


Private Sub Form_Close()
'フォームを閉じるとき

  Dim strSQL As String
  Dim dtmBefore As Date

  '今日の一年以上前の日付を削除対象とする
  dtmBefore = DateAdd("yyyy", -1, Date)
  'レコード削除するSQLを組み立て
  strSQL = "DELETE * FROM tbl売上 WHERE " & _
                  "売上日付 <= #" & dtmBefore & "#"
  '削除を実行
  CurrentDb.Execute strSQL

End Sub

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved