
VisualBasic2010のPictureBoxにAccessの画像データを表示させたい。
MSAccess2007をデータベースとして利用して、VB2010を端末としてプログラミングを行っていますが、行き詰ってしまったのでお聞きします。
DBに記録された画像データ(jpgかBitmap)を抽出してVBの画面に表示させたいのです。
やり方としては、添付ファイル型で記録されたデータをPictureBoxに表示させようと考えています。
このとき、OleDbのDatasetからPictureBoxか、あるいは構造体に格納したいのですが、やり方がわかりません・・・。文字列や数値データは普通に検索・更新・削除ができるのですが、画像データの操作がわからないのです。
そもそも添付ファイル型を使用せず、OLEオブジェクト型を使用したらよいのでしょうか??
ご教授願います。
No.1ベストアンサー
- 回答日時:
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
参考URL:http://www.microsoft.com/downloads/details.aspx? …
この回答への補足
ご回答ありがとうございました。やはり添付ファイル型の方がいいのですね。
ご回答にありましたプログラムですが、DAOですよね?VB2010でのDB接続はADO.NETなのでRecordsetを使用することはできません。ADOでは、Datasetでフィールドへのアクセスが可能になります。しかしながら、フィールドの"Value"のようなプロパティがないのです。この添付ファイル型のフィールドに格納された値は、String型で画像のファイル名だけでした。
mitarashiさんのプログラムにある、
>dbRes.Fields("attachedFile").Value
のような、フィールドに付随するオブジェクトをADO.NETのDatasetで抽出できればいいのですが。。。
No.3
- 回答日時:
#1です。
VBAでもインテリセンスで、SaveToFileはメンバとして表示されませんでしたが、WEBからみつけてきた通りに打ち込んでみると動作いたしました。
もし、そういう意味で無く、実際に動作しなかったという場合は、当方では検証できません(環境も、それ以上に知恵もないので)あしからず。
No.2
- 回答日時:
#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だけ使えないようです。(様々なサイトで掲載されているサンプルコードでは使えるようですが・・・)
よろしければ教えてください。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
C言語で地図を描きたい
-
Mysqlで2つのtable間のデータ移...
-
PHPでの画像の形式の変換
-
VBScriptでのWEBページのソース...
-
VB.NETでボリュームを取得・設...
-
Dosブロンプトでtabを出力したい
-
PHP 指定した期間だけ表示した...
-
PHP4からPHP5へ移行した際、セ...
-
昨日の日付を取得するVBscript
-
VBブラウザに表示されているテ...
-
ミュージックのアートワークを...
-
文字列から期間算出 09-12 12-12
-
4桁の乱数の発生
-
ログイン画面をはさんだ後、自...
-
こんなことはPHPで可能なのでし...
-
evalの中でNULLを使用して比較...
-
checkboxでの複数選択削除がわ...
-
ちょっと複雑なURL分解について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの差し込み印刷で文字...
-
excel access連携 このテーブル...
-
【C#】DataGridViewの最大列数...
-
WordでExcelデータを差込...
-
DTOとEntityの差は何ですか。
-
MSFlexGridのデータを初期化し...
-
Strutsで画面に表示した値の再...
-
長い1枚ページを無限スクロール...
-
「外部データの取り込み」とい...
-
表を表示するコントロールについて
-
INIファイルに一括書き込みを行...
-
C言語で地図を描きたい
-
OleDbDataReaderで単精度浮動小...
-
GridViewからチェックボックス...
-
ASP.NET GridView の検索画面で...
-
VB webbrowserを使ってサイトの...
-
Excelデータの表示方法について
-
VBA内でのGetPixelを使用した時...
-
ActiveReportのサブレポート機...
-
アクセス+VBA 最適化
おすすめ情報