【问题标题】:Pulling results from one function into another function将结果从一个函数拉入另一个函数
【发布时间】:2014-02-22 04:47:41
【问题描述】:

我正在使用 Access 2010。我如何从一个移动到另一个函数的函数中获取记录集中的信息?以下代码给了我一个对象变量未设置错误:

Function Main()
Dim rs as DAO.RecordSet
Dim i as integer

Set rs = QueryResults(i)
   Do While Not rs.EOF
       debug.print rs!result
       rs.MoveNext
   Loop
End Function



Function QueryResults(i as Integer) as DAO.RecordSet
Dim stQuery as String
Dim rsResults as DAO.RecordSet
Dim i2 as Integer

i2 = i
stQuery = "Select query that uses i2 to get results"
Set rsResults = CurrentDb.OpenRecordset(stQuery)
End Function

我可以单步执行并查看 QueryResults 函数是否正常工作。我可以从 rsResults 打印出每一行,看看它是否有我想要的。当代码到达“do while not rs.EOF”行时,问题就来了。它说 rs 从未设置为任何东西。

我做错了什么?这两个功能都在同一个模块中。从一个函数到另一个函数的结果似乎应该不难。

【问题讨论】:

    标签: ms-access vba ms-access-2010 recordset


    【解决方案1】:

    当你想要一个函数返回一些东西时,你必须把那个东西分配给函数名。

    QueryResults 函数的最后一部分更改为:

    'Set rsResults = CurrentDb.OpenRecordset(stQuery)
    Set QueryResults = CurrentDb.OpenRecordset(stQuery)
    End Function
    

    【讨论】:

    • 我不敢相信我错过了。非常感谢。我花了太长时间浏览网站来了解如何使用记录集。我什至从未注意到该函数从未被赋值。谢谢你让我恢复了一天的理智。
    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2013-12-16
    相关资源
    最近更新 更多