[英]VBA SQL Server Query Connecting but not Returning Records
I have this VBA code that issues a SQL Server query after a successful connection but the query returns no records (eg, -1)我有这个 VBA 代码,它在成功连接后发出 SQL 服务器查询,但查询不返回任何记录(例如,-1)
Function invested_funds() As Integer
Dim c As ADODB.Connection
Dim rs As ADODB.Recordset
Dim connectionstring As String
Dim sql As String
connectionstring = "Provider=SQLOLEDB;Data Source=DESKTOP-2TTG3GQ\SQLEXPRESS;" & _
"Initial Catalog=DB;" & _
"Integrated Security=SSPI;"
Set c = New ADODB.Connection
Set rs = New ADODB.Recordset
c.Open connectionstring
sql = "select [DB].[dbo].[db].[CSRoot] " & _
"from [DB].[dbo].[db] "
If c.State = adStateOpen Then
Debug.Print ("Connected") 'This prints!
End If
Set rs = c.Execute(sql)
Debug.Print (rs.RecordCount)
invested_funds = CInt(rs.RecordCount)
End Function
However, I know records exist and the exact same query in SSMS does indeed return records但是,我知道记录存在,并且 SSMS 中完全相同的查询确实返回记录
select [DB].[dbo].[db].[CSRoot]
from [DB].[dbo].[db]
Many records, in fact.事实上,许多记录。
How can this be?怎么会这样?
You can get the number of records using the rs.getRows function.您可以使用 rs.getRows function 获取记录数。
Function invested_funds() As Integer
Dim c As ADODB.Connection
Dim rs As ADODB.Recordset
Dim connectionstring As String
Dim sql As String
connectionstring = "Provider=SQLOLEDB;Data Source=DESKTOP-2TTG3GQ\SQLEXPRESS;" & _
"Initial Catalog=DB;" & _
"Integrated Security=SSPI;"
Set c = New ADODB.Connection
Set rs = New ADODB.Recordset
c.Open connectionstring
sql = "select [DB].[dbo].[db].[CSRoot] " & _
"from [DB].[dbo].[db] "
If c.State = adStateOpen Then
Debug.Print ("Connected") 'This prints!
End If
Set rs = c.Execute(sql)
Dim arr As Variant, n As Integer
arr = rs.GetRows
n = UBound(arr, 2) + 1
'Debug.Print (rs.RecordCount)
Debug.Print n
invested_funds = n
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.