質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

6879閲覧

ACCESSのCurrentDBにOLEオブジェクトで登録した画像をformにvbaで表示させる方法

mujinjapan

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/07/22 09:41

前提・実現したいこと

Win10+access2019で在庫管理システムを開発しています。
実現させたいことは、accessのcurrentDBにOLEオブジェクト型で登録したjpeg画像を
任意のフォームで画像として表示させたいと考えています。
VBAでformOpenを利用して、条件によって、登録したOLEオブジェクト型画像を
選択する仕組みを実現したいです。

SQLで画像を取得して、つぎのように記述しているのですが、
実行時エラー'2220’:
ファイル??を開くことができません。
となってしまいます。

記述VBA一部
set rs = new adodb.recordset
sql = "select * from 画像テーブル where id = 0 "
rs.Open sql, cn, adOpenKeyset,adLockOptimistic

do until rs.eof
me.Picture = loadPicture(rs!画像)
rs.movenext
loop

発生している問題・エラーメッセージ

実行時エラー'2220’:
ファイル??を開くことができません。

該当のソースコード

set rs = new adodb.recordset
sql = "select * from 画像テーブル where id = 0 "
rs.Open sql, cn, adOpenKeyset,adLockOptimistic

do until rs.eof
me.Picture = loadPicture(rs!画像) ← エラーメッセージはここで発生します。
rs.movenext
loop

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「画像テーブル」テーブルにOLEオブジェクト型フィールド「画像」があり、そこに画像が格納されているということですね。

loadPictureは画像ファイルをActiveX コントロールに読み込むものですので今回の用途とは別のものです。
LoadPicture メソッド (Access) | Microsoft Docs

フォーム上に表示したいなら、フォームのレコードソースに「画像テーブル」と設定して、
フォーム上に連結オプジェクトフレームとして配置してください。

OLEオブジェクト型フィールドは、重い、ファイルサイズが大きくなる、表示されない場合があるなど、いろいろ問題が多いので、
access2019なら、OLEオブジェクト型フィールドではなく添付ファイル型フィールドに画像を格納した方がいいでしょう。

AC2007以降の帳票フォームで画像表示 - hatena chips

投稿2020/07/23 07:53

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mujinjapan

2020/07/28 09:29

hatena19さん 回答ありがとうございました。 いただいた情報を元にACCESSのテーブルに添付ファイル式の項目を追加して VBAでコントールして希望の動作でつぎつぎにフォーム上の画像が差し変わる仕様を実現できました。 当初、フォーム上に作成した連結オブジェクトフレームにフィールドリストから 添付ファイル式のデータを結び付ける方法がわからなかったのですが、 「既存のフィールドの追加」リボンから簡単にドラッグドロップで実現できました。 ちなみに、画像の差し替えは、visibleのtrue、falseの組み合わせで実現できました。 とても助かりました。 改めて、お礼致します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問