首页 > 解决方案 > 从 JS ActiveX ADO 通过 MS Access 2013 中的视图查询执行 VBA 功能

问题描述

如何通过来自 JS ActiveX ADO 的 MS Access 2013 中的视图查询执行 VBA 宏?

VBA 功能是使用以下方法获取当前登录的用户:

Public Declare Function GetUser Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

视图查询是一个返回 VBA 函数值的选择语句。

我想通过 LAN(相同的域策略)从 JS ActiveX ADO 执行该视图查询。查询抛出一个错误,指出我至少需要一个表或查询。我还注意到,如果我从不执行 VBA 函数的视图查询中读取数据,它会毫无问题地通过。这是设计的安全控制吗?有什么方法可以在此设置中获取用户 ID?

谢谢!

标签: sqlms-accessvbaactivex

解决方案


在 Access 应用程序会话中,称为“表达式服务”的功能允许 db 引擎使用您的 VBA 用户定义函数。因此,您的查询在 Access 会话中运行良好。

但是,当您尝试通过 JavaScript 运行相同的查询时,它不会在 Access 应用程序会话中执行......因此表达式服务无法允许 db 引擎使用您的 UDF。因此查询尝试失败。

并且无法使该查询方法起作用。建议您探索WScript.Network@dbmitch 提供的方法。


推荐阅读