access にBMPファイルを入れたい。

解決


こあ  2009-03-01 01:28:45  No: 141584

すみません現在、100*100ピクセルのBMPファイルを
VS2005からaccess2000に直に収納したいのですが、
パラメータの指定方法がわかりません。
(ファイルサイズが小さいし、サムネイルが多いので直に収納します。)

 Dim thumbnail As Bitmap = New Bitmap("c:\BMP1.bmp")
         'データを追加する
            Dim oConn As OleDbConnection
            Dim oda As OleDbDataAdapter
            Dim ds As New DataSet

            '接続文字列
            oConn = New OleDbConnection          ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\PIC.mdb")

            'データー追加コマンド
            oda = New OleDbDataAdapter("INSERT INTO PICDB " _
            & "(サムネイル, タイトル)" _
            & " VALUES (?,?);", oConn)

      oda.SelectCommand.Parameters.AddWithValue("サムネイル", thumbnail)
            oda.SelectCommand.Parameters.AddWithValue("タイトル", Title)

            oConn.Open()
            oda.Fill(ds, "PICDB")  <-ここでエラー
            DataGridView.DataSource = ds.Tables("PICDB")
            oConn.Close()

エラーの内容は(指定されたデーター量がフィールドサイズを超えています)です。
初歩的なことで、パラメータの指示の仕方が悪いのだと思いますが、
どなたか教えてください。


オショウ  2009-03-01 06:32:58  No: 141585

ACCESS000の画像を保存するフィールド属性は何に指定されて
いるのでしょうか?

VARBINARY か、BINARY か?

VARBINARY は可変長ですが、BINARYは固定長で最大510バイト
です。
もし、BINARYならば、多分、510バイト以上のサイズの画像を
保存しようとして、エラーになっていると言うことになります。

保存方法(プログラム)については、OleDbではやったことない
ので、未確認です。あしからず・・・

以上。


オショウ  2009-03-01 06:43:49  No: 141586

VB6ですよね?

http://homepage.mac.com/t_fukumori/iblog/C1746881529/E469162127/index.html

こんなサンプル見つけたので、お知らせしておきます。

以上。


こあ  2009-03-01 09:09:25  No: 141587

オショウさん回答ありがとうございます。

フィールド属性とゆうかデータ型はOLE オブジェクト型です。
http://homepage.mac.com/t_fukumori/iblog/C1746881529/E469162127/index.html
も見たのですが、ますますわからなくなってしまいました。
OleDbでなくてもよいので、保存方法を差支えなければ教えてください。

こんなのを発見しました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1213542192?fr=rcmd_chie_detail
↑ちなみに僕ではありませんし、すみませんが、これでもまだわかりません。


オショウ  2009-03-01 11:23:57  No: 141588

こんがらがってすいません・・・
VB全般掲示板側なので、VB6と思いこんでました。

.NETならVB.NET開示版の方がよいようにも思いますが。

で・・・

バイナリ型のフィールド作成は・・・
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsBinaryField.html

とありますが・・・
http://mnow.wankuma.com/cs_dataset2.html

これを見ると、OLEオブジェクト型は、VarBinaryなので、OKかと。
要はアクセス側のテーブルデザインで画像を保存するフィールド設定は
できる。と思います。

読み書きは・・・
http://support.microsoft.com/kb/308042/ja
http://support.microsoft.com/kb/317701/ja

SQL Serverですが、OleDbに置き換えればできませんか?

http://codezine.jp/article/detail/3026

ここも参考になるかと・・・

以上。


こあ  2009-03-02 08:17:08  No: 141589

オショウさんありがとうございました。
最初のプログラムを何回か実行しているうちに不思議なことに、エラーが
出なくなりました。
フィールドもACCESSで見る限り(ロングバイナリーデータ)と出ているの書き込みもされているみたいです。
で、
でも参照するとOLEサーバーと通信中にエラーが発生したとメッセージが
出ます。
あと、もう少しなので、上記のリンクも参考にしてがんばってみます。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加