excel - 使用 UDF 进行查询在 Access 中有效,但在 Excel 中的表达式 (Err 3085) 中给出未定义函数

标签 excel ms-access function undefined

我有一个带有日期/时间字段的 Access 表。我想从日期/时间字段和其他 3 个文本字段中创建一个复合键字段,格式与另一个数据库中的匹配键字段相同。

因此,我连接了 3 个文本字段并在模块中编写了一个用户定义函数,以将日期字段输出为格式为“YYYYMMDD”的字符串。

Public Function YYYYMMDD(dteDate As Date) As String
    YYYYMMDD = Format(dteDate, "YYYYMMDD")
End Function

然后我可以在 Access 中成功运行我的查询,一切正常。

但是当我在 Excel 中设置一些 DAO 代码并尝试运行在 Access 中运行良好的查询时......
db.Execute "qryMake_tblValsDailyAccount"

...Excel 给了我“表达式中的未定义函数。(错误 3085)”错误。

对我来说,这是 Excel 和/或 Access 中的一个错误,因为 (Excel) 客户端不应该需要知道任何有关内部计算的信息,这些计算通常在隔离时在 (Access) 服务器中完美进行。

Excel 应将 querydef(不带参数的名称)发送到服务器,让服务器完成其工作,然后接收答案。为什么它需要参与服务器内部的功能?

有谁知道解决这个问题的方法?

最佳答案

Access使用Jet,Access和Jet结合理解VBA函数。 DAO 是一个不理解 VBA 函数的通用数据 Access 层。

当您使用 DAO 时,您并没有使 Access 自动化,而只是使用该桥接器来获取数据。

尽管某些版本的 Access 在内部使用 DAO 与 Jet 进行通信,但理解 VBA 的能力被编程到 Access 中,而不是 DAO。

我认为你的解决方法是你能做的最好的。

关于excel - 使用 UDF 进行查询在 Access 中有效,但在 Excel 中的表达式 (Err 3085) 中给出未定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828609/

相关文章:

excel - 在 Excel 中检测一列中的单元格变化

mysql - 如何合并两个具有相同数据但具有不同 PK 且没有重复字段的数据库?

r - 尝试创建一个确保列表长度为 2 的函数

javascript - CSV 到 JSON 转换

excel - 使用 VBA 从 Excel 中打开 PowerPoint 演示文稿,然后将该演示文稿设置为变量

c# - 使用 Open XML SDK 2.0 检索每行和每列中的所有单元格值

R在没有管理员权限的情况下将数据框写入excel

vba - 如何获取表单的最后一条记录ID?

c# - 在 TableAdapter 的填充查询中使用变量

javascript - 是否可以将类传递给 Javascript 函数?