- ベストアンサー
VisualBasic2010のPictureBoxにAccessの画像データを表示させたい
- VisualBasic2010のPictureBoxにAccessの画像データを表示させる方法を教えてください。
- MSAccess2007をデータベースとして利用して、VB2010でプログラミングをしていますが、画像データの表示について困っています。
- 具体的なやり方や使用するデータ型など、ご教授いただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Access2007からは添付ファイル型というのがあるのですね 一旦ファイルに落として、PictureBoxにLoadするのではダメでしょうか? OLE型は非公開のヘッダーがついていてファイル取り出し不能?と言われていたので、 それに比べると保存できるだけ良いのではないでしょうか。 試みに、xl2000でAccess2010のデータベースを読んで、添付ファイル型からファイルを保存してみました。 (Access2010を入手しましたが、まだほとんど使っておりません。) 何かの足しになれば幸いです。 'Microsoft Office 14.0 Access database engine Object Libraryを 'ダウンロード&インストール&参照設定要 Sub test() Dim dbWS As DAO.Workspace Dim dbWB As DAO.Database Dim dbRes As DAO.Recordset Dim myFiles As DAO.Recordset Set dbWS = DAO.DBEngine.Workspaces(0) Set dbWB = dbWS.OpenDatabase(ThisWorkbook.Path & "\" & "Database1.accdb") Set dbRes = dbWB.OpenRecordset("T_my1st", dbOpenDynaset) dbRes.MoveFirst Do Until dbRes.EOF With dbRes.Fields("attachedFile").Value Set myFiles = dbRes.Fields("attachedFile").Value Do Until myFiles.EOF myFiles.Fields("filedata").SaveToFile ThisWorkbook.Path & "\" & myFiles.Fields("filename").Value myFiles.MoveNext Loop dbRes.MoveNext End With Loop dbRes.Close dbWB.Close dbWS.Close End Sub
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
#1です。 VBAでもインテリセンスで、SaveToFileはメンバとして表示されませんでしたが、WEBからみつけてきた通りに打ち込んでみると動作いたしました。 もし、そういう意味で無く、実際に動作しなかったという場合は、当方では検証できません(環境も、それ以上に知恵もないので)あしからず。
- mitarashi
- ベストアンサー率59% (574/965)
#1です。 当方の理解では、DAOの方は「Microsoft Office 14.0 Access database engine Object Library」と、名前の通りAccessのデータベースエンジンであり、ADOの方は、各種データベースとやりとりする為のインターフェースなので、後者で出来る事は自ずと限界があるのではないかと思います。VB2003の頃にちょこっと触れただけで、いわゆるVB.NETの知識は無いに等しいですが、VBA同様参照設定すればDAOが使えるのではないかと思い投稿させていただきました。
補足
早速のご回答ありがとうございました。 早速のご回答ありがとうございました。 この添付ファイル型データの取得部分だけ、DAOで作成してみました。 DAOも使えるんですね。勉強不足でした。。。 しかしながら、添付ファイルが入っているValueのRecordsetのメソッドで、 SaveToFileといったものがありますが、これは何を参照設定で読み込んだらよろしいのでしょうか? 「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」もインストールしたのですが、 このSaveToFileだけ使えないようです。(様々なサイトで掲載されているサンプルコードでは使えるようですが・・・) よろしければ教えてください。。
補足
ご回答ありがとうございました。やはり添付ファイル型の方がいいのですね。 ご回答にありましたプログラムですが、DAOですよね?VB2010でのDB接続はADO.NETなのでRecordsetを使用することはできません。ADOでは、Datasetでフィールドへのアクセスが可能になります。しかしながら、フィールドの"Value"のようなプロパティがないのです。この添付ファイル型のフィールドに格納された値は、String型で画像のファイル名だけでした。 mitarashiさんのプログラムにある、 >dbRes.Fields("attachedFile").Value のような、フィールドに付随するオブジェクトをADO.NETのDatasetで抽出できればいいのですが。。。