'假设字段名叫WJ,且是image类型 Dim bit() As Byte Dim Rs As New ADODB.RecordsetRs.open "SELECT * FROM 表", adOpenStatic, adLockOptimistic Open 代路径的文件名 For Binary As #1 ReDim bit(LOF(1)) As Byte Get 1, 1, bit Close 1 Rs("WJ") = Null '这条语句一定要加,否则无法存储 Rs("WJ").AppendChunk bit Rs.update
Private Function DatabaseToFile(ByVal DataField As ADODB.Field, ByVal vSaveAs As String, ByVal vFileExpendName As String) As String Dim fnum As Long, bytesleft As Long, bytes As Long Dim lSumSize As Long, lNowSize As Long Dim tmp() As Byte On Error GoTo ErrHandleDatabaseToFile If Trim(vSaveAs) = "" Then DatabaseToFile = GetTempFileName(vFileExpendName) Else DatabaseToFile = Trim(vSaveAs) End If
fnum = FreeFile Open (DatabaseToFile) For Binary As fnum bytesleft = DataField.ActualSize
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft bytes = bytesleft If bytes > 8192 Then bytes = 8192 tmp = DataField.GetChunk(bytes) Put #fnum, , tmp bytesleft = bytesleft - bytes lNowSize = lNowSize + 1 RaiseEvent TransmitData(lNowSize, lSumSize, False) Loop Close #fnum Exit Function ErrHandleDatabaseToFile: DatabaseToFile = "" Err.Clear End FunctionPrivate Function FileToDatabase(ByVal vDataField As ADODB.Field, ByVal vFileName As String) Dim fnum As Long, bytesleft As Long, bytes As Long Dim lSumSize As Long, lNowSize As Long Dim tmp() As Byte On Error GoTo ErrHandleFileToDatabase
fnum = FreeFile Open vFileName For Binary As fnum bytesleft = LOF(fnum) lSumSize = CLng(bytesleft / 8192) Do While bytesleft bytes = bytesleft If bytes > 8192 Then bytes = 8192 ReDim tmp(1 To bytes) As Byte Get #fnum, , tmp vDataField.AppendChunk tmp bytesleft = bytesleft - bytes lNowSize = lNowSize + 1 DoEvents RaiseEvent TransmitData(lNowSize, lSumSize, True) Loop
Close #fnum
Exit Function ErrHandleFileToDatabase: Err.Clear End Function
Rs.open "SELECT * FROM 表", adOpenStatic, adLockOptimistic 写错了,应 Rs.open "SELECT * FROM 表", Cn,adOpenStatic, adLockOptimistic取 的写法:Dim Rs As New ADODB.Recordset Dim bit() As ByteRs.open "SELECT * FROM 表", Cn If VarType(Rs("WJ")) <> vbNull Then bit = Rs("WJ").GetChunk(Rs("WJ").ActualSize) Open 要保存的文件名 For Binary As #1 Put 1, 1, bit Close 1End If
Dim bit() As Byte
Dim Rs As New ADODB.RecordsetRs.open "SELECT * FROM 表", adOpenStatic, adLockOptimistic
Open 代路径的文件名 For Binary As #1
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
Rs("WJ") = Null '这条语句一定要加,否则无法存储
Rs("WJ").AppendChunk bit
Rs.update
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleDatabaseToFile
If Trim(vSaveAs) = "" Then
DatabaseToFile = GetTempFileName(vFileExpendName)
Else
DatabaseToFile = Trim(vSaveAs)
End If
fnum = FreeFile
Open (DatabaseToFile) For Binary As fnum
bytesleft = DataField.ActualSize
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
tmp = DataField.GetChunk(bytes)
Put #fnum, , tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
RaiseEvent TransmitData(lNowSize, lSumSize, False)
Loop
Close #fnum
Exit Function
ErrHandleDatabaseToFile:
DatabaseToFile = ""
Err.Clear
End FunctionPrivate Function FileToDatabase(ByVal vDataField As ADODB.Field, ByVal vFileName As String)
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleFileToDatabase
fnum = FreeFile
Open vFileName For Binary As fnum
bytesleft = LOF(fnum)
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
ReDim tmp(1 To bytes) As Byte
Get #fnum, , tmp
vDataField.AppendChunk tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
DoEvents
RaiseEvent TransmitData(lNowSize, lSumSize, True)
Loop
Close #fnum
Exit Function
ErrHandleFileToDatabase:
Err.Clear
End Function
写错了,应
Rs.open "SELECT * FROM 表", Cn,adOpenStatic, adLockOptimistic取 的写法:Dim Rs As New ADODB.Recordset
Dim bit() As ByteRs.open "SELECT * FROM 表", Cn
If VarType(Rs("WJ")) <> vbNull Then
bit = Rs("WJ").GetChunk(Rs("WJ").ActualSize)
Open 要保存的文件名 For Binary As #1
Put 1, 1, bit
Close 1End If
CN是什么鸟玩意