ACCESS2003で、OLEオブジェクト型のフィールドにJpegファイルの画像を埋め込む処理をVBAで記述したいのですが、

参考になるページはないでしょうか?

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2006/12/04 23:45:10
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント27pt

ADOの場合の例

画像を保存する(AppendChunkメソッド) - AccessVBA モーグ即効テクニック集

  OLEオブジェクト型でJPEGを取り込むと元のファイルサイズに対して数倍~十数倍の容量に展開(肥大)した状態でMDB内部に格納されるため、テーブルやフォームなどだけでなく作業領域も含んでいるMDBファイルは破綻しやすい状況になります。

  ネット上を検索してもサンプルに出会えないのは、破綻を恐れて使う人が少ないからです。知識としては持っていても、使うことは控えたほうがよろしいかと思います。

画像ファイルへのリンクで代用なさることをお勧めします。

id:malts

数KBの画像を千個程度しか格納しないのでMDBに入れてしまってもいいかなと思ったのですが、

避けたほうが無難かな。。

2006/11/30 15:15:56
id:coetan No.2

回答回数114ベストアンサー獲得回数5

ポイント27pt

ここで検索してみて、なかったら質問しても良いかもしれません。

※機種依存文字を使用したり、バージョン等明記がなかったり、過去ログ読んでなかったりすると、軽く怒る方が常駐してるので注意

http://www.accessclub.net/search1/namazu.cgi?query=2003+OLE+JPEG...

id:malts

ありがとうございます。

のぞいてみます。

2006/11/30 15:16:09
id:kn1967 No.3

回答回数2915ベストアンサー獲得回数301

ポイント26pt

http://office.microsoft.com/ja-jp/access/HP052802251041.aspx

イメージを埋め込むと、データベースのサイズが急激に増大し、動作が遅くなる可能性があります。GIF ファイルや JPEG ファイルを格納する場合は、OLE により各イメージ ファイルの表示情報を含む追加のビットマップファイルが作成され、これらの追加ファイルは元のファイルよりもサイズが大きくなる可能性があるため、特にその傾向が見られます。

当方でのテストでは平均して50倍程度になりましたので、10KBのJPEG形式1000個あるとして500MB程度になると計算できます。

MDBの上限は作業領域なども含めて2GBとなるため、500MBは非常に巨大な足かせになる可能性があります。

ただし、この50倍という数値は元の画像の圧縮率などにも大きく依存するので、そちらでも手動で20-30個くらいサンプルを取って見られたほうがよろしいかと思います。

  • id:malts
    テストまでしていただいてありがとうございます>kn1967さん
    とりあえず、画像データはファイルとして保存しておきDBにはファイル名のみの方式にすることにしました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません