在数据库存储word文档与存储图片类似。参照以下事例AppendChunk 和 GetChunk 方法范例
该范例使用 AppendChunk 和 GetChunk 方法用其他记录中的数据填写图像字段。Public Sub AppendChunkX()   Dim cnn1 As ADODB.Connection
   Dim rstPubInfo As ADODB.Recordset
   Dim strCnn As String
   Dim strPubID As String
   Dim strPRInfo As String
   Dim lngOffset As Long
   Dim lngLogoSize As Long
   Dim varLogo As Variant
   Dim varChunk As Variant
   
   Const conChunkSize = 100   ' 打开连接
   Set cnn1 = New ADODB.Connection
      strCnn = "Provider=sqloledb;" & _
      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
   cnn1.Open strCnn
   
   ' 打开 pub_info 表。
   Set rstPubInfo = New ADODB.Recordset
   rstPubInfo.CursorType = adOpenKeyset
   rstPubInfo.LockType = adLockOptimistic
   rstPubInfo.Open "pub_info", cnn1, , , adCmdTable
   
   ' 提示复制徽标。
   strMsg = "Available logos are : " & vbCr & vbCr
   Do While Not rstPubInfo.EOF
      strMsg = strMsg & rstPubInfo!pub_id & vbCr & _
         Left(rstPubInfo!pr_info, InStr(rstPubInfo!pr_info, ",") - 1) & _
         vbCr & vbCr
      rstPubInfo.MoveNext
   Loop
   strMsg = strMsg & "Enter the ID of a logo to copy:"
   strPubID = InputBox(strMsg)
   
   ' 将徽标复制到大块中的变量。
   rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
   lngLogoSize = rstPubInfo!logo.ActualSize
   Do While lngOffset < lngLogoSize
      varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
      varLogo = varLogo & varChunk
      lngOffset = lngOffset + conChunkSize
   Loop
   
   ' 从用户得到数据。
   strPubID = Trim(InputBox("Enter a new pub ID:"))
   strPRInfo = Trim(InputBox("Enter descriptive text:"))
   
   ' 添加新记录,将徽标复制到大块中。
   rstPubInfo.AddNew
   rstPubInfo!pub_id = strPubID
   rstPubInfo!pr_info = strPRInfo   lngOffset = 0 ' 重置位移。
   Do While lngOffset < lngLogoSize
      varChunk = LeftB(RightB(varLogo, lngLogoSize - lngOffset), _
         conChunkSize)
      rstPubInfo!logo.AppendChunk varChunk
      lngOffset = lngOffset + conChunkSize
   Loop
   rstPubInfo.Update
   
    ' 显示新添加的数据。
   MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _
      "Description: " & rstPubInfo!pr_info & vbCr & _
      "Logo size: " & rstPubInfo!logo.ActualSize   ' 删除新记录,因为这只是演示。
   rstPubInfo.Requery
   cnn1.Execute "DELETE FROM pub_info " & _
      "WHERE pub_id = '" & strPubID & "'"   rstPubInfo.Close
   cnn1.Close   End Sub

解决方案 »

  1.   

    我在Delphi中只需用loadfromfile 和 savetofile 存取文件就行了,我想在VB中对文件的操作也应该有相似的方法,而无需使用AppendChunk 和 GetChunk 方法。那样太麻烦了。
      

  2.   

    存:
    Public Sub save_Doc()
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
      Dim bit() As Byte
      dim varPath as string '文档的路径    varPath="文档路径"
        cnn.open "连接数据库的字符串"
        sSql = "SELECT * FROM 表 WHERE 关键字='" & 关键值 & "'"
                                 '选出要增加或修改文档的记录
        rst.Open sSql, cnn, adOpenKeyset, adLockOptimistic
        
        If Not (rst.EOF And rst.BOF) Then    
           If VarPath = "" Then
            '    然后将字节数组的内容写入数据库即可
                rst.Fields("文档") = ""
                rst.UPDATE
           Else
                Open VarPath For Binary As #1
                ReDim bit(LOF(1)) As Byte
                Get 1, 1, bit
                Close 1
             '    然后将字节数组的内容写入数据库即可
                rst.Fields("文档").AppendChunk bit
                rst.UPDATE
           End If
        End If
    end sub 取(将文档从数据库中取出,存放为文件 c:\1.doc):
    Public Sub show_Doc()
    Dim REC As Recordset
    Dim sSql As String
    Dim I As Integer
    Set REC = New Recordset
    Dim bit1() As Byte
    Dim sa As String
    sSql = "SELECT * FROM 表 WHERE 关键字 ='" & 关键值 & "'"
       REC.Open sSql, Conn, adOpenStatic, adLockOptimistic, adCmdText
         If REC.EOF Or REC.BOF Then
            Exit Sub
         Else
                If REC("文档").ActualSize > 0 Then
                    bit1 = REC.Fields("文档").GetChunk(REC("文档").ActualSize)
                    '然后将字节数组的内容拼装成文件即可
                    Open "c:\1.doc" For Binary As #1
                  
                    Put 1, 1, bit1
                    Close 1            End If
         End If
        rec.close
        Set REC = Nothing
    Exit Sub
    Err:
       MsgBox "读取文档出错!", OKOnly, "系统提示"
    End Sub