链接表OLE对象在记录集中显示为null,同时它在查询视图上显示为OLE对象

时间:2017-08-14 18:47:53

标签: vba ms-access

我将以下Oracle表连接到通过ODBC访问

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

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对象,它也显示为null。是否必须对ODBC和链接表执行某些操作?或者我错过了什么?

1 个答案:

答案 0 :(得分: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找到更新的源代码)。

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