• ベストアンサー

帳票フォームで製品写真を表示するには?

帳票フォームで製品写真を表示しようとしています。 写真はmdbと同じフォルダ内に作ったphotoという名前のフォルダに 入っています。 写真を読み込むとこまではできたのですが、 全てのレコードの写真が アクティブになったレコードの製品の写真になってしまいます。 写真を読み込むイベントプロシージャを「レコード移動時」に 設置しているます。単票フォームのときにはレコードを移動するときに 製品のデータも写真も入れ替わるので問題なかったのですが、 帳票フォームにすると製品データが一覧表示されているのに まず1レコード目の製品の写真が全てのレコードに表示され、 レコードを移動するとどの製品の写真も一斉にアクティブに なっているレコードの製品の写真になってしまいます。 これでは使えません。 イベントプロシージャを設置する場所が悪いのでは ないかと思いますがどこに置いたらいいのか分かりません。 ご指導ください。 現在の状況 帳票型の製品一覧フォームの詳細に[写真]というイメージコントロールを置き、 写真の名前は[写真パス]テーブルの[パス]フィールドに入っています。 写真はmdbと同じフォルダ内に作ったphotoという名前のフォルダに 入っています。 製品一覧フォームのレコード移動時に下のイベントプロシージャを 設置しています。 写真の読み込みはうまくいっています。 If IsNull(Me![パス]) = False Then Me![写真].Visible = True Forms!製品一覧!写真.Picture = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\", , vbTextCompare)) & "photo\" & Forms!製品一覧!パス Else Me![写真].Visible = False End If

質問者が選んだベストアンサー

  • ベストアンサー
  • yu_tang
  • ベストアンサー率81% (26/32)
回答No.2

「mdb」とあるので、Microsoft Access の話だと思いますが、バージョンは 何でしょうか。 バージョンによって回答がまったく変わってきますので、バージョン情報が 非常に重要になってきます。 Access 2007 以降であれば、イメージ コントロールに [コントロールソース] プロパティが追加されたはずなので、そちらを試してみるとよいでしょう。 Access 2003 以前であれば、下記を試してみるとよいでしょう。 OleImage 関数 - 表形式(帳票)フォームにパスから画像を表示する方法 | YU-TANG's MS-Access Discovery http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmOleImage.html OleImage 関数を使うなら、VBA のコーディングは基本的に不要です (特殊なケースでは数行のコーディングが必要になる場合もあります)。 「使用上の注意」をよく読んだ上で、ニーズにマッチしないと思われる 場合は、他の方の回答を採用してください。

参考URL:
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmOleImage.html
uebo
質問者

お礼

早速のご回答ありがとうございます。 仕様ソフトがアクセスだということを 記載するのを忘れてしまったのに適切かつ 親切な回答に感謝です。 モジュールをインポートさせてくれるうえに 画像の場所を絶対パスでも相対パスでも指定できる なんとも理想的な解決方法で嬉しかったのですが、 ダウンロードしてもサンプルが動きませんでした。 原因はご指摘の通り、アクセスのバージョンだと思います。 2000なので動かないようです。 アクセスのバージョンアップを検討します。 ありがとうございました。

その他の回答 (1)

noname#182251
noname#182251
回答No.1

ちょっと試してみましたが、上手く行かないようです。「イベントプロシージャを設置する場所が悪い」のではなく、アクセスの仕様というか、複数レコードを表示しても、画像のリソースは一つだけなのかなといった感じを受けます。 で、対策として思いつくのは 1.サブフォームで複数レコード表示 2.メインフォームで、サブフォームの各レコード横にイメージコントロールを置き、サブフォームのレコード移動時イベントで、それぞれの画像のファイル名を指定する。 試していません。かなり面倒だと思うし、VBAは嫌いなので(^^;

uebo
質問者

お礼

早速のご回答ありがとうございます。 試作までしていただいて、恐縮です。 設置する場所が悪いのではないのですね。 残念です。 メインフォームにイメージコントロールを置くとは思いつきませんでした。 レコード移動時に画像を移動するのがとっても難しそうですが 考えてみます。 くじけたら、2007なら楽にできるようなので アクセスをバージョンアップしようかと思います。 ありがとうございました。

関連するQ&A