アプリ版:「スタンプのみでお礼する」機能のリリースについて

ただいまAccessで画像のデータベースを作っております。問題はいちいち画像をレコードごとに「オブジェクトの挿入」で貼り付けているので時間がかかってしまいます。Accessで別途保存してある画像ファイル(JPEG)を(リンクとしてではなく)自動的に読み込むような機能はあるのでしょうか?
データベース上で直接画像を確認できるようなものを作りたいのです。よろしくお願いいたします。
(環境はWin2000,Office2000,PCはDELLです)

A 回答 (1件)

よく使う手法ですので覚えておいて損はないと思います。


以下、私がローカルで作成したサンプルDBの構造に沿って説明します。

「tbl01Content」という名前のテーブルを作成します。
その中にとりあえずフィールドを1つだけ「m01Image」という名前でテキスト型で作成します。
# とりあえずここでは画像ファイル名のフィールドだけですが、
# の他の情報を格納するフィールドもこのテーブルに作っちゃってください。
# 実際問題として、メインレコード1件に対して画像が1点ならば上記の構造で構いませんが、
# メインレコード1件に対して画像が数点ある場合は
# 画像ファイル名は別テーブルに格納してメインテーブルとリレーションすることになると思います。

このフィールドには画像ファイルのフルパスを入れておいてください。

フォームを1つ作ります。名前は適当に。
フォームのレコードソースを「tbl01Content」テーブルに設定。
フォーム上にイメージコントロールを貼り付けます。
# メージファイルを選択するダイアログが出るので、とりあえず適当な画像ファイルを選択してください。
# その後すぐに、プロパティの「ピクチャ」を空っぽにしてください。
イメージコントロールの名前を「imgPic」とします。

テキストボックスを1つ配置します。
テキストボックスのコントロールソースを「m01Image」フィールドにします。
# このテキストボックスにはファイル名が表示されるので、
# 邪魔なら「可視」プロパティを「いいえ」にしても結構です。
テキストボックスの名前を「txtImagePath」とします。

フォームの「レコード移動時」イベントを「イベントプロシージャ」にしてVBEditorを起動。
「Private Sub Form_Current()」というプロシージャが作成されていますので、以下のようにコードを記述してください。

Private Sub Form_Current()
 If Not IsNull(Me.txtImagePath.Value) Then
  Me.imgPic.Picture = Me.txtImgPath.Value
 Else
  Me.imgPic.Picture = ""
 End If
End Sub

これで一応動くはずです。

以下、改善点。
問題1)
フィールドに画像のフルパスを入れるのは面倒くさいから、画像のファイル名だけを入れるようにしたい。
実際の画像ファイルも「固定の」フォルダ内に全部入れておくようにしたい。

改善1)
「固定フォルダ」のパスがどこなのかを、DB内のどこかに保存しておく。
設定情報を格納するためのテーブルを作成するのもよし。
VBAのコード内で定数として持っておくのもよし。


問題2)
新規レコードをフォームから登録させたい。
その際、登録する画像ファイルを「ユーザーにやさしいインターフェイスで」登録させたい。

改善2-1)
「ファイルを開くダイアログ」はAPI関数を使うことになります。
別の場所にある画像をダイアログから選択させて、レコードを登録するときにVBAでその画像ファイルを「固定のフォルダ」にコピーする必要があります。

改善2-2)
画像ファイルはあらかじめユーザーがエクスプローラなどから手動操作で「固定フォルダ」に保存してもらう。
新規レコード登録時にファイル選択ダイアログを表示し、固定フォルダの中から該当する画像ファイルを選択してファイル名をテーブルに記録させる。

てなところでしょうか。
    • good
    • 0
この回答へのお礼

temtecomaiさん、ここまで丁寧に教えていただいて感激です!!どうもありがとう。
これから仕事を再開します。すごく難しそうですが挑戦してみます。後ほどまたご報告します。

お礼日時:2003/07/24 15:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A