概述
当我们敲完了登录界面后,需要解决的一个问题就是上机和下机,相比较而言上机简单很多,所用的知识几乎都是之前所学到的,判断语句以及调用数据库,稍微复杂点的就是判断余额问题。下面我就来解决这个问题。
思路
一、上机界面:(思路的来源及代码的编写都是依据与此
二、流程图:(代码编写的思路来源)
三、思考
首先要想实现功能,必须先判断卡号是否为空,只有判断完它才能进行下一步的工作;判断本身不难,但是我们在判断的时候会调用到数据库的哪张表,这个很关键。当然后续的卡号是否为数字以及是否以及注册,这些都可以称为广泛的判断要解决的问题。
其次判断此卡是否已经上机,主要目的在于不要重复;当然对应的数据库表也会发生变化,这两个问题注意了几乎问题都恩呢该考虑到。
再次是判断余额这个是本窗体的重点和难点,这个和下机的确实没法比,但是这个是基础和前提,对应的表也是不一样。
最后当然就是更新界面了,这个相对而言简单很多。
这些都是我们在敲上机之前必须意识到的,也必须考虑到,是进行后续工作的基础,代码本身不是很难,但是思路非常的关键。
重点代码
Private Sub cmdUP_Click() '上机
'定义数据集对象
Dim mrcStudent As ADODB.Recordset
Dim mrcCancelCard As ADODB.Recordset
Dim mrcOnLine As ADODB.Recordset
Dim mrcLine As ADODB.Recordset
Dim mrcBasicData As ADODB.Recordset
'定义字符串语句
Dim OnLineSQL As String, studentSQL As String, BasicDataSQL As String, LineSQL As String
'定义字符串变量,返回查询信息
Dim OnMsgText As String, StuMsgText As String, BMsgtext As String, LMsgtext As String
If Trim(txtNo.Text) = "" Then '判断是否输入了卡号
MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
txtNo.SetFocus
Exit Sub
Else
'判断输入的是否为数字
If Not IsNumeric(txtNo.Text) Then
MsgBox "卡号请输入数字!", vbOKOnly + vbExclamation, "提示"
txtNo.Text = ""
txtNo.SetFocus
Exit Sub
Else
'查student表中的sql语句
studentSQL = "select*from student_info where cardno='" & Trim(txtNo.Text) & "'"
'执行已经查到的sql语句
Set mrcStudent = ExecuteSQL(studentSQL, StuMsgText)
If mrcStudent.EOF Then '判断是否注册
MsgBox "此卡尚未注册!", vbOKOnly + vbExclamation, "提示"
txtNo.SetFocus
txtNo.Text = ""
mrcStudent.Close
Exit Sub
Else
'判断是否退卡
If mrcStudent.EOF = False And mrcStudent.Fields(10) = "未使用" Then
MsgBox "该卡号已经退卡,不能上机!", vbOKOnly + vbExclamation, "提示"
txtNo.Text = ""
txtNo.SetFocus
mrcStudent.Close
Else
BasicDataSQL = "select * from basicdata_info"
Set mrcBasicData = ExecuteSQL(BasicDataSQL, BMsgtext)
'判断余额大小
If mrcStudent.Fields(7) < mrcBasicData.Fields(5) Then
MsgBox "余额不足,请充值!", 0 + 48, "提示"
frmRecharge.Show
SetParent frmRecharge.hWnd, frmMain.hWnd
Exit Sub
Else
'查询上机与否
OnLineSQL = "select*from online_info where cardno='" & Trim(txtNo.Text) & "'"
Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgText)
'判断是否上机
If Not mrcOnLine.EOF Then
MsgBox "此卡正在上机!", 0 + 48, "提示"
Exit Sub
Else
'更新上机界面
txtStudentNo.Text = mrcStudent.Fields(1)
txtDepartment.Text = mrcStudent.Fields(4)
txtSex.Text = mrcStudent.Fields(3)
txtOnData.Text = Data
txtOnTime.Text = Time
txtType.Text = mrcStudent.Fields(14)
txtName.Text = mrcStudent.Fields(2)
txtCash.Text = mrcStudent.Fields(7)
'查询Online表
OnLineSQL = "select*from online_info where cardno='" & Trim(txtcard.Text) & "'"
Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgText)
'更新Online表
mrcOnLine.AddNew
mrcOnLine.Fields(0) = Trim(txtNo.Text)
mrcOnLine.Fields(1) = Trim(txtType.Text)
mrcOnLine.Fields(2) = Trim(txtStudentNo.Text)
mrcOnLine.Fields(3) = Trim(txtName.Text)
mrcOnLine.Fields(4) = Trim(txtDepartment.Text)
mrcOnLine.Fields(5) = Trim(txtSex.Text)
mrcOnLine.Fields(6) = Trim(txtOnData.Text)
mrcOnLine.Fields(7) = Trim(txtOnTime.Text)
'获取电脑名
mrcOnLine.Fields(8) = Trim(VBA.Environ("computername"))
mrcOnLine.Fields(9) = Date
mrcOnLine.Update
mrcOnLine.Close
'查询上机人数
OnLineSQL = "select*from online_info"
Set mrcOnLine = ExecuteSQL(OnLineSQL, OnMsgText)
'显示当前人数
If mrcOnLine.EOF = True Then
Label22.Caption = 0
Else
Label22.Caption = mrcOnLine.RecordCount
End If
Label23.Caption = "欢迎光临!"
End If
End If
End If
End If
End If
End If
End Sub
总结
在敲上机前和敲的过程中,我感觉还是有点难的,特别是在敲之前无法下手,因为我不太清楚要实现功能的流程,而且之前也没有遇到过;但是当我想清楚后通过一遍又一遍的改进自己的流程图的时候,思路渐渐的就清晰了。所有通过这样的一个过程我发现思路才是软件的核心。其次是我们需要多实践,这样建立了自己的计算机思维后很多的问题也就不在那么难了。