sql - 从 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?
谢谢!
解决方案
在 Access 应用程序会话中,称为“表达式服务”的功能允许 db 引擎使用您的 VBA 用户定义函数。因此,您的查询在 Access 会话中运行良好。
但是,当您尝试通过 JavaScript 运行相同的查询时,它不会在 Access 应用程序会话中执行......因此表达式服务无法允许 db 引擎使用您的 UDF。因此查询尝试失败。
并且无法使该查询方法起作用。建议您探索WScript.Network
@dbmitch 提供的方法。
推荐阅读
- node.js - Express-jwt 中间件打字稿类型问题
- java - 为什么我的 JPA 更新(编辑)选项不起作用?
- javascript - javascript setTimeout() 无法正常工作
- c# - 未能在 MimeMessage (rotativa) 中添加附件以发送邮件
- reactjs - 使用 react-redux,通过 redux 状态将回调函数传递给通用组件的最佳实践是什么?
- java - 使用 FrameBuffer 和 SpriteBatch 时的纹理拉伸
- javascript - 如何从字符串中提取方程并求解,然后将答案放回 javascript 中的字符串中?
- c - 创建一个指向 11 个字符串的 char 指针数组,但在打印它们时遇到问题
- function - 使用 console.log 调用函数
- python - 如何使用方法 Pop 在 Python 中更改字典的键?