
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で質問しましょう!
似たような質問が見つかりました
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) エクセルで対象日に該当するデータがある場合に別表へ全対象者を表示させたい。 3 2023/07/12 09:48
- Excel(エクセル) エクセルで重複データを行ごとに抽出したい 4 2022/12/05 08:18
- Excel(エクセル) エクセルでフィルタ後、考えている場所に値コピーができない。 1 2022/05/02 21:01
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBAで「クエリと接続」の画面を出せますか? 2 2022/10/24 13:35
- その他(Microsoft Office) エクセルでの作成データをモニター画面内に収めたい。 1 2022/04/23 11:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
VB.NET 2017の勉強中です。 今...
-
CSVのインポート【ASP.NET】
-
★お手上げ状態です。助けてくだ...
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
shシェルスクリプト 空白行の...
-
PHPで画像を取得、保存する方法
-
日付データを比較して出力したい!
-
VB2005でXMLデータから複数ある...
-
バッチファイルでpingの結果を...
-
IPなどを表示するタグ
-
Excel VBA:特定の文字列以降(...
-
ローカルのコンピュータ名を取...
-
printの出力結果を変数に代入す...
-
ファイル名に日付の挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
VBA内でのGetPixelを使用した時...
-
CSVのインポート【ASP.NET】
-
ActiveReportのサブレポート機...
-
JavaからPHPへの値の受け渡し
-
VB.NET 2017の勉強中です。 今...
-
GridViewからチェックボックス...
-
Access2000 CopyFromRecordset...
-
「外部データの取り込み」とい...
-
JSP&Servletについて
-
Windowsのマクロプログラムで、...
-
EXCEL VBAでのCSV出力について
-
CGIでリンクのような…。
-
MSFlexGridのデータを初期化し...
-
C#でのForm間のデータ受け渡し...
-
TCPでデータを受け取ってそれを...
おすすめ情報