将记录集数据复制到多个表中以避免Excel VBA中的最大行数限制问题
问题描述:
我正在开发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实现这一目标?
如果这是不可能的,是否有其他解决方案?
在此先感谢!
答
既然你没有提供任何关于你如何访问你的数据库的代码,我只能给你一个大纲。
首先,将查询发送到这样的数据库:
"SELECT COUNT(*),ProductID FROM YourTable GROUP BY ProductID order by ProductID"
从结果可以方便地计算产品ID的间隔小于65536分的记录,只需添加计数,直到达到此限制。
最后,分割原始查询成许多查询(每数据片的一个),并添加一个WHERE条件是这样的:
... WHERE ProductID IS BETWEEN " + LowerIDRange + " AND " + HigherIDRange
LowerIdRange和HigherIDRange必须是从所述第一查询中计算出的间隔的限制。
答
移动到Excel 2007或2010,我认为它有250.000行的限制。或者更好:看看你能否预先汇总你的数据。
我最喜欢的建议是制作数据透视表来总结您的数据。然后通过双击一个单元格,用户可以将一个匹配的细节记录子集合到一个新的表格中。