我具有以下过程,旨在通过ADO查询ListObject。
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
cnn.Open
Dim tblRange As String
tblRange = quoteWK.ListObjects("quoteWKStateInfo").Range().Address(False,False)
Dim strSQL As String
strSQL = "SELECT WkStateCd FROM [quoteWK$" & tblRange & "]"
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strSQL,cnn,adOpenStatic,adLockPessimistic
但是,当表有198个时,记录集仅返回23条记录。此外,每个字段的值都为空(debug.print rs.Fields(0).Value
)。
我已经在网上进行了很多搜索,但看不到该问题。我还玩过CursorType
和LockType
。在下面放置了我认为重要的信息以及表格图片。
?tblRange | Q4:AG206
?strSQL | SELECT WkStateCd FROM [quoteWK$Q4:AG206]
?rs.Fields(0).Value | Null
?rs.RecordCount | 23
?rs.Fields.Count | 1 'this is correct
另外,FWIW,当我对表运行SELECT DISTINCT
时,没有返回任何记录。 WkStateCd列中有15个不同的状态。