在表达式生成器中使用自定义函数

Mik*_*e S -2 ms-access vba ms-access-2010 expressionbuilder

我添加了一个函数来获取Active Directory用户登录,对于使用 VBA 的 Access DB,但我不确定为什么我看不到表达式生成器中列出的函数

我像这个问题一样定义了函数,但我在表达式生成器中看不到该函数。我计划使用这个函数在我的表单上填充一个不可见的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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ash*_*awg 5

我想您是在问如何在表达式生成器中显示自定义函数?(因此与 Active Directory 或登录无关)。

\n\n

这很可能是以下任一简单情况 \ n -自从将函数粘贴到后,
您尚未保存模块,或者
\n - 函数不位于公共模块中。

\n\n

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

\n\n

图像

\n\n

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

\n\n

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

\n\n
\n\n

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

\n\n

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

\n\n

Functions\xe2\x86\x92 My database name\xe2\x86\x92 My module name

\n\n
\n\n

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

\n\n

\n