-PR-
締切り
済み

Accessが画像データでパンク

  • 困ってます
  • 質問No.4394
  • 閲覧数426
  • ありがとう数8
  • 気になる数0
  • 回答数6
  • コメント数0

画像データを取り込むとあっという間に
1Gを越えてしまいパンク。
なんとかならないもんでしょうか?
怪しげな対策ソフトがあるようですが・・・
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全6件)

  • 回答No.2
レベル7

ベストアンサー率 19% (4/21)

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

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

Access2000だと、2GBまで耐えられるので、そっちに移行してみるとか…。 ちなみに、SQLサーバも最大2GBです。 あるいは、この制限は「データベース1つにつき」の値ですので、複数のDBを作成して、本体のMDBにリンクテーブルで取り込んでしまうとか…。 例えば"画像1.MDB","画像2.MDB"という名前にしておき、これらには画像のみを格納す ...続きを読む
Access2000だと、2GBまで耐えられるので、そっちに移行してみるとか…。
ちなみに、SQLサーバも最大2GBです。

あるいは、この制限は「データベース1つにつき」の値ですので、複数のDBを作成して、本体のMDBにリンクテーブルで取り込んでしまうとか…。

例えば"画像1.MDB","画像2.MDB"という名前にしておき、これらには画像のみを格納する。
別途、画像.MDBを作成し、これには、画像ファイルのインデックス(含MDB名称)を格納しておき、必要に応じて各MDBからデータを取り出す、ってな感じの仕様にすればいいと思います。
補足コメント
noname#832

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

投稿日時 - 2000-06-27 18:53:40
  • 回答No.3
レベル13

ベストアンサー率 26% (511/1924)

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

ただでさえいじればいじるほどデータが肥大するアクセスですから
保管するデータは少ないほうが良いでしょうね。
  • 回答No.4
レベル13

ベストアンサー率 46% (643/1383)

えっと、他の皆さんがおっしゃるように、実際のところは画像ファイルをデータベースの外に置いたほうが使いやすそうですね。 商品ID 商品名    イメージファイル名 1    あんぱん   Image\AN-Pan.jpg 2    ジャムぱん  Image\Jam-Pan.jpg 3    クリームぱん Image\CreamPan.jpg 上のようなテーブルを作って フォームにイメ ...続きを読む
えっと、他の皆さんがおっしゃるように、実際のところは画像ファイルをデータベースの外に置いたほうが使いやすそうですね。

商品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からでもうまく動作しますか?
よろしくお願いします。
投稿日時 - 2000-07-27 17:10:41
  • 回答No.5
レベル10

ベストアンサー率 33% (38/115)

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

ACCESSはデータの編集を重ねるとファイルサイズが肥大化していきます。
その無駄な領域を最適化すればかなり小さくなります。

メニュー⇒ツール⇒データベースユーティリティ⇒最適化

もう対策済みでしたでしょうか?
実際の画像ファイルが1GB近ければどうしようもありませんが。
  • 回答No.6
レベル13

ベストアンサー率 46% (643/1383)

>LAN上のほかのPCからでもうまく動作しますか? 一応LAN対応です。 っと思ったら、ちょっとLANではエラーが出てしまいますね。こりゃ。(やっぱ、短時間でコーディングしたものをすぐにリリースすると、ダメですね。) Form_Currentを以下のようにすると、多分LAN対応です。(といっても、これも時間かけてテストしていないんで…) Private Sub Form_Cur ...続きを読む
>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
  '以下同じ
ってな感じで書いてやります。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ