使用VBA从SQL Server获取查询结果,而不使用CopyFromRecordSet

使用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

我从SQLServer获得了以下VBA查询,只返回一个结果。我的问题是如何阅读它。到目前为止,我已经找到了一种方法,但我不想使用它

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,由于某种原因,它不想复制所有字段。我增加了更多的特权,它开始工作了。