大概的意思,写的可能不全 dim filename as string private sub command_click() ... rec.Open "tblmailfujian", Dbconn, adOpenDynamic, adLockOptimistic Dim i As Integer rec.AddNew SaveToDB rec!Data, filename rec.Update rec.Close ... end subprivate sub command2_click() ReadFromDB nrc Me.Image2.Picture = LoadPicture(FileName) end sub Private Sub SaveToDB(ByRef fld As ADODB.Field, DiskFile As String) Dim ByteData() As Byte '定义数据块数组 Dim NumBlocks As Long '定义数据块个数 Dim FLength As Long '标识文件长度 Dim LeftOver As Long '定义剩余字节长度 Dim SourceFile As Long '定义自由文件号 Dim i As Long '定义循环变量
SourceFile = FreeFile '提供一个尚未使用的文件号 Open DiskFile For Binary Access Read As SourceFile '打开文件 FLength = LOF(SourceFile) '得到文件长度
If FLength = 0 Then '判断文件是否存在 Close SourceFile MsgBox DiskFile & "无 内 容 或 不 存 在 !" Else NumBlocks = FLength / BLOCKSIZE '得到数据块的个数 LeftOver = FLength Mod BLOCKSIZE '得到剩余字节数 fld.Value = Null ReDim ByteData(BLOCKSIZE) '重新定义数据块的大小
For i = 1 To NumBlocks Get SourceFile, , ByteData() ' 读到内存块中 fld.AppendChunk ByteData() '写入FLD Next i
ReDim ByteData(LeftOver) '重新定义数据块的大小 Get SourceFile, , ByteData() '读到内存块中 fld.AppendChunk ByteData() '写入FLD Close SourceFile '关闭源文件 End IfPrivate Sub ReadFromDB(ByRef fld As ADODB.Field, ii As String) Dim Chunk() As Byte Dim DataFile As Integer, Fl As Long Dim NumBlocks As Long Dim LeftOver As Long Dim i As Integer Const ChunkSize = 16384 '每次读写块的大小
DataFile = 1 Open ii For Binary Access Write As DataFile Fl = fld.ActualSize If Fl = 0 Then Close DataFile Else NumBlocks = Fl / ChunkSize
For i = 1 To NumBlocks - 1 ReDim Chunk(ChunkSize) Chunk() = fld.GetChunk(ChunkSize) Put DataFile, , Chunk() Next i
LeftOver = Fl Mod ChunkSize ReDim Chunk(LeftOver) Chunk() = fld.GetChunk(LeftOver) Put DataFile, , Chunk() Close DataFile End If End Sub
http://www.csdn.net/expert/topic/112/112568.shtm
dim filename as string private sub command_click()
...
rec.Open "tblmailfujian", Dbconn, adOpenDynamic, adLockOptimistic
Dim i As Integer
rec.AddNew
SaveToDB rec!Data, filename
rec.Update
rec.Close
...
end subprivate sub command2_click()
ReadFromDB nrc
Me.Image2.Picture = LoadPicture(FileName)
end sub
Private Sub SaveToDB(ByRef fld As ADODB.Field, DiskFile As String)
Dim ByteData() As Byte '定义数据块数组
Dim NumBlocks As Long '定义数据块个数
Dim FLength As Long '标识文件长度
Dim LeftOver As Long '定义剩余字节长度
Dim SourceFile As Long '定义自由文件号
Dim i As Long '定义循环变量
SourceFile = FreeFile '提供一个尚未使用的文件号
Open DiskFile For Binary Access Read As SourceFile '打开文件
FLength = LOF(SourceFile) '得到文件长度
If FLength = 0 Then '判断文件是否存在
Close SourceFile
MsgBox DiskFile & "无 内 容 或 不 存 在 !"
Else
NumBlocks = FLength / BLOCKSIZE '得到数据块的个数
LeftOver = FLength Mod BLOCKSIZE '得到剩余字节数
fld.Value = Null
ReDim ByteData(BLOCKSIZE) '重新定义数据块的大小
For i = 1 To NumBlocks
Get SourceFile, , ByteData() ' 读到内存块中
fld.AppendChunk ByteData() '写入FLD
Next i
ReDim ByteData(LeftOver) '重新定义数据块的大小
Get SourceFile, , ByteData() '读到内存块中
fld.AppendChunk ByteData() '写入FLD
Close SourceFile '关闭源文件
End IfPrivate Sub ReadFromDB(ByRef fld As ADODB.Field, ii As String)
Dim Chunk() As Byte
Dim DataFile As Integer, Fl As Long
Dim NumBlocks As Long
Dim LeftOver As Long
Dim i As Integer
Const ChunkSize = 16384 '每次读写块的大小
DataFile = 1
Open ii For Binary Access Write As DataFile
Fl = fld.ActualSize
If Fl = 0 Then
Close DataFile
Else
NumBlocks = Fl / ChunkSize
For i = 1 To NumBlocks - 1
ReDim Chunk(ChunkSize)
Chunk() = fld.GetChunk(ChunkSize)
Put DataFile, , Chunk()
Next i
LeftOver = Fl Mod ChunkSize
ReDim Chunk(LeftOver)
Chunk() = fld.GetChunk(LeftOver)
Put DataFile, , Chunk()
Close DataFile
End If
End Sub