2010-04-19 182 views
3

我正在開發Excel/vba 2003中的報表應用程序.VBA代碼將搜索查詢發送到數據庫並通過記錄集獲取數據。然後它將被複制到Excel表單中。檢索到的數據如下所示。將記錄集數據複製到多個表中以避免Excel VBA中的最大行數限制問題

ProductID--------|---DateProcessed---------|----State----- 

1................|.. 1/1/2010..............|.....Picked Up 
1................|.. 1/1/2010..............|.....Forward To Approver 
1................|.. 1/2/2010..............|.....Approver Picked Up    
1................|.. 1/3/2010..............|.....Approval Completed  
2................|.. 1/1/2010..............|.....Picked Up 
3................|.. 1/2/2010..............|.....Picked Up 
3................|.. 1/2/2010..............|.....Forward To Approver 

問題是從搜索查詢中檢索的數據非常巨大,超出了excel行限制(excel 2003中的65536行)。所以我想將這些數據分成兩張Excel表格。 在分割數據時,我想確保同一產品的數據應該保留在一張紙上。

例如,如果上述結果集中的最後一條記錄是第65537條記錄,那麼我也希望將產品3的所有記錄移動到新工作表中。

所以Sheet1中會包含產品ID 1和2條記錄與總記錄數= 65534 表2將包含產品ID 3記錄 - 總記錄= 2

我如何在VBA實現這一目標?

如果這是不可能的,是否有其他解決方案?

在此先感謝!

回答

1

既然你沒有提供任何關於你如何訪問你的數據庫的代碼,我只能給你一個大綱。

首先,將查詢發送到這樣的數據庫:

"SELECT COUNT(*),ProductID FROM YourTable GROUP BY ProductID order by ProductID" 

從結果可以方便地計算產品ID的間隔小於65536分的記錄,只需添加計數,直到達到此限制。

最後,分割原始查詢成許多查詢(每數據片的一個),並添加一個WHERE條件是這樣的:

... WHERE ProductID IS BETWEEN " + LowerIDRange + " AND " + HigherIDRange 

LowerIdRange和HigherIDRange必須是從所述第一查詢中計算出的間隔的限制。

0

移動到Excel 2007或2010,我認爲它有250.000行的限制。或者更好:看看你能否預先彙總你的數據。
我最喜歡的建議是製作數據透視表來總結您的數據。然後通過雙擊一個單元格,用戶可以將一個匹配的細節記錄子集合到一個新的表格中。