PictureBoxのデータをMDBに保存するには?


悩める中年プログラマ  2003-11-20 02:16:37  No: 80488

VB6で開発しています。
Excelファイルの一部分をPictureBoxに取り込み。。。
  xlsheet.Range("A1:Z49").CopyPicture _
      Appearance:=xlPrinter, Format:=xlPicture
  If Clipboard.GetFormat(vbCFMetafile) = True Then
    ActiveDoc.picobj1.Picture = Clipboard.GetData()
  End If

その他諸々の情報を入力した後。。。

PictureBox+その他諸々をWordファイルに出力しています。
  Clipboard.SetData ActiveDoc.picobj1.Picture
  If Clipboard.GetFormat(vbCFMetafile) = True Then
    wdApp.Selection.PasteSpecial Link:=False, _
        DataType:=wdPasteMetafilePicture, _
        Placement:=wdFloatOverText, _
        DisplayAsIcon:=False
  End If

その他諸々の情報が多くなってきたので、途中でファイル保存できるようにしようと思い、ADOを使ってPictureBoxの内容をMDBファイル(Access2000)に保存しようとしているのですが、
  Dim cnn As New ADODB.Connection
  cnn.Open Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=" & fname & ";" & _
                 "Jet OLEDB:Engine Type=5;"
  Dim rs As New ADODB.Recordset
  rs.Open "TableOLE", cnn, adOpenKeyset, adLockOptimistic
  rs.AddNew
  ' "Key" は Type = adWChar
  rs.Fields("key").Value = "picobj1"    
  ' "data" は Type = adLongVarWChar(OLEオブジェクト?)
  rs.Fields("data").Value = ActiveDoc.picobj1.Picture
とすると、『種類が一致しません。』

  rs.Fields("data").AppendChunk ActiveDoc.picobj1.Picture
とすると、『引数が間違った型、または許容範囲外であるか、競合しています。』

このような場合、どのようにコーディングすれば宜しいのでしょうか?
よろしくお願いします。


ishi  2003-11-22 20:01:36  No: 80489

直接的な解決にはならないかも知れませんが、参考程度に読んでください。
私はJPEGの画像ファイルを読み込んでMDBファイルに保存しています。

1:  MDBファイルのDATAタイプは、dbLongBinaryです。

2:  変数を定義して画像ファイルを読み込みます。
    Dim picData() As Byte
    ReDim picData(画像ファイルサイズ)
    Get #Open番号, , picData()
 
3:  MDBファイルに保存します。
    レコードセット.AddNew
    レコードセット.Fields(フイールド名).AppendChunk picData()
    レコードセット.Update

以上、概略だけですがMDBへの画像ファイルの保存、読み出しが出来ています。


悩める中年プログラマ  2003-11-26 20:48:42  No: 80490

ishiさん、レスありがとうございます。

まずは、ishiさんを始め一緒に悩んでいただいた方々へのお詫びから。。。
' "data" は Type = adLongVarWChar(OLEオブジェクト?)
        ↓
' "data" は Type = adLongVarBinary

質問をUPする際に転記ミスしてました。
すみませんでしたm(__)m

質問UP後は、気分転換に他の部分を開発したり、風邪でDOWNしたり・・・
まだ解決していませんので、ishiさんの書き込みを参考に再度試行錯誤してみます。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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