设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2936|回复: 4

[Access本身] 自己做的登录界面代码

[复制链接]

点击这里给我发消息

发表于 2021-4-9 23:56:44 | 显示全部楼层 |阅读模式
ption Compare Database

Dim i As Integer


'方法一=============================================================================
'Private Sub DL_Click()
'If YHM <> "" And mm <> "" Then
'    If Me.mm = DLookup("password", "User_information", "user='" & Me.YHM & "'") Then
'        MsgBox "登录成功"
'        DoCmd.Close acForm, Me.Name
'        DoCmd.OpenForm "home", acNormal
'    Else
'        MsgBox "账号或密码错误,请重新输入"
'    End If
'Else
'MsgBox "请输入账号和密码"
'End If
'End Sub
'方法二==============================================================================
Private Sub DL_Click()
    Dim db1 As DAO.Database
    Dim rs1 As DAO.Recordset
    Set db1 = CurrentDb()
    Dim SQL_str1 As String
    SQL_str1 = "select user,password,mmsd,mmcz from User_information where user='" & YHM & "'"
    Set rs1 = db1.OpenRecordset(SQL_str1, dbOpenDynaset)

If Me!YHM = Null Then
    MsgBox "用户名不能为空"
    YHM.SetFocus
    Exit Sub
ElseIf Me!MM = Null Then
    MsgBox "请用户密码不能为空"
    MM.SetFocus
    Exit Sub
ElseIf rs1.EOF = True Then
    MsgBox "账户不存在!"
    Exit Sub
Else
    rs1.MoveFirst
    If rs1.Fields(1) = MM Then
    userid = Me!YHM
        If 1 = rs1!mmsd Then
            MsgBox "此账户已被锁定!请联系管理员解锁"
            Exit Sub
        ElseIf 1 = rs1!mmcz Then
            DoCmd.Close acForm, Me.Name
            DoCmd.OpenForm "Password_reset", acNormal
            Exit Sub
        Else
            MsgBox "登录成功"
            DoCmd.Close acForm, Me.Name
            DoCmd.OpenForm "Home", acNormal
        End If
        
    Else
        If i < 2 Then
            i = i + 1
            MsgBox "密码不正确!你还有" & 3 - i & "次机会"
        Else
            MsgBox "密码输入错误3次,已锁定!请联系管理员解锁"
            rs1.Edit
            rs1!mmsd = 1
            rs1.Update
            Exit Sub
        End If
    End If
End If

rs1.Close
Set rs1 = Nothing
db1.Close
Set sb1 = Nothing
Exit Sub
End Sub
Private Sub Form_Load()
Me!YHM.SetFocus
'Me!YHM.Value = userhc
End Sub



Private Sub TC_Click()
    DoCmd.Close
End Sub

发表于 2021-4-11 17:03:42 | 显示全部楼层
1、出于节省代码的考虑,判断用户名、密码是否为空,一般可以合起来提示“用户名或密码为空”。
2、此外,是否需要关闭登陆窗体,值得商榷。毕竟后面很多操作可能需要读取用户名(比如,有些操作是基于用户所在的分组而授权的)。我一般是隐藏登录窗体,后面的权限分配或者数据源处理则基于该用户而定。当然,也可以用公共变量来存放这些数据。但代码量会增加不少,此外,是否会因网络问题而导致一些意外也不好说。

点击这里给我发消息

发表于 2021-5-28 12:09:47 | 显示全部楼层
学习学习
回复

使用道具 举报

点击这里给我发消息

发表于 2021-10-20 10:36:08 | 显示全部楼层
学习
回复

使用道具 举报

发表于 2021-11-13 10:50:24 | 显示全部楼层

学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-18 16:57 , Processed in 0.136694 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表