2012-01-22 51 views
0

我有初始窗体登录验证用户详细信息以访问我的MS Access数据库。如何让我当前的用户登录在MS Access窗体

现在我有另一种形式的要求,如果我从组合框中选择相同的登录用户,那么应该在窗体中启用命令按钮,以便如何验证我的初始登录用户在我的访问中使用另一个表单文本框登录D b。

所以我研究了这个,但无法得到有用的场景 - 有些人可以帮助我,我可以如何实现这个细节..谢谢!

回答

1

更加坚固,隐藏而不是关闭登录形成。在窗体隐藏的情况下,其他表单中的代码仍然可以读取登录表单中的值。

若要隐藏窗体名为frmLogin:

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

DoCmd.OpenForm "frmLogin",acNormal,WindowMode:=acHidden 

如果隐藏frmLogin包含一个名为txtUserName一个文本框,你可以检查它的价值是这样的:

Debug.Print Forms!frmLogin!txtUserName 

我基于这个答案假设你在你的Access数据库中创建了自己的安全框架ap折叠。但是这一点不清楚。如果您使用Access ULS(用户级安全性)(需要较旧的MDB格式数据库),则Matt提到的CurrentUser()函数将为您提供用户的Access安全性名称。但是,如果这是您使用的方法,我不明白为什么您需要单独的登录表单。

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

0

将验证过的用户记录到公共变量中,然后您可以使用“CurrentUser()”命令测试它是否与下一个表单匹配。

注:仅使用此方法如果每个用户都有自己的前端的复印件(如果所有人都共享同一个前端不使用,虽然具有较好的实用性,他们不应该)

+2

如果未使用Access安全性(将返回“Admin”)并且Environ(“username”)安全性较差,我不确定当前用户是否会有所帮助。通常推荐使用Dev Ashish的API(http://access.mvps.org/access/api/api0008.htm)。我不确定OP在问什么。 – Fionnuala

+0

@Remou我不太确定OP是否使用'Windows'用户名作为他们是否使用其他方法的安全性,否则是,API调用很好,我也很喜欢Chris的答案。 –

1

虽然API方法@Remou暗示的作品,我已经转移到这种技术

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

我相信这是比用户完成她登录后调用API