投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/7/19 13:14:02
> 恥ずかしながら処理イメージが思いつきません。
データベースの読み書きは、以前実施しているので大丈夫ですよね。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=27032

DataAdapter や TableAdapter を用いているのなら、
Byte 配列な列を持つ DataTable を通じて読み書きできます。

'画像ファイルを Byte 配列にする方法 
Dim bin As Byte() = System.IO.File.ReadAllBytes("C:\temp\test.bmp")

'Byte 配列な画像を PictureBox に表示する方法 
Dim img As Image = Image.FromStream(New System.IO.MemoryStream(bin))
PictureBox1.Image = img




> ※Access2013 でのデザイン
Access 2007-2013 の .accdb なら「添付ファイル型」というものもあるのですけれどね。
https://dekiru.net/article/14897/


今回は 2000 形式(Jet 4.0 世代)なので、画像保持に使える型としては
 ① バイナリ型
 ② OLEオブジェクト型
の 2 種類が存在します。


そして下記のテーブルで言うと、
X1~X2 が ① のバイナリ型を表しており、
Y1~Y4 が ② の OLE オブジェクト型です。

CREATE TABLE SampleTable
( Id INT
, X1 BINARY
, X2 VARBINARY
, Y1 IMAGE
, Y2 LONGBINARY
, Y3 GENERAL
, Y4 OLEOBJECT
)


上記 Y1 列の型定義を見ると分かるように、Jet にとって IMAGE は予約語ですので、
> ID     10                (キーボードで入力)
> image  BitmapImage (Access で オブジェクトの挿入-> Bitmapを選択 -> 起動したペイントで入力
のように列名に [image] という名を付けることは避けましょう。



> PictureBox 上に表示するのと
Access の 「連結オブジェクトフレーム」に表示させるなら ② で良いのですが、
VB の「PictureBox」に表示させるなら ① を使います。


① の バイナリ型は、バイナリデータそのものを管理するものですが、
② の OLEオブジェクト型は、OLE ドキュメントの保持を目的としています。
http://atata.sakura.ne.jp/net/


② は画像形式で保存するわけではないので、二次利用には向きません。
使うとすれば、生のバイナリを無加工で格納可能な ① の「バイナリ型」です。

ただし Access は、① に対してファイルを添付したり、内容をファイルに
保存したりする機能を有していないのでご注意ください。
(VB から読み書きする分には問題ありません)