首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用调用VBA函数的计算字段加速访问查询

使用调用VBA函数的计算字段加速访问查询
EN

Code Review用户
提问于 2015-04-17 03:45:13
回答 1查看 1.8K关注 0票数 5

在工作中,我有一个包含员工管理器、员工电子邮件和员工ID等字段的Microsoft Access数据库。我的职责包括更新此数据库和验证生成的条目。当我运行VBA脚本来验证记录时,我面临着表中25K到30K之间的员工记录。在VBA中有一个典型的验证函数如下:

代码语言:javascript
复制
Public Function validateEmployeeManager(empID As String, empStatus as String, empManager As String)  

    If ((empStatus = "Active") And isNull(empManager)) Then 
        validateEmployeeManager = "Manager is invalid for employee" & " " & empID
    Else
        validateEmployeeManager = "Valid manager"
    End If

在查询中的计算字段中调用上述内容:

代码语言:javascript
复制
validateEmployeeManager([Employee_Name],[Employee_Status],[Employee_Manager]

考虑到数据库的大小,我注意到上面这样的代码运行和显示结果需要相当长的时间。

是否有更有效的方法来运行这个验证?

EN

回答 1

Code Review用户

发布于 2015-04-17 05:25:49

你为什么不直接把它放在查询中:

对经理无效的员工的查询:

代码语言:javascript
复制
Select [Employee_Name],[Employee_Status],[Employee_Manager]
FROM employees
WHERE [Employee_Status] = 'Active' AND isNull([Employee_Manager])

对具有有效经理的员工的查询:

代码语言:javascript
复制
Select [Employee_Name],[Employee_Status],[Employee_Manager]
FROM employees
WHERE NOT ([Employee_Status] = 'Active' AND isNull([Employee_Manager]))

查询,其中显示的是管理器是否有效或无效。

代码语言:javascript
复制
Select [Employee_Name],[Employee_Status],[Employee_Manager],
Iif([Employee_Status] = 'Active' AND isNull([Employee_Manager]), 'Invalid', 'Valid') as [Manager for employee]
FROM employees
票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/87146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档