-2

我添加了一个函数来获取Active Directory用户登录,用于使用 VBA 的 Access DB,但我不确定为什么我没有在 Expression Builder 中看到我的函数

我在这个问题中定义了类似的函数,但在表达式生成器中看不到该函数。我打算使用这个函数在我的表单上填充一个不可见的 txtBox 并将其记录到数据库中。

    Public Function GetUser(Optional whatpart = "username")
        Dim returnthis As String
        If whatpart = "username" Then GetUser = Environ("USERNAME"): Exit Function
        Set objSysInfo = CreateObject("ADSystemInfo")
        Set objUser = GetObject("LDAP://" & objSysInfo.USERNAME)
        Select Case whatpart
            Case "fullname": returnthis = objUser.FullName
            Case "firstname", "givenname": returnthis = objUser.givenName
            Case "lastname": returnthis = objUser.LastName
            Case Else: returnthis = Environ("USERNAME")
        End Select
        GetUser = returnthis
    End Function

在此处输入图像描述

4

1 回答 1

3

我想您是在问如何在 Expression Builder 中显示自定义函数?(因此与 Active Directory 或登录无关)。

这很可能是以下任一情况的简单情况 -自从将函数粘贴到中后,
您还没有保存模块,或者
- 函数不在公共模块中。

要确保它们已保存:
1. 完全关闭 Access(所有打开的数据库),然后,
2. 重新打开数据库,然后,
3. 打开您的模块(从导航栏的“模块”部分:

图像

...并确认您的代码在那里。

然后再次尝试表达式生成器。


如果该模块未显示在该Modules部分中,则您的代码不在公共模块中。

请注意,您不必使用表达式生成器。我实际上从未使用过它,但我只是尝试过,一旦保存了带有我的功能的模块,它们就会出现在:

FunctionsMy database nameMy module name


此屏幕截图显示了我的函数是如何在我保存之前未在表达式生成器中列出的,然后是我如何在生成器中找到它的:

于 2018-05-30T03:46:44.103 回答