2017-08-14 29 views
0

我已经通过ODBC链接表OLE对象显示为一个记录空当它显示在查询视图作为OLE对象

ID (INT) FILE_TYPE (VARCHAR(20)) BLOB_DATA (BLOB) 

连接到访问以下Oracle表的BLOB_DATA字段保存Excel文件,我想下载它们。

在访问查询视图,字段显示为OLE对象

我写了下面的代码到现在 -

Dim db as Database 
Dim rst as Recordset 

Set db = CurrentDb 

Set rst = db.openrecordset("SELECT BLOB_DATA FROM MY_TABLE;") 
Dim fld as Variant 

fld = rst.Fields(0).value 

当我检查FLD领域,它显示为空,即使Access Query视图将其显示为OLE对象。它是否必须对ODBC和链接表做些什么?或者我错过了什么?

回答

2

您不能只将变量设置为等于OLE或BLOB字段的值,因为它们可以包含非常大的对象。您需要在该字段上使用.GetChunck来返回文件的数据块,因此您不必将整个BLOB加载到变量中。

使用.GetChunck可以使您在将整个文件写入磁盘时仅占用文件的一小部分。

所需的代码不小,但是下面的Microsoft文章描述得很好:https://support.microsoft.com/en-us/help/210486/acc2000-reading--storing--and-writing-binary-large-objects-blobs (是的,它是Access 2000,但我找不到来自Microsoft的更新源代码)。

如果您还有其他问题,请随时在评论中提问。

+2

'ADODB.Stream'对象是将大型BLOB对象移入和移出Recordset的另一种选择。 –

相关问题