Recordset没有获取excel宏中的所有行

时间:2014-08-28 12:10:25

标签: excel excel-vba recordset vba

我正在尝试使用recorderdeset从sybase获取数据到excel。 该表有appx。 10万行,但excel只显示有限数量的行appx 10k。 以下是反映我想要做的事情的片段:

Dim DB_Con As ADODB.Connection
Call GetConnection(Impact_DB) 
Set DB_Con = ThisWorkbook.cnn_dlt
Call ThisWorkbook.Execute_Query("scratchdb..abc", "A2", DB_Con)

GetConnection(Impact_DB):
cnn_dlt.Open "DRIVER={MERANT 3.60 32-BIT Sybase};Srvr=" + server + ";DB='" + db +"';Uid=" + user + ";Pwd=" + `enter code here`passwd

Execute_Query:
rst As New ADODB.Recordset
TmpSqlTxt = "select * from " + Tbl_Name
rst.Open TmpSqlTxt, Impact_DB, adOpenStatic
row_cnt1 = rst.RecordCount
WS.Range(Range_Start).CopyFromRecordset rst

WS.Select
WS.Cells.Select
WS.Cells.EntireColumn.AutoFit

rst.Close
ThisWorkbook.ActiveSheet.Cells(2, 1).Select

在我看来,记录集无法获取所有行..因为我尝试显示记录集的数量而且只有10k。

1 个答案:

答案 0 :(得分:0)

您使用.RecordCount是错误的。要确定正确的记录计数,您必须先在记录集上使用.MoveLast。有关详细信息,请参阅http://allenbrowne.com/ser-29.html

 rst As New ADODB.Recordset
 TmpSqlTxt = "select * from " + Tbl_Name
 rst.Open TmpSqlTxt, Impact_DB, adOpenStatic
 rst.MoveLast    
'^^^^^^^^^^^^
 row_cnt1 = rst.RecordCount