- ベストアンサー
MSアクセスのOLEオブジェクト貼付時の容量増加について
テーブルでOLEオブジェクとに設定して、フォーム上で画像を挿入したのですが、挿入した画像の容量は26キロバイトなのに、アクセスデータの容量が驚いた事に300キロバイトだったのに、26キロバイトの画像を挿入したら300キロバイトが2400キロバイト(2.4Mバイト)になってしまうのです。 これはどうしようもないことなのでしょうか?それとも容量の増加を減らす手立てはありますでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
挿入されている画像は JPEG 形式のものでしょうか? Access で 画像を OLE オブジェクとして扱う場合は、おそらく(元画像が圧縮された JPEG であっても)非圧縮のビットマップ(BMP形式)として取り込まれると思いますので、かなりサイズが大きくなってしまうはずです。 これは Access の仕様ですので、どうしようもありません。 MDB のファイルサイズを大きくしたくなければ、#1の方がおっしゃっているように、画像ファイルを別の場所に置くしかないと思います。 具体的には、テーブルには画像ファイルのファイル名のフルパスの文字列(例えば、C:\Pictures\画像1.jpg)を格納しておき、イメージコントロールとして Pictureプロパティにそのフルパスを設定して(埋め込み出はなくリンクで)フォームに表示する方法があります。 詳しくは、参考URL の説明が具体的でわかりやすいと思います。 (サンプルのダウンロードもできます。) もし、画像ファイルを入れるフォルダーを常に MDB ファイルと同じ場所に置くようにするなら、画像のファイル名だけをテーブルに格納しておけば、 「MDBのあるフォルダーのフルパス & "\" & 画像ファイルのフォルダー名 & "\" & 画像ファイル名」 で、画像ファイルのフルパスが得られます。 「MDBのあるフォルダーのフルパス」の取得は、 http://www.okweb.ne.jp/kotaeru.php3?q=210414 が参考になると思います。
その他の回答 (2)
- neKo_deux
- ベストアンサー率44% (5541/12319)
私が理解している範囲で説明してみると、 OLE(オブジェクトのリンクと埋め込み)のからくりが関係あるのですが、OLEとして挿入した場合、挿入したオブジェクトを画面に表示、編集、印刷するための機能(プログラム)が一緒に埋め込まれます。 そうする事によって、AccessにWordを埋め込んだデータをWordがインストールされていないPCで表示するという事を可能にしています。 容量を抑えるには、軽めのオブジェクトを探してみるとか、ファイル名を保持しておいてフォームに画像を表示する処理を実装するとか。
お礼
大変有力なアドバイス有難う御座いました。
- ttk11
- ベストアンサー率25% (40/154)
ツール ↓ 最適化 で容量は少し減ると思います ------------------------------- 他の方法では、 ACCESS以外のところへ 図を置いて picture命令で呼び出す 方法あります
お礼
最適化による容量の軽減は分かっていましたが、リンクでの画像の指定などはしりませんでした。 アドバイス有難う御座いました。
お礼
お礼遅れて申し訳御座いません。 貴方様のアドバイスが一番分かりやすかったです。 有難う御座いました。