2017-01-23 149 views
0

我有一些問題,試圖從記錄中提取一些數據,VBA代碼是如此簡單的東西:記錄不返回所有數據VBA

cnt.Open stDB 

Query = "SELECT TriggerDescription," 
Query = Query & " FROM Research_Control" 
Query = Query & " WHERE (((Research_Control.Status) = 1))" 
Query = Query & " ORDER BY Research_Control.Enterprise;" 

rs.Open Query, cnt, adUseClient 

    While Not rs.EOF 

     Sheets("Research_Review").Cells(lineResearch + line, colResearch) = rs.Fields(0) 

     line = line + 1 
     rs.MoveNext 

    Wend 

rs.Close 

cnt.Close 

的「TriggerDescription」是500大characteres和當我複製此值到Excel中的單元格時,它只出現,直到300 characteres

所以我的問題是:如何提取記錄集中的所有數據?

PS:我已經嘗試改變與「cnt.CommandTimeout = 60」超時,但它不工作,要麼

編輯:在表設計領域「TriggerDescription」是ntext的數據類型僅供參考。

+0

爲什麼這一切的**文字... **? – Sami

+0

該觸發描述不大於32,767個字符,因爲這是[單元]的最大值(https://support.office.com/zh-cn/article/Excel-specifications-and-limits-1672b34d-7043- 467e-8e27-269d656771c3)? – rene

+0

根據文本的大小以及訪問的ADO DB提供程序是否支持它,您可以嘗試['GetChunk'](https://msdn.microsoft.com/zh-cn/library/ms681747(v = vs。 85).aspx)。 – rene

回答

1

@ A.S.H已經給出了答案,使用CopyFromRecordset我所有的數據複製到細胞

Sheets("Test").Range("test").CopyFromRecordset rs

+0

很高興知道它的工作。那麼,Excel的內置方法總是比自定義循環更可取,因爲它們經過優化和強大。爲什麼它不適用於你的循環是一個謎,但最有可能的原因是Excel單元格賦值運算符的大小有一定的限制。 –

+0

@ A.S.H謝謝!我從現在開始嘗試使用更多的excel的內置方法 –