Запрос ADO объекта ListObject, возвращающий только значения NULL для неправильного RecordCount - PullRequest
1 голос
/ 06 ноября 2019

У меня есть следующая процедура, предназначенная для запроса объекта ListObject через ADO.

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

Однако набор записей возвращает только 23 записи, когда в таблице 198. Кроме того, значение для каждого поля равно нулю(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 различных состояний.

enter image description here

...