我有一个我正在使用的Access数据库,它有一个简单的登录系统,包含一个下拉(组合)菜单,用于选择用户名,密码字段和用户表。
在users表中,我存储了用户名,密码和所有用户的名字。我设法让我的登录表单正常工作,但我希望用户的名字显示在下一个表单的文本框中。
我设法获取了用户的ID号,并将其显示在文本框中,但我无法获得该用户的名字。
有没有人知道在文本框中显示用户名字的简单方法,请记住,我希望显示用户名字的几种表格?
由于
答案 0 :(得分:1)
正如您的描述所说您使用的是ComboBox,我确信RowSource会是。
SELECT ID, userNameField
FROM EmpAuth;
ComboBox属性是Bound Column - 1,Column Count - 2,Column Widths - 0cm; 2.5cm(类似这样,但肯定是0cm)。现在您要做的就是进行以下更改:RowSource:
SELECT ID, userNameField, firstNameField
FROM EmpAuth;
ComboBox属性为Bound Column - 1,Column Count - 3,Column Widths - 0cm; 2.5cm **; 0cm **
然后,你可以简单地使用OpenArgs方法,你可以传递ComboBoxes第3列。比如,
If Me.password.Value = DLookup("password", "EmpAuth", _
"[ID]=" & Me.username.Value) Then
ID = Me.username.Value
DoCmd.OpenForm "POSMenu", OpenArgs:=Me.username.Column(2)
'Close logon form and open splash screen
DoCmd.Close acForm, "AuthenticationService", acSaveNo
Else
MsgBox.............
然后最后在第二个表格的On Load事件中你可以使用。
Private Sub Form_Load()
If Len(Me.OpenArgs & vbNullString) > 0 Then _
Me.yourTextBoxName = Me.OpenArgs
End Sub
希望这有帮助。
答案 1 :(得分:1)
如果您打算以多种形式使用用户名信息,也许您可以考虑使用会话变量来访问信息。它比将对象作为参数从对象传递给对象要简洁一些。
'On the login page,upon confirming the login is correct,
'Initialise session variables
TempVars.RemoveAll 'Destroy any previous Session
'Retrieve the username from the table
UserName = Dlookup("Usernamecol","UsersTable","UserID=" & SelectedUSerID
'Load the retrieved username into a global session variable
TempVars.Add "GlbUserName", UserName
'Use this whenever you want to show the user name
LoggedInUser = TempVars![GlbUserName]
Me.txtUserName = LoggedInUser
'or
Me.lblUserName.caption = LoggedInUser