请各位高手帮我看看,源代码如下:
Public Sub FileToCol(Col As ADODB.Field, WordFile As String)
Dim strData() As Byte
Dim NumBlocks As Long
Dim FileLength As Long
Dim LeftOver As Long
Dim SourceFile As Long
Dim i As Long
SourceFile = FreeFile
Open WordFile For Binary Access Read As SourceFile
FileLength = LOF(SourceFile)
If FileLength = 0 Then
    Close SourceFile
    MsgBox WordFile & "Empty or not found."
Else
    NumBlocks = FileLength / ChunkSize
    LeftOver = FileLength Mod ChunkSize
    Col.AppendChunk Null   '执行到这句出现的错误。我把这句去掉之后,后面执行正常,但是文件却没有存储到数据库中
    ReDim strData(ChunkSize)
    For i = 1 To NumBlocks
        Get SourceFile, , strData
        Col.AppendChunk strData
    Next i
    ReDim strData(LeftOver)
    Get SourceFile, , strData
    Col.AppendChunk strData
    Close SourceFile
End If
End Sub

解决方案 »

  1.   

    好像是Col!某个字段.AppendChunk 值
      

  2.   

    症状
    当 Visual Basic 6.0 客户端对组件对象模型 (COM) 对象调用一个方法时,Visual Basic 运行库可能报告以下错误信息:
    Run-time error '-2147467259 (80004005)':Method '~' of object '~' failed 
    即,该方法调用返回 E_FAIL,但对象或者未实现 ISupportErrorInfo 接口,或者未通过调用 CreateErrorInfo 函数提供错误对象。 
    更多信息
    如果您使用正确的错误处理代码,则可以确定包含返回该错误的对象的服务器名。这些信息存储在 Err 对象的 Source 属性中。例如,以下代码在发生错误时创建一个事件日志条目: Private Sub TestSub()
    On Error GoTo errHandler
    Dim o As TestServer.Class1
    Set o = New TestServer.Class1
    o.SomeMethod
    Exit Sub
    errHandler:
    App.LogEvent "Error in TestSub:" & Err.Number & "; Source:" & Err.Source & "; Description:" & Err.Description
    End Sub
    如果在调用 o.SomeMethod 时发生上述错误,则您可以标识函数名 (TestSub)、错误号 [-2147467259 (80004005)]、错误源 (TestServer) 和说明 (Method '~' of object '~' failed)。您可以使用这些信息缩小导致该问题的原因的范围。如果您在 Visual Basic 集成开发环境 (IDE) 中进行调试,并且如果该 COM 对象正在运行中,则可以获得包含对象名和方法名的更具体的错误说明。若要确定导致问题的根本原因,应调试返回 E_FAIL 的对象的方法。
      

  3.   

    to rainivy(Rain) :col 的类型是ADODB.Field,本身就是字段了。
    to GGL123() :我是先插入记录,然后调用这个过程,把blob类型数据添加进去的,也就是说调用这个过程之前记录已经存在了,添加完之后,blob类型的字段长度还是0字节。
      

  4.   

    to  dlyme(大老爷们儿):怎么样可以解决这个错误呢?
      

  5.   

    NumBlocks = FileLength / ChunkSize,这句明显错了,你肯定是想返回一个整型的数据块大小。应该是:NumBlocks = FileLength \ChunkSize
      

  6.   

    Sorry,刚才没仔细看。你的NumBlockS变量已经声明为长整型,那不应该是上面那条语句的问题。我检查了一下代码,不觉得有问题,你用的数据库是SQL吗?把字段类型设置成image试试。希望能帮得上你。
      

  7.   

    最好再检查一下ChunkSize设置的大小是否合适
      

  8.   

    我的数据库是Oracle,ChunkSize的大小我试着改过了,还是这样,一般ChunkSize的大小设置为多少合适?
      

  9.   

    我刚才试了一下那段代码,数据库用的SQL Server,字段设置成image,没问题啊,可以存上去。你是不是数据库忘了Update了?