流程图
部分代码:
'判断是否添加卡号
If (txtcardNo = "") Then
MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
txtcardNo.SetFocus
Exit Sub
End If
'判断卡号是否为数字
If Not IsNumeric(txtcardNo.Text) Then
MsgBox "卡号请输入数字!", vbOKOnly + vbExclamation, "提示"
txtcardNo.Text = ""
txtcardNo.SetFocus
Exit Sub
End If
'判断此卡是否注册
txtSQL = "select * from student_Info where cardno = '" & txtcardNo.Text & "'"
Set mrcStu = ExecuteSQL(txtSQL, MsgText)
If mrcStu.EOF Then
MsgBox "此卡不存在或已停用!", vbOKOnly + vbExclamation, "提示"
txtcardNo.Text = ""
txtcardNo.SetFocus
mrcStu.Close
Exit Sub
End If
'判断此卡是否使用
txtSQL = "select * from student_info where status='" & "使用" & "' and cardno='" & txtcardNo.Text & "'"
Set mrcStu = ExecuteSQL(txtSQL, MsgText)
If mrcStu.EOF Then
MsgBox "此卡不使用!", vbOKOnly + vbExclamation, "提示"
txtcardNo.Text = ""
txtcardNo.SetFocus
mrcStu.Close
Exit Sub
End If
'判断余额情况
txtSQL = "select * from BasicData_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from student_Info where cardno = '" & txtcardNo.Text & "'"
Set mrcStu = ExecuteSQL(txtSQL, MsgText)
If Val(mrcStu.Fields(7)) < Val(mrc.Fields(5)) Then
MsgBox "余额不足,请充值后再上机", vbOKOnly + vbExclamation, "提示"
txtcardNo.Text = ""
txtcardNo.SetFocus
mrcStu.Close
Exit Sub
End If
'判断卡号是否上机
txtSQL = "select * from OnLine_Info where cardno='" & txtcardNo.Text & "'"
Set mrcOn = ExecuteSQL(txtSQL, MsgText)
If Not mrcOn.EOF Then
MsgBox "此卡正在上机!", vbOKOnly + vbExclamation, "提示"
txtStudentNO.Text = Trim(mrcOn.Fields(2))
txtDept.Text = Trim(mrcOn.Fields(4))
txtType.Text = Trim(mrcOn.Fields(1))
txtName.Text = Trim(mrcOn.Fields(2))
txtSex.Text = Trim(mrcOn.Fields(3))
Label12.Visible = True
txtOnDate.Text = Date
txtOnTime.Text = Time
'txtBalance.Text = Trim(mrcOn.Fields(7))
txtOffDate.Text = ""
txtOffTime.Text = ""
txtCTime.Text = ""
txtCTime.Text = ""
txtCMoney.Text = ""
mrcOn.Update
mrcOn.Close
Exit Sub
Else
txtSQL = "select * from student_info where cardno='" & txtcardNo.Text & "'"
Set mrcStu = ExecuteSQL(txtSQL, MsgText)
'将数据库总中的数据显示在文本框中
'txtCardNo.Text = Trim(mrc.Fields(0))
txtDept.Text = Trim(mrcStu.Fields(4))
txtType.Text = Trim(mrcStu.Fields(14))
txtStudentNO.Text = Trim(mrcStu.Fields(1))
txtName.Text = Trim(mrcStu.Fields(2))
txtSex.Text = Trim(mrcStu.Fields(3))
Label12.Visible = True
txtOnDate.Text = Date
txtOnTime.Text = Time
txtBalance.Text = Trim(mrcStu.Fields(7))
'更新online表
'Set mrc = New ADODB.Recordset
txtSQL = "select * from OnLine_info"
Set mrcOn = ExecuteSQL(txtSQL, MsgText)
mrcOn.AddNew
mrcOn.Fields(0) = Trim(txtcardNo.Text)
mrcOn.Fields(1) = Trim(txtType.Text)
mrcOn.Fields(2) = Trim(txtStudentNO.Text)
mrcOn.Fields(3) = Trim(txtName.Text)
mrcOn.Fields(4) = Trim(txtDept.Text)
mrcOn.Fields(5) = Trim(txtSex.Text)
mrcOn.Fields(6) = Trim(txtOnDate.Text)
mrcOn.Fields(7) = Trim(txtOnTime.Text)
mrcOn.Fields(8) = Trim(VBA.Environ("computername")) '将计算机名同步到数据库的相应表格中
mrcOn.Fields(9) = Date
mrcOn.Update
mrcOn.Close
'更新line表
txtSQL = "select * from Line_info"
Set mrcline = ExecuteSQL(txtSQL, MsgText)
mrcline.AddNew
mrcline.Fields(1) = Trim(txtcardNo.Text)
mrcline.Fields(2) = Trim(txtStudentNO.Text)
mrcline.Fields(3) = Trim(txtName.Text)
mrcline.Fields(4) = Trim(txtDept.Text)
mrcline.Fields(5) = Trim(txtSex.Text)
mrcline.Fields(6) = Trim(txtOnDate.Text)
mrcline.Fields(7) = Trim(txtOnTime.Text)
mrcline.Fields(14) = Trim(VBA.Environ("computername")) '将计算机名同步到数据库的相应表格中
'显示正在上机的人数
txtSQL = "select count(*) from OnLine_info "
Set mrcOn = ExecuteSQL(txtSQL, MsgText)
lblPeople.Caption = Trim(mrcOn.Fields(0))
mrcOn.Close
'
End If
PS:此处要注意更新两个表,并且将窗体中“当前上机人数+1”
总结
通过上机让我注意到软件的逻辑思维,不要只是做到感觉没有问题,而是要进入数据库去确认,若是数据库没有更新,这个时候就要看看自己是不是出现了逻辑错误,此时用断点+逐语句调试会更好一点,可以更好的发现所写代码中那些语句有问题。