在机房收费系统中开始就是登陆窗体,在开始的时候如果全局观没有把握好,就会丢掉更新数据库中的数据,我刚开始就忘了更新Onwork _Info中的数据,所以要做一个窗体前,就要给它建立好自己的关系图,牵一发而动全身。下面我介绍我做登陆窗体的思路:
一、思路流程图
通过做机房收费系统,我发现它锻炼的不仅仅是数据库表之间的增删改查,更是一种编程的逻辑。在操作的过程中有一点疏忽就会导致某个表中的数据没有更新或者被删除。所以可以通过流程图来进行思路的联通,按照思路来,就不会丢一步,多一步。
二、代码的组织
Private Sub cmdOK_Click()
Dim txtSQL As String '把从数据库中查找后的数据赋值给txtSQL
Dim mrc As ADODB.Recordset '定义一个记录集的类,条件是在工程中引用。
'定以后可以用set new来创建一个该类的实例,
Dim MsgText As String 'ExecuteSQL的参数,实行完SQL语句后的弹出框,是成功还是失败
Dim mrcc As ADODB.Recordset
Dim mrcd As ADODB.Recordset
Dim a, b, c, d
On Error Resume Next
UserName = ""
b = Date
c = Time
If Trim(txtUserName.Text = "") Then 'trim将字符串拷贝
MsgBox "用户名不能为空,请重新输入用户名!", 0 + 48, "警告"
txtUserName.SetFocus
Else
txtSQL = "select * from User_Info where userID='" & txtUserName & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
a = mrc.Fields(2)
If mrc.EOF Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
GoTo d:
Else
If Trim(mrc.Fields(1)) = Trim(txtpassword.Text) Then
ok = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text) '把用户名赋值给UserName
Else
MsgBox "密码错误,请重新输入!", vbOKOnly + vbExclamation, "警告"
GoTo d:
End If
End If
End If
txtSQL = "select * from OnWork_Info where UserID='" & Trim(txtUserName.Text) & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If mrcc.EOF Then
mrcc.AddNew
mrcc.Fields(0) = Trim(txtUserName.Text)
mrcc.Fields(1) = a
mrcc.Fields(2) = b
mrcc.Fields(3) = c
mrcc.Fields(4) = Trim(VBA.Environ("computername")) '获取计算机名
mrcc.Update
Else
MsgBox "亲,您的用户处于登陆状态,检查您的账号或者联系管理员!", vbOKOnly + vbExclamation, "警告"
End
End If
mrcc.Close
txtSQL = "select * from worklog_Info "
Set mrcd = ExecuteSQL(txtSQL, MsgText)
mrcd.AddNew
mrcd.Fields(1) = UserName
mrcd.Fields(2) = a
mrcd.Fields(3) = b
mrcd.Fields(4) = c
mrcd.Fields(4) = c
mrcd.Fields(5) = Null
mrcd.Fields(6) = Null
mrcd.Fields(7) = Trim(VBA.Environ("computername")) '获取计算机名
mrcd.Fields(8) = Trim("True")
mrcd.Update
mrcd.Close
frmMain.Show
Unload Me
d:
miCount = miCount + 1
If miCount > 3 Then
End
Else
Exit Sub
End If
End Sub
这是我的代码,虽然这几句代码可以实现,但是在其中我还是发现了几个不和谐的地方:
①定义随意,没有一个系统的定义变量规律,虽然可以使用,但是如果团队合作,这将是最致命的。
②我记得我的C++老师说过,Goto语句尽量少用,我这次用了两三次,其中还是可以避免的,代码可以完善的更好。
③SQL语句用的繁琐,自己感觉可以完善。
三、小结
通过这次的练习,我发现我做流程图的能力提高了,同时还有在敲代码的过程中也提高了自己的纠错能力,发现自己不再怕bug了,哪里有bug,哪里就有我。所以只要我们多多的练习,有了bug,不要立刻找别人,先自己想一想,百度一下,可能你的下一步操作就会解决!老师总说代码如人生!从流程图的头到尾,就是人生的选择,在过程中就要看自己是选择Y还是N。