すみません現在、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()
エラーの内容は(指定されたデーター量がフィールドサイズを超えています)です。
初歩的なことで、パラメータの指示の仕方が悪いのだと思いますが、
どなたか教えてください。
ACCESS000の画像を保存するフィールド属性は何に指定されて
いるのでしょうか?
VARBINARY か、BINARY か?
VARBINARY は可変長ですが、BINARYは固定長で最大510バイト
です。
もし、BINARYならば、多分、510バイト以上のサイズの画像を
保存しようとして、エラーになっていると言うことになります。
保存方法(プログラム)については、OleDbではやったことない
ので、未確認です。あしからず・・・
以上。
VB6ですよね?
http://homepage.mac.com/t_fukumori/iblog/C1746881529/E469162127/index.html
こんなサンプル見つけたので、お知らせしておきます。
以上。
オショウさん回答ありがとうございます。
フィールド属性とゆうかデータ型は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
↑ちなみに僕ではありませんし、すみませんが、これでもまだわかりません。
こんがらがってすいません・・・
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
ここも参考になるかと・・・
以上。
オショウさんありがとうございました。
最初のプログラムを何回か実行しているうちに不思議なことに、エラーが
出なくなりました。
フィールドもACCESSで見る限り(ロングバイナリーデータ)と出ているの書き込みもされているみたいです。
で、
でも参照するとOLEサーバーと通信中にエラーが発生したとメッセージが
出ます。
あと、もう少しなので、上記のリンクも参考にしてがんばってみます。
ツイート | ![]() |