は私がBlobToFile呼ば正常に使用している機能であるように見えます。そして私はそれをテストするために使用するコードも投稿しました。ピクチャは、一時ディレクトリにはないので、いわゆる一時ファイルにダンプされますが、実際には一時的ではありません。手動でイメージファイルを削除することもできます。それ以外の場合は、代わりに一時フォルダに書き込む必要があります。それから私は画像を表示する画像コントロールを持っています。
Private Sub Command1_Click()
Dim r As DAO.Recordset, sSQL As String, sTempPicture As String
sSQL = "SELECT ID, PictureBlobField FROM MyTable"
Set r = CurrentDb.OpenRecordset(sSQL, dbSeeChanges)
If Not (r.EOF And r.BOF) Then
sTempPicture = "C:\MyTempPicture.jpg"
Call BlobToFile(sTempPicture, r("PictureBlobField"))
If Dir(sTempPicture) <> "" Then
Me.imagecontrol1.Picture = sTempPicture
End If
End If
r.Close
Set r = Nothing
End Sub
'Function: BlobToFile - Extracts the data in a binary field to a disk file.
'Parameter: strFile - Full path and filename of the destination file.
'Parameter: Field - The field containing the blob.
'Return: The length of the data extracted.
Public Function BlobToFile(strFile As String, ByRef Field As Object) As Long
On Error GoTo BlobToFileError
Dim nFileNum As Integer
Dim abytData() As Byte
BlobToFile = 0
nFileNum = FreeFile
Open strFile For Binary Access Write As nFileNum
abytData = Field
Put #nFileNum, , abytData
BlobToFile = LOF(nFileNum)
BlobToFileExit:
If nFileNum > 0 Then Close nFileNum
Exit Function
BlobToFileError:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, _
"Error writing file in BlobToFile"
BlobToFile = 0
Resume BlobToFileExit
End Function
出典
2011-10-14 21:14:12
HK1
'image'が推奨されていないので、' varbinary(max) 'を使うべきです:http://stackoverflow.com/questions/444072/varbinary-vs-image-sql-server-data-type-to-store-binary -data –
これはアクセスが私に与えたものです。 – johnny
明確にするために、OLEフィールドがフォームの 'Bound OLE Control'にバインドされ、ファイルがコントロールに貼り付けられると、ファイルはバイナリのアクセス固有のOLEラッパーに格納されます。コントロールはファイル/イメージを表示するときにもラッパーが必要ですが、貼り付けるのではなくコードでテーブルにファイルを保存すると、ラッパーはそこには存在しません。以下の回答のようにバインドされていないコントロールを使用すると、OLEラッパーを必要としないため、問題を回避できます。 –