使用dao存储:
dim appendok as boolean
rs.edit VB.SavePicture Picture1.Picture("c:\me.jpg") appendok=DAOAppendBlobFromFile(rs!blobfield,"c:\me.jpg")
if appendok then
rs.update
else
rs.cancelupdate
end if
:读取:
dim readok as boolean
readok=DAOGetBlobToFile(rs!blobfield,"c:\me.jpg") picture1.Picture=vb.LoadPicture("c:\me.jpg") '读取放到PICTUREBOx
Public Function DAOAppendBlobFromFile(blobColumn As Field, ByVal FileName) As Boolean
Dim FileNumber As Integer, DataLen As Long
Dim Chunks As Long, ChunkAry() As Byte
Dim ChunkSize As Long, Fragment As Long, i As Long
Dim str5 As String
On Error GoTo errh:
AppendBlobFromFile = False
ChunkSize = 2048 FileNumber = FreeFile
Open FileName For Binary Access Read As FileNumber
DataLen = LOF(FileNumber) '文件中数据的长度
If DataLen = 0 Then
Close FileNumber
DAOAppendBolbFromFile = True
Exit Function
End If
Chunks = DataLen \ ChunkSize
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then
ReDim ChunkAry(Fragment - 1)
Get FileNumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
End If
ReDim ChunkAry(ChunkSize - 1)
For i = 1 To Chunks
Get FileNumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
Next i
Close FileNumber
DAOAppendBlobFromFile = True
Exit Function
errh:
DAOAppendBlobFromFile = False
MsgBox Err.Description, vbCritical, "AppendBlobFromFile错误!!"
End Function'以下
'把Blob的栏位内的数据读出来,放到某个File之内
Public Function DAOGetBlobToFile(blobColumn As Field, ByVal FileName As String) As Boolean
Dim FileNumber As Integer, DataLen As Long
Dim Chunks As Long, ChunkAry() As Byte
Dim ChunkSize As Long, Fragment As Long, i As Long
On Error GoTo errh:
ADOGetBlobToFile = False
If IsNull(blobColumn) Then Exit Function DataLen = blobColumn.FieldSize ' 文件中数据的长度
If DataLen = 0 Then
DAOGetBlobToFile = False
'里面没有数据,而不是Null
Exit Function
End If
ChunkSize = 2048 FileNumber = FreeFile
Open FileName For Binary Access Write As FileNumber Chunks = DataLen \ ChunkSize
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then
ReDim ChunkAry(Fragment - 1)
ChunkAry = blobColumn.GetChunk(0, Fragment)
Put FileNumber, , ChunkAry
End If
ReDim ChunkAry(ChunkSize - 1)
For i = 1 To Chunks
ChunkAry = blobColumn.GetChunk(Fragment + (i - 1) * ChunkSize, ChunkSize)
Put FileNumber, , ChunkAry
Next
Close FileNumber
DAOGetBlobToFile = True
Exit Function
errh:
DAOGetBlobToFile = False
MsgBox Err.Description, vbCritical, "ADOGetBlobToFile错误!!"
End Function
dim appendok as boolean
rs.edit VB.SavePicture Picture1.Picture("c:\me.jpg") appendok=DAOAppendBlobFromFile(rs!blobfield,"c:\me.jpg")
if appendok then
rs.update
else
rs.cancelupdate
end if
:读取:
dim readok as boolean
readok=DAOGetBlobToFile(rs!blobfield,"c:\me.jpg") picture1.Picture=vb.LoadPicture("c:\me.jpg") '读取放到PICTUREBOx
Public Function DAOAppendBlobFromFile(blobColumn As Field, ByVal FileName) As Boolean
Dim FileNumber As Integer, DataLen As Long
Dim Chunks As Long, ChunkAry() As Byte
Dim ChunkSize As Long, Fragment As Long, i As Long
Dim str5 As String
On Error GoTo errh:
AppendBlobFromFile = False
ChunkSize = 2048 FileNumber = FreeFile
Open FileName For Binary Access Read As FileNumber
DataLen = LOF(FileNumber) '文件中数据的长度
If DataLen = 0 Then
Close FileNumber
DAOAppendBolbFromFile = True
Exit Function
End If
Chunks = DataLen \ ChunkSize
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then
ReDim ChunkAry(Fragment - 1)
Get FileNumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
End If
ReDim ChunkAry(ChunkSize - 1)
For i = 1 To Chunks
Get FileNumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
Next i
Close FileNumber
DAOAppendBlobFromFile = True
Exit Function
errh:
DAOAppendBlobFromFile = False
MsgBox Err.Description, vbCritical, "AppendBlobFromFile错误!!"
End Function'以下
'把Blob的栏位内的数据读出来,放到某个File之内
Public Function DAOGetBlobToFile(blobColumn As Field, ByVal FileName As String) As Boolean
Dim FileNumber As Integer, DataLen As Long
Dim Chunks As Long, ChunkAry() As Byte
Dim ChunkSize As Long, Fragment As Long, i As Long
On Error GoTo errh:
ADOGetBlobToFile = False
If IsNull(blobColumn) Then Exit Function DataLen = blobColumn.FieldSize ' 文件中数据的长度
If DataLen = 0 Then
DAOGetBlobToFile = False
'里面没有数据,而不是Null
Exit Function
End If
ChunkSize = 2048 FileNumber = FreeFile
Open FileName For Binary Access Write As FileNumber Chunks = DataLen \ ChunkSize
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then
ReDim ChunkAry(Fragment - 1)
ChunkAry = blobColumn.GetChunk(0, Fragment)
Put FileNumber, , ChunkAry
End If
ReDim ChunkAry(ChunkSize - 1)
For i = 1 To Chunks
ChunkAry = blobColumn.GetChunk(Fragment + (i - 1) * ChunkSize, ChunkSize)
Put FileNumber, , ChunkAry
Next
Close FileNumber
DAOGetBlobToFile = True
Exit Function
errh:
DAOGetBlobToFile = False
MsgBox Err.Description, vbCritical, "ADOGetBlobToFile错误!!"
End Function
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货