0

.jpeg ファイルの入力を求め、そのファイルを Byte 配列に変換し、Append チャンク メソッドを使用して Byte 配列をテーブルに保存する手順のコードを作成しました。別の手順では、GetChunk メソッドを使用してテーブルから画像イメージを取得し、データをファイルに変換して、そのファイルを [画像] ボックスに表示します。

さて、私の質問は、画像ボックスに表示されている画像をデータベースに保存して、追加/更新などの操作を実行できるようにする方法です。次のようにしました。

Private Sub CmdSave_Click()
  if(cmbRNO=" ") then
    sql = "INSERT INTO STUDENT_RECORD_DATABASE(ROLLNO,PICS)"
    sql = sql + "VALUES(" & RNo & ","& picture1.picture &")"
    Set RES = CON.Execute(sql)
  Else
    sql = "UPDATE STUDENT_RECORD_DATABASE SET "
    sql = sql + "ROLLNO= " & Val(CmbRNO) & ","
    sql = sql + "PICS=" & Picture1.Picture & "  "
    sql = sql + "WHERE ROLLNO= " & Val(CmbRNO) & ""

    Set RES = CON.Execute(sql)
  End If
End Sub
<code for appendchunk method>    
Public Sub Command1_Click()
  Dim PictBmp As String
  Dim ByteData() As Byte   'Byte array for Blob data.
  Dim SourceFile As Integer
  ' Open the BlobTable table.
  strSQL = "Select ID, DOC from LOB_TABLE WHERE ID = 1"
  Set Rs = New ADODB.Recordset
  Rs.CursorType = adOpenKeyset
  Rs.LockType = adLockOptimistic
  Rs.Open strSQL, Cn
  ' Retrieve the picture and update the record.
  CommonDialog1.Filter = "(*.jpeg)|*.jpeg"
  CommonDialog1.ShowOpen
  PictBmp = CommonDialog1.FileName
  ' Save Picture image to the table column.
  SourceFile = FreeFile
  Open PictBmp For Binary Access Read As SourceFile
  FileLength = LOF(SourceFile)  ' Get the length of the file.
  If FileLength = 0 Then
      Close SourceFile
      MsgBox PictBmp & " empty or not found."
      Exit Sub
  Else
      Numblocks = FileLength / BlockSize
     LeftOver = FileLength Mod BlockSize
      ReDim ByteData(LeftOver)
      Get SourceFile, , ByteData()
      Rs(1).AppendChunk ByteData()
      ReDim ByteData(BlockSize)
      For i = 1 To Numblocks
          Get SourceFile, , ByteData()
          Rs(1).AppendChunk ByteData()
      Next i
      Rs.Update   'Commit the new data.
     Close SourceFile
  End If
  End Sub

イメージを特定のレコードに保存しようとすると、実行時エラーが発生します: inconsistent datatype,expected BLOB got number Where as: ?sql UPDATE STUDENT_RECORD_DATABASE SET ROLLNO= 132,PICS=688195876 WHERE ROLLNO= 132

4

0 に答える 0