使用VBA从SQL Server获取查询结果,而不使用CopyFromRecordSet
我从SQLServer获得了以下VBA查询,只返回一个结果。我的问题是如何阅读它。到目前为止,我已经找到了一种方法,但我不想使用它使用VBA从SQL Server获取查询结果,而不使用CopyFromRecordSet,sql,sql-server,vba,Sql,Sql Server,Vba,我从SQLServer获得了以下VBA查询,只返回一个结果。我的问题是如何阅读它。到目前为止,我已经找到了一种方法,但我不想使用它 Dim rsData As Object Set rsData = CreateObject("ADODB.Recordset") With rsData .ActiveConnection = cnLogs .Open "USE DB SELECT [VersionNumber] FROM Main WHERE [IsL
Dim rsData As Object
Set rsData = CreateObject("ADODB.Recordset")
With rsData
.ActiveConnection = cnLogs
.Open "USE DB SELECT [VersionNumber] FROM Main WHERE [IsLastCurrent] = 1"
End With
我不想使用的解决方案:
Cells(1, 1).CopyFromRecordset rsData
请在SQL命令中尝试此更改:
With rsData
.ActiveConnection = cnLogs
.Open "USE DB; SELECT [VersionNumber] FROM Main WHERE [IsLastCurrent] = 1;"
End With
If (rsData.EOF = False) OR (rsData.BOF = False) Then
'there are recordset
myVar= rsData.Fields(0).value
End If
rsData.Close
请在SQL命令中尝试此更改:
With rsData
.ActiveConnection = cnLogs
.Open "USE DB; SELECT [VersionNumber] FROM Main WHERE [IsLastCurrent] = 1;"
End With
If (rsData.EOF = False) OR (rsData.BOF = False) Then
'there are recordset
myVar= rsData.Fields(0).value
End If
rsData.Close
您可以使用
字段
属性逐个记录访问记录集中的值。首次打开记录集时,它要么为空(在这种情况下,recordset.BOF
和recordset.EOF
均为真),要么指向该集中的第一条记录(在这种情况下,recordset.BOF
和recordset.EOF
均为假)。然后使用(例如)访问该记录中的数据:
您可以使用recordset
对象的MoveFirst
、MoveLast
、MoveNext
和MovePrevious
方法在记录中移动(如果您有多个记录)。您可以使用字段
属性逐个记录访问记录集中的值。首次打开记录集时,它要么为空(在这种情况下,recordset.BOF
和recordset.EOF
均为真),要么指向该集中的第一条记录(在这种情况下,recordset.BOF
和recordset.EOF
均为假)。然后使用(例如)访问该记录中的数据:
您可以使用MoveFirst
,MoveLast
,MoveNext
,在记录中移动(如果您有多个记录),和MovePrevious
方法的recordset
对象。了解您为什么不想使用CopyFromRecordset
会很有帮助,因为对于CopyFromRecordset,我应该将其写入表中的某个位置,我只想获取值并为其分配一个变量。myVar=rsData.Fields(“VersionNumber”)
您还需要确保rsData FIRST中有数据。此返回错误3265。。。有什么想法吗?看我的编辑。这可能是SQL语句中的一个错误。了解您为什么不想使用CopyFromRecordset会很有帮助,因为使用CopyFromRecordset时,我应该将其写入表中的某个位置,我只想获取值并为其分配一个变量。myVar=rsData.Fields(“VersionNumber”)
您还需要确保rsData FIRST中有数据。此返回错误3265。。。有什么想法吗?看我的编辑。这可能是SQL语句>Debug.Print rsData.Fields(“VersionNumber”)中的错误。值<返回3265错误。知道为什么吗?我的查询在SQL Server中工作,返回完全正确的结果。>Debug.Print rsData.Fields(“VersionNumber”).Value<返回3265错误。知道为什么吗?我的查询在SQL Server中工作,返回完全正确的结果。谢谢。实际上,问题出在用户的服务器角色上。我只有public,由于某种原因,它不想复制所有字段。我增加了更多的特权,它开始工作了。谢谢。实际上,问题出在用户的服务器角色上。我只有public,由于某种原因,它不想复制所有字段。我增加了更多的特权,它开始工作了。