概要
Access には,「修復/最適化」の機能がある。データの追加や削除をすることで生じるファイル内部の”無駄領域” を整理整頓して,全体のサイズを小さくしてくれる。ところが,小さくなるはずのものが小さくならない時もある。
試してみたい2つのこと
1.埋め込み画像を使用しているフォームやレポートの調整
PNG画像を埋め込んでいたレポートが2つあったが,この2つのレポートだけで70MBも消費していた。明らかにおかしいので,以下の手順をしたところ,元ファイルが128MBだったのが40MBまで小さくなった。ただしこれを行うには,貼り付けていた画像ファイルが必要。
1.空の新規データベースファイルを作成する。説明上,ファイルBとする
2.ファイルBに,肥大化しているファイルより,画像を貼り付けているフォームやレポートのみをコピーする
3.ファイルBにて,フォームまたはレポートを開き,画像をもう一度埋め込みし直す。イメージオブジェクトのプロパティで,ファイルをもう一度選択すればよい。見た目は変わらないが,保存してフォームまたはレポートを閉じる。そして,最適化をする。複数のフォームやレポートがある場合は,他のものを再調整する前に,最適化を先にする。つまり最適化を何度もすることになる。
4.ファイルBのファイルサイズが妥当な大きさであるなら成功。ファイルBにあるフォームやレポートを元のファイルに上書きコピーする。
5.元ファイルにてVBAのコンパイル と 最適化を行う。VBAのコンパイルでエラーが発生する場合は,レポートやフォームのプロパティで「レコードソース」を一旦空にし,もう一度同じものを登録させる。
ポイント
元ファイルのレポートやフォームで直接作業すれば良さそうに思えたが,それでは小さくならなかった。空のデータベースファイルで作業することで,画像の内部保存方法が何かしら改善されるようです。
2.他のバージョンのAccessで最適化させてみる
互換性の問題がどこまでクリアできるか不明だが,上位バージョンのAccessで最適化させたら小さくできることもある。(この点についてはケース・バイ・ケース)
プロパティ
Microsoft Access 2010 14.0.7237.5000 (32bit)
Microsoft Access 2019
コメント