Vba MSAccess登录表单
我创建了一个登录表单,但意识到我可以不用输入密码登录。只有一个用户名。我应该怎么做才能解决这个问题Vba MSAccess登录表单,vba,ms-access,Vba,Ms Access,我创建了一个登录表单,但意识到我可以不用输入密码登录。只有一个用户名。我应该怎么做才能解决这个问题 Option Compare Database Option Explicit Private Sub cmdlogin_Click() Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("Account Details", dbOpenSnapshot, dbReadOnly) rs.Find
Option Compare Database
Option Explicit
Private Sub cmdlogin_Click()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Account Details", dbOpenSnapshot, dbReadOnly)
rs.FindFirst "UserName='" & Me.txtusername & "' "
Me.lblusername.Visible = False
If rs.NoMatch = True Then
Me.lblusername.Visible = True
Me.txtusername.SetFocus
Exit Sub
End If
Me.lblpassword.Visible = False
If rs!Password <> Me.txtpassword Then
Me.lblpassword.Visible = True
Me.txtpassword.SetFocus
Exit Sub
End If
DoCmd.OpenForm "Dashboard"
DoCmd.Close acForm, Me.Name
End Sub
选项比较数据库
选项显式
私有子cmdlogin_Click()
将遥感器作为记录集
Set rs=CurrentDb.OpenRecordset(“帐户详细信息”,dbOpenSnapshot,dbReadOnly)
rs.FindFirst“UserName=”&Me.txtusername&“
Me.lblusername.Visible=False
如果rs.NoMatch=True,则
Me.lblusername.Visible=真
Me.txtusername.SetFocus
出口接头
如果结束
Me.lblpassword.Visible=False
如果是的话!密码Me.txtpassword然后
Me.lblpassword.Visible=True
Me.txtpassword.SetFocus
出口接头
如果结束
DoCmd.OpenForm“仪表板”
DoCmd.Close acForm,Me.Name
端接头
如果txtsername或txtpassword为Null,则条件将失败。尝试:
rs.FindFirst“UserName=”&Nz(Me.txtusername,”&“””
If-rs!密码Nz(Me.txtpassword,“”),然后
或者考虑:
Dim rs As Recordset
With Me
.lblusername.Visible = False
.lblpassword.Visible = False
If IsNull(.txtusername) Or IsNull(.txtpassword) Then
MsgBox "Enter username or password"
Else
Set rs = CurrentDb.OpenRecordset("SELECT UserName, Password FROM [Account Details] " & _
"WHERE UserName='" & .txtusername & "'", dbOpenSnapshot, dbReadOnly)
If Not rs.BOF And Not rs.EOF Then
If rs!Password <> .txtpassword Then
.lblpassword.Visible = True
.txtpassword.SetFocus
Else
DoCmd.OpenForm "Dashboard"
DoCmd.Close acForm, .Name
End If
Else
.lblusername.Visible = True
.txtusername.SetFocus
End If
End If
End With
Dim rs作为记录集
和我一起
.lblusername.Visible=False
.lblpassword.Visible=False
如果为IsNull(.txtsername)或IsNull(.txtspassword),则
MsgBox“输入用户名或密码”
其他的
Set rs=CurrentDb.OpenRecordset(“从[帐户详细信息]中选择用户名、密码”&_
“其中用户名=”&.txtusername&“”,dbOpenSnapshot,dbReadOnly)
如果不是rs.BOF和rs.EOF,则
如果是的话!密码。然后是TXT密码
.lblpassword.Visible=True
.txtpassword.SetFocus
其他的
DoCmd.OpenForm“仪表板”
DoCmd.Close acForm.Name
如果结束
其他的
.lblusername.Visible=True
.txtusername.SetFocus
如果结束
如果结束
以
不要尝试在VBA中建立登录系统。从安全的角度来看,绕开它是微不足道的,从用户的角度来看,这是不必要的麻烦。用户已经登录到windows,我们知道您将无法拥有比此更安全的登录系统。只需从Windows中提取用户名,然后使用它执行任何特定于用户的操作。示例:userName=Environ(“userName”)
基本上同意@HackSlash。我使用Environ提取用户名,并使用它从Users表中获取记录。若找不到用户,我就假定他们是新的有效用户,并添加一条记录。我们在一些记录中保存了用户的姓名首字母,所以要求新用户提供姓名首字母作为记录(非常小的办公室)。他们再也看不到“登录”表单了。用户表定义了访问某些表单和/或按钮的用户权限级别。