2010-03-30 173 views
2

我有一個Excel電子表格。我通過ODBC連接到Access數據庫。一些沿線:如何使用Excel VBA從Access數據庫中提取備註字段?

Set dbEng = CreateObject("DAO.DBEngine.40") 
Set oWspc = dbEng.CreateWorkspace("ODBCWspc", "", "", dbUseODBC) 
Set oConn = oWspc.OpenConnection("Connection", , True, "ODBC;DSN=CLIENTDB;") 

然後,我使用查詢和提取結果集來獲取某些表數據。

Set oQuery = oConn.CreateQueryDef("tmpQuery") 
oQuery.Sql = "SELECT idField, memoField FROM myTable" 
Set oRs = oQuery.OpenRecordset 

現在出現了這個問題。我的領域是一個dbMemo,因爲最大內容長度高達幾百個字符。這並不長,實際上我讀的價值只有十幾個字符。但是Excel似乎根本無法處理Memo字段的內容。我的代碼...

ActiveCell = oRs.Fields("memoField") 

...給出錯誤運行時錯誤'3146':ODBC-調用失敗。

有什麼建議嗎? Excel VBA實際上可以獲得備忘錄字段數據嗎?或者它完全不可能。我也從GetChunk得到完全相同的錯誤。

ActiveCell = oRs.Fields("memoField").GetChunk(0, 2) 

...還給出錯誤運行時錯誤'3146':ODBC - 調用失敗。

轉換爲文本字段可以使所有工作正常。但是,當然有些數據被截斷爲255個字符,這意味着這不是一個可行的解決方案。

回答

0
  • 嘗試Range.CopyFromRecordset以查看它是否有效。
  • 嘗試使用CStr(oRs.Fields("memoField"))並將其分配給Range/ActiveCellValue2
  • 嘗試使備註字段成爲表中的最後一個物理列。只有在檢索時纔會讀取備註字段。備忘錄字段存在/可能仍然是一個問題,而這些備忘錄字段並非物理地位於表格的最後。

我現在能想到的所有東西。

+0

我早期嘗試過CStr,認爲這是轉換問題,但是提出了完全相同的錯誤。我會嘗試其他兩個選項,謝謝。 – 2010-03-31 03:57:17

相關問題