前言
今天要写的这篇博客是关于登录窗体的,虽然大家普遍都认为登录窗体简单,但是切勿眼高手低,一定要动手去做,只有自己真正做了之后才会发现自己欠考虑的地方在哪里。
主要内容
在敲窗体代码之前建议画一张窗体逻辑图来整理思路,这样在敲的过程中才会有规可循,效率也更高效。登录窗体涉及的数据表有User表,onwork表和worklog表。下面画了一张窗体逻辑图整理了自己的想法。
代码整理如下:
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表中信息
方法一:
代码如下:
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
方法二:
代码如下:
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