读出: Dim bit1() As Byte
On Error GoTo Err1:
bit1 = r("zp").GetChunk(r("zp").ActualSize)
'然后将字节数组的内容拼装成文件即可
Open App.Path & "\temp.jpg" For Binary As #1
Put 1, 1, bit1
Close 1
Image1.Stretch = False
Image1 = LoadPicture(App.Path & "\temp.jpg")
写入: Open Image1.Tag For Binary As #1
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
r.Open "select * from byzl where kh='" & Trim(Txtkh) & "'", Cn, adOpenKeyset, adLockOptimistic
r("zp").AppendChunk bit
r.Update
r.Close
On Error GoTo Err1:
bit1 = r("zp").GetChunk(r("zp").ActualSize)
'然后将字节数组的内容拼装成文件即可
Open App.Path & "\temp.jpg" For Binary As #1
Put 1, 1, bit1
Close 1
Image1.Stretch = False
Image1 = LoadPicture(App.Path & "\temp.jpg")
写入: Open Image1.Tag For Binary As #1
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
r.Open "select * from byzl where kh='" & Trim(Txtkh) & "'", Cn, adOpenKeyset, adLockOptimistic
r("zp").AppendChunk bit
r.Update
r.Close
解决方案 »
- vb6 的mshflexgrid控件的单元格能容纳多少个字符呀?
- VB 的MDIForm 可以使用Dll文件中的窗体吗?
- 用DATA控件向COMBO1中添加数据。
- 水晶报表可不可拖动?
- 在线等!!!大家帮忙! 关于bitblt的使用!
- 在线等待 vb属性窗体中“按分类序”下的表格是什么控件
- 我要用VB和Access做个简单的数据库 怎么新建里没有Microsoft Date Link 一项
- 如何得到当前正在运行窗体的进程???万分感激,UP有分。
- 请问如何给VB程序设定图标?
- 怎么让窗体重任务栏返回桌面?
- 高手请进-->请问在VB中怎样实现"Windows外壳扩展编程之添加右键菜单"
- 大家小心啊~~~~~~~~~~~ 小心火烛~~~~~~~~`注意防倒防D防...大家注意坚壁清野
fdObject为数据库表中一Image类型字段.
Public Function FileStreamToField(iFileNumber As Integer, fdObject) As Integer
'将文件写入数据库
Dim sChunkHolder() As Byte
Dim lChunkCount As Long
Dim lChunkRemainder As Long
Dim i As Long ReDim sChunkHolder(CHUNK_SIZE - 1) As Byte
lChunkCount = (LOF(iFileNumber) - Seek(iFileNumber) + 1) \ CHUNK_SIZE ' 取 块 数
lChunkRemainder = (LOF(iFileNumber) - Seek(iFileNumber) + 1) Mod CHUNK_SIZE
For i = 0 To lChunkCount - 1
Get iFileNumber, , sChunkHolder
fdObject.AppendChunk (sChunkHolder)
Next
If lChunkRemainder > 0 Then
ReDim sChunkHolder(lChunkRemainder - 1) As Byte
Get iFileNumber, , sChunkHolder
fdObject.AppendChunk (sChunkHolder)
End If
FileStreamToField = 0
End FunctionPublic Function FieldToFileStream(iFileNumber As Integer, fdObject) As Integer
'从数据库生成文件
Dim sChunkHolder() As Byte
Dim lChunkCount As Long
Dim lChunkRemainder As Long
Dim i As Long ReDim sChunkHolder(CHUNK_SIZE - 1) As Byte
lChunkCount = fdObject.ActualSize \ CHUNK_SIZE
lChunkRemainder = fdObject.ActualSize Mod CHUNK_SIZE
For i = 0 To lChunkCount - 1
sChunkHolder = fdObject.GetChunk(CHUNK_SIZE)
Put iFileNumber, , sChunkHolder
Next
If lChunkRemainder > 0 Then
ReDim sChunkHolder(lChunkRemainder - 1) As Byte
sChunkHolder = fdObject.GetChunk(lChunkRemainder)
Put iFileNumber, , sChunkHolder
End If
FieldToFileStream = 0
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 = 2048FileNumber = 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 FunctionDataLen = blobColumn.FieldSize ' 文件中数据的长度
If DataLen = 0 Then
DAOGetBlobToFile = False
'里面没有数据,而不是Null
Exit Function
End If
ChunkSize = 2048FileNumber = FreeFile
Open FileName For Binary Access Write As FileNumberChunks = 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