不行, 非得放 WORD 文档, 谁知道请告知

解决方案 »

  1.   

    参考了版主playyuer的一篇文章,略做修改。代码的内容是将c盘下的abc.doc文件存入表hycao中,注意相应字段的数据类型应为OLE 对象;最后再从数据库中将该文件读出,保存为c:\TempFile.doc:Dim adoConnection As New ADODB.Connection
    Dim adoRecordset As New ADODB.Recordset
    adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=C:\abc.mdb"
    adoRecordset.Open "SELECT * FROM hycao", adoConnection, adOpenKeyset, adLockOptimistic
    adoRecordset.AddNew
    Dim adoStream As New ADODB.Stream
    adoStream.Type = adTypeBinary
    adoStream.Open
    adoStream.LoadFromFile "c:\abc.doc"
    '将二进制文件写入大字段:
    adoRecordset.Fields.Item(5).AppendChunk adoStream.Read
    adoRecordset.Update
    '================================
    '从大字段读取二进制数据:
    Dim TempFileName As String
    TempFileName = "c:\TempFile.doc"
    adoStream.Write adoRecordset.Fields.Item(5).GetChunk(adoRecordset.Fields.Item(5).ActualSize)
    adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
      

  2.   

    首先使用ACCESS数据库中的OLE类型字段
    调用控件OLE用于添加文件,DATA1用于定位数据库记录
    使用OLE1.InsertObjDlg进入插入对象。
    这种方法可以插入系统支持的全部文件对象    cSqlStr = "SELECT * FROM ProItemDoc Where ID=" & Trim(ItemID) & "'"
        If rst.State = 1 Then
            Set rst = Nothing
        End If
        rst.Open cSqlStr, MyConnection, adOpenKeyset, adLockOptimistic
        If rst.EOF Then
            With rst
                .AddNew
                .Fields("ID") = Trim(ItemID)
                .Fields("DocClass") = "NewDoc"
                .Update
                .Close
            End With
        End If
        cSqlStr = "SELECT * FROM ProItemDoc Where Trim(DocClass)='NewDoc';"
        Data1.RecordsetType = 1
        Data1.RecordSource = cSqlStr
        Data1.Refresh
        
        DoEvents
        OLE1.Refresh
        OLE1.InsertObjDlg
        
        AddFile = OLE1.SourceDoc
        If Len(AddFile) = 0 Then
            Exit Function
        End If并且通过一个事件很容易调用系统内程序如WORD进行内容显示
                    Dim sSql As String
                    sSql = "SELECT * FROM ProItemDoc Where ID=" & Trim(ItemID) & " And DocFile='" & Trim(PrevData) & "'"
                    Data1.RecordSource = sSql
                    Data1.Refresh
                    
                    On Error Resume Next
                        OLE1.AutoActivate = 2
                        OLE1.Verb = -2
                        OLE1.Action = 7
                    On Error GoTo 0我化了很长时间,用这个方法解决了部门内部的文档管理
      

  3.   

    谢谢 zhouln2002(怡峰) , 你的方法也很好. 开眼界矣!