2017-08-14 73 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的另一種選擇。 –

相關問題