• 締切済み

Accessが画像データでパンク

画像データを取り込むとあっという間に 1Gを越えてしまいパンク。 なんとかならないもんでしょうか? 怪しげな対策ソフトがあるようですが・・・

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.6

>LAN上のほかのPCからでもうまく動作しますか? 一応LAN対応です。 っと思ったら、ちょっとLANではエラーが出てしまいますね。こりゃ。(やっぱ、短時間でコーディングしたものをすぐにリリースすると、ダメですね。) Form_Currentを以下のようにすると、多分LAN対応です。(といっても、これも時間かけてテストしていないんで…) Private Sub Form_Current()   On Error Resume Next   Me.画像.Picture = GetDir(CurrentDB.Name) _     & Me![イメージファイル名]   If Err > 0 Then     Me.画像.Picture = ""     Err.Clear   End If End Sub ちなみに、↑の方式は、MDBファイルが置かれているフォルダからの相対パスで指定する方式です。 ファイル名を絶対パスで指定する場合は   On Error Resume Next   Me.画像.Picture = Me![イメージファイル名]   If Err > 0 Then   '以下同じ ってな感じで書いてやります。

  • katuya
  • ベストアンサー率33% (38/115)
回答No.5

今まで回答された方のやり方でないと根本的な解決にはなりませんが、ひとつだけ・・・・ ACCESSはデータの編集を重ねるとファイルサイズが肥大化していきます。 その無駄な領域を最適化すればかなり小さくなります。 メニュー⇒ツール⇒データベースユーティリティ⇒最適化 もう対策済みでしたでしょうか? 実際の画像ファイルが1GB近ければどうしようもありませんが。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

えっと、他の皆さんがおっしゃるように、実際のところは画像ファイルをデータベースの外に置いたほうが使いやすそうですね。 商品ID 商品名    イメージファイル名 1    あんぱん   Image\AN-Pan.jpg 2    ジャムぱん  Image\Jam-Pan.jpg 3    クリームぱん Image\CreamPan.jpg 上のようなテーブルを作って フォームにイメージコントロール[画像]を配置してやり、下記のようなコードを書けば、うまく作動するはずです。(実際の画像はImageフォルダに置いておく) ちなみに、この方法は帳票フォームでは不具合をきたすので(連帳レポートはOK)、連帳フォームを使う際には、別途 [サムネイル]フィールド(OLE型)を付加してやったほうが良いかもしれません。 サムネイル(縮小画像)のサイズを1枚10KB以下程度に抑えれば、実用上は問題無いのではないかと思います。 Private Sub Form_Current()   On Error Resume Next   ChDir GetDir(CurrentDb.Name)   Me.画像.Picture = Me![イメージファイル名]   If Err > 0 Then     Me.画像.Picture = ""     Err.Clear   End If End Sub Private Function GetDir(PathName As String) As String   Dim i As Long   Dim C As String * 1   For i = Len(PathName) To 1 Step -1     C = Mid(PathName, i, 1)     If C = "\" Or C = ":" Then       GetDir = Left$(PathName$, i)       Exit For     End If   Next i End Function PS. が~ん!! 行頭の半角スペースは強制削除されるのね(T^T) 何とかしてよ~>OKWeb

noname#832
質問者

補足

古い話になって申し訳ありません。今一度よろしいでしょうか? LAN上のほかのPCからでもうまく動作しますか? よろしくお願いします。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.3

私も、DB内にはポインタとしてファイル名のみを保存し、 実際の画像データはデータフォルダを決めて、そこに保存しておく ほうが良いでしょうね。 ただでさえいじればいじるほどデータが肥大するアクセスですから 保管するデータは少ないほうが良いでしょうね。

  • Tetsuro_M
  • ベストアンサー率19% (4/21)
回答No.2

確かにアクセスのテーブルに直接画像データを保存するとmdbファイルは非常に大きくなりますよね。 例えば商品マスタにその画像を取り込みそれを表示参照したい等の処理ならば、テーブルには画像データの名前を登録しておいて、フォームにその商品レコードを呼び出した時、その名前から画像を読み込み、フォームに貼り付ける方法をとれば、mdbファイルは大きくなりませんし、ファイルの管理もらくですよ。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

Access2000だと、2GBまで耐えられるので、そっちに移行してみるとか…。 ちなみに、SQLサーバも最大2GBです。 あるいは、この制限は「データベース1つにつき」の値ですので、複数のDBを作成して、本体のMDBにリンクテーブルで取り込んでしまうとか…。 例えば"画像1.MDB","画像2.MDB"という名前にしておき、これらには画像のみを格納する。 別途、画像.MDBを作成し、これには、画像ファイルのインデックス(含MDB名称)を格納しておき、必要に応じて各MDBからデータを取り出す、ってな感じの仕様にすればいいと思います。

noname#832
質問者

補足

フォーム及びレポート上で、ほぼ毎日画像を出力・追加しています。 申し訳ありませんがもう少し具体的な回答をいただけますでしょうか。 会社の業務をAccessで構築/運用/開発しております。なにせ一人で初期バージョンから仕事の合間に改良を重ねてきたのですが・・・ここにきて「画像問題」の壁にぶち当たりました。なお現在は97を使用しております。

関連するQ&A

専門家に質問してみよう