前言

       今天要写的这篇博客是关于登录窗体的,虽然大家普遍都认为登录窗体简单,但是切勿眼高手低,一定要动手去做,只有自己真正做了之后才会发现自己欠考虑的地方在哪里。

主要内容

      在敲窗体代码之前建议画一张窗体逻辑图来整理思路,这样在敲的过程中才会有规可循,效率也更高效。登录窗体涉及的数据表有User表,onwork表和worklog表。下面画了一张窗体逻辑图整理了自己的想法。

机房收费系统之登录_IT


代码整理如下:

Private Sub cmdok_Click()
'用来存放SQL语句
Dim txtSQL, txtSQL1, txtSQL2 As String
'用来存放记录集对象
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim micount As Integer  一定要定义到通用里
'用来存放返回信息
Dim MsgText As String

If Trim(txtuserID.Text) = "" Or Trim(txtpassword.Text) = "" Then
   MsgBox "请将用户名和密码填写完整!", vbOKOnly, "提示"
   Exit Sub
End If

'判断用户名是否为空
If Trim(txtuserID.Text = "") Then
   MsgBox "用户名不能为空!", vbOKOnly + vbExclamation, "温馨提示"
   txtuserID.SetFocus
End If

'查询指定用户名的记录
txtSQL = "select * from User_Info where userID='" & txtuserID.Text & "'"
'执行查询语句
Set mrc = ExecuteSQL(txtSQL, MsgText)
            
If mrc.EOF = True Then
    MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "温馨提示"
    txtuserID.SetFocus
    txtuserID.Text = ""
    txtpassword.Text = ""
    Exit Sub
End If

'判断输入密码是否正确

If Trim(mrc.Fields(1)) = Trim(txtpassword.Text) Then
    ok = True
    Me.Hide
    txtuserid1 = txtuserID.Text
    frmMain.Show
    mrc.Fields(0) = Trim(txtuserID.Text)
    
    txtSQL1 = "select * from OnWork_Info"
    Set mrc1 = ExecuteSQL(txtSQL1, MsgText)

    mrc1.AddNew
    mrc1.Fields(0) = Trim(txtuserID.Text)
    mrc1.Fields(1) = mrc.Fields(2)
    mrc1.Fields(2) = Date
    mrc1.Fields(3) = Time
    mrc1.Fields(4) = "SOPHIA"
    mrc1.Update
    
Else
    MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "温馨提示"
    txtpassword.SetFocus
    txtpassword.Text = ""
    
    '登录限制次数
   micount = micount + 1
    
    If micount > 3 Then
        MsgBox "超过登录限制!", vbOKOnly + vbExclamation, "警告"
        End
    End If
    
End If
    
    '选择操作员,就隐藏管理员
    If Trim(mrc.Fields(2)) = "操作员" Then
    frmMain.Operator.Enabled = True
    frmMain.Generaluser(1).Enabled = True
    frmMain.Administrator.Enabled = False
    frmMain.Administrator.Visible = False
    End If
    
    '选择一般用户,就隐藏管理员和操作员
    If Trim(mrc.Fields(2)) = "一般用户" Then
    frmMain.Generaluser(1).Enabled = True
    frmMain.Administrator.Enabled = False
    frmMain.Administrator.Visible = False
    frmMain.Operator.Enabled = False
    frmMain.Operator.Visible = False
    End If
End Sub

需要注意的点:

1·记录登录次数的变量要定义在通用中

2·退出时要删除onwork表中的信息,有俩种方法删除onwork表中信息

方法一:

机房收费系统之登录_IT_02

代码如下:

Private Sub MDIForm_Unload(Cancel As Integer)
    Dim txtSQL, MsgText As String
    Dim mrc As ADODB.Recordset
   
   txtSQL = "delete from OnWork_Info where UserID='" & frmLogin.txtuserid1 & "'"
   Set mrc = ExecuteSQL(txtSQL, MsgText)
End Sub

方法二:

机房收费系统之登录_IT_03

代码如下:

Private Sub exit_Click()
   Dim txtSQL, MsgText As String
   Dim mrc As ADODB.Recordset
   
   txtSQL = "delete from OnWork_Info where UserID='" & frmLogin.txtuserid1 & "'"
   Set mrc = ExecuteSQL(txtSQL, MsgText)
   End
End Sub