Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ListObject的ADO查询只返回错误记录计数的空值_Sql_Excel_Vba_Ado_Listobject - Fatal编程技术网

Sql ListObject的ADO查询只返回错误记录计数的空值

Sql ListObject的ADO查询只返回错误记录计数的空值,sql,excel,vba,ado,listobject,Sql,Excel,Vba,Ado,Listobject,我有下面的过程,通过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.O

我有下面的过程,通过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,当我对表运行
selectdistinct
时,没有返回任何记录。WkStateCd列中有15个不同的状态


我遇到了一个奇怪的问题,即使用ADO将表的开头放在A1以外的地方。例如,在表格开始之前插入行会减少
记录计数
。如果可以将表重新定向为从A1开始,这可能会有所帮助。或者,您是否考虑过使用高级过滤器或其他方法来获得类似的结果?@RyanWildry-谢谢。是的,我可以使用高级过滤器或其他选项。我的同事通过ADO进行构建,因为它通常速度更快,但也有一些怪癖,我在过去也发现了这一点。让我们知道将表移动到A1开始是否有效。@RyanWildry-你知道什么。这就解决了问题。然而,考虑到工作簿设计可以在任何地方都有表格,这是一个相当糟糕的解决方案!如果有人能发布一个更健壮、更动态的解决方案,那就太好了。试着不要使用
LockType
。例如,打开记录集,如:
rs.open strSQL、cnn、adOpenStatic