Accessを最適化しても変化なしの時は、イメージコントロールを確認しよう

添付ファイル型のデータはどんどん重くなる

Accessの「添付ファイル型」を使用しているお客様がいて
700レコードくらいしかないのにファイルサイズが1G(ギガ)になっていました。
ここまでくると最適化しても重さは殆ど変わりませんでした。

「添付ファイル型」は、どんなものを添付するかによっては、非常に重くなるので注意が必要です。

そこで、AP(フォーム)とDB(テーブル)を分離するAP+DB方式にして、軽くなるのを確認しました。

1GのAccessシステムも「添付ファイル型」をテキスト型に変更して、ファイル実態は所定の場所に保存してファイルパスのみテーブルに保存する方式にしたら、APファイルは10M までサイズが小さくなり、DBファイルも3Mくらいなので合計で13Mになりました。

1G→13Mまで落ちるとかなり快適です。

やったー!と思ったのですが、しばらくするとまた重くなっていきました
重くなったのはDBファイルではなくてAPファイルでした。
添付ファイル型を廃止してテーブルにはテキストだけになったのに
何でだろうか・・と思ってしばらく悩んでいました。

規模感にもよるけれど今まで重くても10M(メガ)くらいで、大体は1M~5Mくらいで収まる感じだったので、ZIPにして送るのも割合気軽にできるレベルの大きさだったのですが・・
今回も1度は10Mくらいまで落ちたファイルが30Mまで重くなってきました。
いくらなんでも30MのAPファイルは重くなりすぎだなぁと何度か入れ替え作業をして軽くしては重くなってを繰り返していました。最適化も全然効かないし・・謎は深まるばかりでした。

イメージコントロールが原因だった

そこで、ようやく理由がわかりました。
Accessのフォームやレポートで添付ファイル型だったものをイメージコントロールを使用して、ファイルパスで表示するようなつくりになっていましたが、ピクチャタイプが共有になっていました。ピクチャタイプの共有にすると、ファイルがAccess本体に残るので最適化しても変化ありませんでした。

▼いつの間にあるファイル

ピクチャタイプ
・共有
・埋め込み
・リンク

イメージコントロールの共有ファイルを削除する

イメージコントロールの共有が残っている場合の対処方法

左のテーブル等が表示されている所(すべてのAccessオブジェクト)あたりで右クリックすると、添付のようなメニューが表示されます。「ナビゲーションオプション」を開きます。

システムオブジェクトの表示を選択してOKを押します。「MSysResources」リソーステーブルを開きます。

その中で1番上のOffice テーマなどは消さないように。それ以外も消す場合は慎重に・・(APファイルのバックアップ取ってください)

最後にシステムオブジェクトの表示をOFFに戻して再起動(最適化)します。イメージコントロールのピクチャリストには消したものは表示されなくなりました。

イメージコントロールのピクチャをリンクにする

基本的に「共有」にするとシステムに残るようです。「埋め込み」にしてもそのイメージコントロールに付くので残ります。
軽いロゴ画像や印鑑画像なら埋め込みでも良いと思いますが、重たい画像やファイルを間違って共有にしてしまうとどんどん重くなります。
普通に社員の画像や商品の画像を表示する場合は、イメージコントロールのピクチャをリンクにする必要があります。

上記の作業を行ったらAPファイルは30M→10Mまで落ちました。

今まであまり「イメージコントロール」を使った事がなかったので気が付きませんでしたが、イメージコントロールを使用する場合は、リンク型にしてファイルパスを設定するようにするのが一番軽くなるかなと思いました。

後は面倒ですが、イメージコントロール型の場合、ファイル選択して画像を表示させますが、更新時にファイルをして所定のディレクトリにコピーして新たなファイルパスを設定して更新するか選択した時点でコピーさせておくか必要です。そうじゃないとその選択したファイルを削除してしまうとイメージコントロールを表示する際にエラーになるからです。
その辺を考えると、添付ファイル型は非常に便利ですが、重くなったり後のメンテが大変だったり移行に苦労するので、最初からこれを使わない設計にするのが良いと思います。

コメント

タイトルとURLをコピーしました