将 SQL 查询的结果保存到 VBA 中的变量中?

Posted

技术标签:

【中文标题】将 SQL 查询的结果保存到 VBA 中的变量中?【英文标题】:Save the result of a SQL query into a variable in VBA? 【发布时间】:2015-12-02 13:24:45 【问题描述】:

我正在尝试将查询结果分配给变量。我有一个查询(我们称之为“Query1”),它将检查各种标准。我尝试如下。

   Dim rst As DAO.Recordset
   Dim strSQL As String
   Dim Variable1 As String

   strQry = "Query1"
   Set rst = CurrentDb.OpenRecordset(strQry)

 Variable1 = ????? 
   rst.Close
   Set rst = Nothing

我需要帮助来完成上述代码,以便我的变量将获得查询返回的值。请注意,我的 Query1 将返回 Null 值或单个记录。

【问题讨论】:

query1 中的列名是什么?,您似乎也与 strSQLstrQry 不匹配 【参考方案1】:

我不明白你为什么需要一个记录集。您可以使用DLookup 获取Query1 返回的值。

Dim Variable1 As Variant
Variable1 = DLookup("[column name here]", "Query1")

我将Variant 用于Variable1,以便它可以接受Null。如果您希望将其保留为 String,您可以使用 Nz(),正如 Andre 演示的将 Null 转换为字符串。

【讨论】:

【参考方案2】:

如果您的查询只返回一列,并且只返回零或一条记录,您可以使用rst(0) 获取第一个字段(Fields 集合是从零开始的)。

If rst.EOF Then
    ' covers "no records returned"
    Variable1 = ""
Else
    ' Nz() covers "NULL returned"
    Variable1 = Nz(rst(0), "")
End If

但使用查询中的字段名称可读性更好。

Variable1 = Nz(rst!myField, "")

您可能还想查看 DLookup() 函数,该函数旨在返回单个值。

【讨论】:

以上是关于将 SQL 查询的结果保存到 VBA 中的变量中?的主要内容,如果未能解决你的问题,请参考以下文章

VBA/SQL ACCESS:将查询结果复制到其他访问数据库中的表

SQL日期查询中的VBA变量

如何将 sql 查询的结果保存到变量中,然后在脚本中使用它?

尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误

如何在保存到 OneDrive 的 Excel 工作簿中运行 SQL 查询?

navticat 将查询的结果保存到execl