问题描述
|
为什么没有插入我的图像?这是我的代码。
Sub SaveToDBs(strImagePath As String,fname As String)
rs.Close
rs.Open \"Sheet1\",conn,adOpenDynamic,adLockBatchOptimistic,adCmdTable
Dim bytBLOB() As Byte
MsgBox strImagePath
Dim intNum As Integer
With rs
intNum = FreeFile
Open strImagePath For Binary As #intNum
ReDim bytBLOB(FileLen(strImagePath))
\'Read data and close file
Get #intNum,bytBLOB
Close #1
.Fields(fname).AppendChunk bytBLOB
.Update
End With
MsgBox \"done\"
End Sub
我有“完成”的msgbox,但未插入图片!
解决方法
我通常将ADODB.Stream用于此类事情-我发现比分块方法更容易理解。
Sub SaveToDBs(strImagePath As String,fname As String)
rs.Close
rs.Open \"Sheet1\",conn,adOpenDynamic,adLockBatchOptimistic,adCmdTable
MsgBox strImagePath
Dim intNum As Integer
Dim myStream as ADODB.Stream
With rs
.AddNew
Set myStream = new ADODB.Stream
myStream.Type = adTypeBinary
myStream.LoadFromFile(strImagePath)
.Fields(fname) = myStream.Read
.Update
Set myStream = Nothing
End With
MsgBox \"done\"
End Sub
ADODB.Stream是从ADO版本2.5添加的:
ADO版本历史
ADO Stream文档
,您必须将位图保留在结构化存储中,才能使MS Access绑定按预期工作。
看一下Edanmo的“加载”并将图片保存到字节数组。示例以一种兼容的方式进行序列化的方法。然后,如果它是客户端,则可以使用简单分配来更新记录集字段。