1.如何用VB将word文档已二进制的形式存Access数据库里
2.如何读出来并帖回word

解决方案 »

  1.   

    '一段精简的读写"大字段"的代码,使用 ADODB.Stream
    'Objects: Form1
    '引用 Microsoft ActiveX Data Objects 2.5 Libary
    '或 Microsoft ActiveX Data Objects 2.6 Libary
    Dim TempFileName As String
    TempFileName = App.Path & "\TempFile.doc"
    Dim adoConnection As New ADODB.Connection
    Dim adoRecordset As New ADODB.Recordset
    adoConnection.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\mmxdb97.mdb"
    adoRecordset.Open "SELECT * FROM bmp", adoConnection, adOpenKeyset, adLockOptimistic ', adCmdTable
    Debug.Print adoRecordset.Fields(1).Type '大字段
    adoRecordset.AddNew
    Dim adoStream As New ADODB.Stream
    adoStream.Type = adTypeBinary
    adoStream.Open
    adoStream.LoadFromFile CommonDialog1.FileName
    '将二进制文件写入大字段:
    adoRecordset.Fields.Item(1).AppendChunk adoStream.Read'================================
    '从大字段读取二进制数据:
    adoStream.Write adoRecordset.Fields.Item(1).GetChunk(adoRecordset.Fields.Item(1).ActualSize)
    adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)ShellExcute(...TempFileName...)
      

  2.   

    *************************************************************************
    '**
    '** 使用 ADODB.Stream 保存/读取文件到数据库
    '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    '**
    '** ----- 数据库连接字符串模板 ---------------------------------------
    '** ACCESS数据库
    '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
    '**     ";Data Source=数据库名"
    '**
    '** SQL数据库
    '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
    '**     "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
    '**
    '*************************************************************************
    '
    '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcStr As String
        
        '数据库连接字符串
        iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=F:\My Documents\客户资料1.mdb"
        
        '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary    '二进制模式
            .Open
            .LoadFromFile "c:\test.doc"
        End With
        
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "表", iConc, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("保存文件内容的字段") = iStm.Read
            .Update
        End With
        
        '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub'从数据库中读取数据,保存成文件
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConc As String
        
        '数据库连接字符串
        iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
        
        '打开表
        Set iRe = New ADODB.Recordset
        iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
        iRe.Filter = "id=64"
        
        '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write iRe("img")
            .SaveToFile "c:\test.doc"
        End With
        
        '关闭对象
        iRe.Close
        iStm.Close
    End Sub
      

  3.   

    To  easydone(利钢护城) 哥哥
    实时错误 -2147467259(80004005)
      

  4.   

    Unrecognized database format "....\XX.mdb"
    对数据库的格式有什么要求么?
    还有怎么对存入哪个字段控制
    对不起 我是刚学的
    麻烦您说清楚点
      

  5.   

    如果是access2000,使用Provider=Microsoft.Jet.OLEDB.4.0;
    如果是access97,使用Provider=Microsoft.Jet.OLEDB.3.51;
      

  6.   

    online(龙卷风V2.0--再战江湖) 哥哥 
    '*************************************************************************
    '**
    '** 使用 ADODB.Stream 保存/读取文件到数据库
    '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    '**
    '** ----- 数据库连接字符串模板 ---------------------------------------
    '** ACCESS数据库
    '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
    '**     ";Data Source=数据库名"
    '**
    '** SQL数据库
    '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
    '**     "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
    '**
    '*************************************************************************
    '
    '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcStr As String
        
        '数据库连接字符串
        iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=c:\bbb.mdb"
        
        '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary    '二进制模式
            .Open
            .LoadFromFile "c:\aaa.doc"
        End With
        
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "kaoshi", iConc, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("content") = iStm.Read
            .Update
        End With
        
        '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub'从数据库中读取数据,保存成文件
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConc As String
        
        '数据库连接字符串
        iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
        
        '打开表
        Set iRe = New ADODB.Recordset
        iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
        iRe.Filter = "id=64"
        
        '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write iRe("img")
            .SaveToFile "c:\test.doc"
        End With
        
        '关闭对象
        iRe.Close
        iStm.Close
    End SubPrivate Sub Command1_Click()
    Call s_SaveFile
    End Sub
     这样后 一点command1 提示“运行时错误‘3001’参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突”
    我编译通过了
    我是想把aaa.doc里的东西用2进制存在bbb.mdb的第2个字段里
    bbb.mdb格式如下
       ID      content
    自动编号   aaa.doc的内容
      

  7.   

    我是想把aaa.doc里的东西用2进制存在bbb.mdb的第2个字段里
    你不是已经写了吗??
     With iRe
            .Open "kaoshi", iConc, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("content") = iStm.Read
            .Update
        End With
      

  8.   

    什么叫以二进制格式存入ACCESS里?
    不知道VB处理文字的UNICODE编码很麻烦吗?
    不知道纯二进制和STRING之间的关系吗?
    没有见过ACCESS中的数据类型的定义吗?
    你可以把法直接说出来,不用搞得这么夸张吧?
      

  9.   

    online(龙卷风V2.0--再战江湖)    的程序我测试一下行.
    '保存文件到数据库中
    Sub s_SaveFile()
    ..........
    ...........    
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
         .Open "表", iConc, adOpenKeyset, adLockOptimistic   '此处错了应改为 iConcStr          .Open "表", iConcStr, adOpenKeyset, adLockOptimistic   '正确的...........
    ..........
    end sub
      

  10.   

    jluwood(风云十二少)  给我你的QQ  我把源文件发给你!!!
      

  11.   

    大哥发我信箱里吧 [email protected]
    我这有时候接不到 内网