windows - 在不同模块中 Access VBA Form Private Sub 调用 Public Function

标签 windows ms-access vba ms-access-2010

在我的数据库中,我在一个模块中有一个公共(public)函数,它接收一个 SQL 字符串并返回一个打开的记录集。此函数在被此模块和其他模块中的其他公共(public)子程序调用时工作正常。

但是,如果我尝试使用完全相同的代码调用相同的函数,则会出现编译错误:“参数数量错误或属性分配无效。”

如果我将确切的代码剪切并粘贴到另一个模块中作为公共(public)子模块,它可以正常工作。我怀疑这个问题与命名或隐藏变量有关。不幸的是,我无法通过搜索找到任何解决方案。

Public Function Query(SQL As String) As ADODB.Recordset
   Dim cnnConn As ADODB.Connection
   Dim rsRecord As New ADODB.Recordset
   Set cnnConn = CurrentProject.Connection
   rsRecord.ActiveConnection = cnnConn
   rsRecord.Open SQL
   Set Query = rsRecord
End Function

Private Sub Setup()
   Dim rs As New ADODB.Recordset
   Dim SQL As String
   SQL = "Select * FROM [Configuration]"
   Set rs = Query(SQL) <--- Compile Error
   rs.Close
End Sub

非常感谢任何帮助。

最佳答案

我的直觉是问题是由使用 Query 作为该自定义 VBA 函数的名称引起的。

将函数从 Query 重命名为 fnQuery 并将其返回值更改为 Set fnQuery = rsRecord。然后将 Setup() 过程中的赋值语句更改为 Set rs = fnQuery(SQL)

关于windows - 在不同模块中 Access VBA Form Private Sub 调用 Public Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976224/

相关文章:

c++ - 关于获取 IDot11 AdHoc Manager Interface ofCOM WiFi AdHoc manager Interface 的引用

windows - 如何获取连接显示器的 GPU 卡列表?

sql - 一个 Access SQL 查询中的多个 UPDATE

java - 使用 jackcess 从 MS Access DB 获取查询数据?

sql - 在设计 View 中打开查询时,MS Access不断崩溃

regex - 如何从Excel单元格中仅提取5位数字的字符串?

VBA .formula= If() 与 Cell(x, y) 作为动态引用

C++ 应用程序在崩溃后运行缓慢(MSVS、Win8 x64)

windows - 如何自动化 "Windows Security"窗口: "Windows can' t verify the publisher of this driver software"

vba - 有没有办法以编程方式读取宏描述?