Ms access 如何在MS Access窗体中获取我的当前用户登录

Ms access 如何在MS Access窗体中获取我的当前用户登录,ms-access,ms-access-2007,Ms Access,Ms Access 2007,我有初始表单登录以验证用户详细信息以访问我的MS access数据库 现在我在另一个表单中有一个要求,如果我从组合框中选择了相同的登录用户,那么应该在表单中启用命令按钮,这样我就可以在access db中验证使用另一个表单文本框登录的初始登录用户 因此,我对此进行了研究,但无法获得有用的场景-请一些人帮助我如何获得这些细节…谢谢 验证后,将登录的用户记录在公共变量中,然后您可以使用“CurrentUser()”命令对其进行测试,以查看它们在下一个表单中是否匹配 注意:仅当每个用户都有自己的前端副

我有初始表单登录以验证用户详细信息以访问我的MS access数据库

现在我在另一个表单中有一个要求,如果我从组合框中选择了相同的登录用户,那么应该在表单中启用命令按钮,这样我就可以在access db中验证使用另一个表单文本框登录的初始登录用户


因此,我对此进行了研究,但无法获得有用的场景-请一些人帮助我如何获得这些细节…谢谢

验证后,将登录的用户记录在公共变量中,然后您可以使用“CurrentUser()”命令对其进行测试,以查看它们在下一个表单中是否匹配


注意:仅当每个用户都有自己的前端副本时才使用此方法(如果每个人都共享同一个前端,则不要使用此方法,尽管按照良好的实践,他们不应该使用此方法)

虽然@Remou的API方法建议可行,但我已转向此技术

Public Function GetUserName() As String
    Dim wshNet As Object
    Set wshNet = CreateObject("WScript.Network")
    GetUserName = wshNet.UserName
    Set wshNet = Nothing
End Function

我相信它比在用户完成登录后调用API更健壮,隐藏而不是关闭登录表单。隐藏表单后,其他表单中的代码仍然可以从登录表单读取值

要隐藏名为frmLogin的表单,请执行以下操作:

DoCmd.OpenForm "frmLogin",acNormal,,,,acHidden

如果隐藏的frmLogin包含一个名为txtUserName的文本框,则可以按如下方式检查其值:

Debug.Print Forms!frmLogin!txtUserName
我的回答基于您在Access数据库应用程序中创建了自己的安全框架的假设。但这一点尚不清楚。如果您使用的是Access ULS(用户级安全),它需要旧的MDB格式数据库,那么Matt提到的CurrentUser()函数将为您提供用户的访问安全名称。但是,如果您使用的是这种方法,我不明白您为什么需要单独的登录表单


所以你的问题不清楚。如果没有令人满意的答案,请编辑您的问题,包括您正在使用的安全/登录策略的解释。

如果未使用访问安全(“管理员”将被返回)并且环境(“用户名”)安全性差,我不确定当前用户是否会有所帮助。通常推荐使用Dev Ashish()之类的API。我不确定OP在问什么。@Remou我不太确定OP是否使用“Windows”用户名作为他们是否使用其他方法的安全性,否则是的,API调用很好,我也喜欢Chris的回答。
Debug.Print Forms!frmLogin!txtUserName