如何把word或excel文档以二进制的格式存入数据库。

解决方案 »

  1.   

    '假设字段名叫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
      

  2.   

    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
      

  3.   

    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
      

  4.   

    yefm(百聊) 这SB四五个星.TMD写的什么东西.
    CN是什么鸟玩意