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

解决方案 »

  1.   

    我不知道你是想把WORD文档的内容存入数据库还是把WORD文档的名称存入数据库。
    (1)如果是把word文档内容存入数据库,比如表格,你可以使用自己定义的特殊字符,就直接用sql语句insert进去。读出来的时候,根据特殊字符来生成WORD文档的内容。
    (2)如果是把文档的名称(包括路径存入),就在生成WORD文档的时候,直接在程序中把此文档保存(在程序里写代码),把路径写入数据库。打开此文档的方法如下:读出文档的路径,使用API,就可以把此文档打开
    (3)代码部分,可以直接在VB里面写程序把文档存入数据库。也可以在VB里面写代码,把代码传到WORD文档的close事件中,当文档关闭的时候,执行程序代码