前言:
今天進行上機部分的學習,主要是宏觀邏輯的把控和對查詢語句的使用,首先我畫了個邏輯圖梳理思路,要做什么?先后順序?以及用到的知識點!
一、上機—輸入卡號
二、判斷卡號輸入是否規范
1.是否輸入?2.是否為數字?(用代碼限制輸入)
三、判斷是否注冊
查詢Student_info中的studentId
四、判斷卡內是否有錢
查詢Student_info中的cash(提示后要及時清空Text)
五、上機成功—更新數據表Online_info
查詢正在上機的人數
六、代碼展示:
PRivate Sub cmdUp_Click() Dim txtSQL As String '查詢student_info,判斷卡號是否注冊 Dim txtSQL2 As String '查詢online_info,判斷卡號是否正在上機 Dim txtSQL4 As String '查詢basicdata_info中的limitcash Dim txtSQL5 As String '將該卡上機的信息填入到online_info表中 Dim txtSQL6 As String '查詢正在上機的人數 Dim MsgText As String Dim MsgText2 As String Dim MsgText4 As String Dim MsgText5 As String Dim MsgText6 As String Dim mrc As ADODB.Recordset Dim mrc2 As ADODB.Recordset Dim mrc4 As ADODB.Recordset Dim mrc5 As ADODB.Recordset Dim mrc6 As ADODB.Recordset '判斷卡號是否為空 If Trim(txtCardID.Text) = "" Then MsgBox "請輸入卡號!", vbOKOnly + vbExclamation, "提示" txtCardID.SetFocus Exit Sub Else If IsNumeric(txtCardID.Text) = False Then MsgBox "卡號必須輸入數字!", vbOKOnly + vbExclamation, "提示" txtCardID.Text = "" txtCardID.SetFocus ',清空輸入框,焦點返回到輸入框 Exit Sub End If '查詢數據庫中基本信息表 txtSQL = "select * from student_Info where cardno= '" & Trim(txtCardID.Text) & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) '判斷該卡號是否注冊 If mrc.BOF And mrc.EOF Then MsgBox "該卡號未注冊,請先注冊!", vbOKOnly + vbExclamation, "提示" txtCardID.Text = "" txtCardID.SetFocus Exit Sub Else '判斷卡號是否已經退卡,退卡后不能上機 If Trim(mrc.Fields(10)) = "未激活" Then MsgBox "該卡已經退卡", vbOKCancel + vbInformation, "提示" txtCardID.Text = "" txtCardID.SetFocus Exit Sub Else '查詢basicdata_info中的limitcash txtSQL4 = "select * from basicdata_info" Set mrc4 = ExecuteSQL(txtSQL4, MsgText4) If Val(mrc.Fields(7)) < Val(mrc4.Fields(5)) Then MsgBox "余額不足,請充值后上機!", vbOKOnly + vbExclamation, "提示" txtCardID.Text = "" txtCardID.SetFocus Exit Sub Else '判斷卡號是否正在上機 txtSQL2 = "select * from online_info where cardno='" & Trim(txtCardID.Text) & "'" Set mrc2 = ExecuteSQL(txtSQL2, MsgText2) '查詢student_info中的cash txtSQL = "select * from student_info where cardno='" & Trim(txtCardID.Text) & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc2.EOF = False Then MsgBox "該卡正在上機!" txtSID.Text = mrc2.Fields(2) txtName.Text = mrc2.Fields(3) txtSex.Text = mrc2.Fields(5) txtDepartment = mrc.Fields(4) txtType.Text = mrc2.Fields(1) txtUpdate.Text = mrc2.Fields(6) txtUptime.Text = mrc2.Fields(7) Exit Sub Else '顯示該卡號的一些基本信息 txtSID.Text = mrc.Fields(1) txtName.Text = mrc.Fields(2) txtSex.Text = mrc.Fields(3) txtDepartment = mrc.Fields(4) txtType.Text = mrc.Fields(14) txtUpdate.Text = Date txtUptime.Text = Time End If '將上機前的余額提出來,用于下機時計算余額 txtRemain.Text = mrc.Fields(7) '將該卡上機的信息填入到online_info表中 txtSQL5 = "select * from online_info" Set mrc5 = ExecuteSQL(txtSQL5, MsgText5) mrc5.AddNew mrc5.Fields(0) = txtCardID.Text mrc5.Fields(1) = txtType.Text mrc5.Fields(2) = txtSID.Text mrc5.Fields(3) = txtName.Text mrc5.Fields(4) = txtDepartment.Text mrc5.Fields(5) = txtSex.Text mrc5.Fields(6) = Date mrc5.Fields(7) = Time mrc5.Fields(8) = Trim(Environ("computername")) mrc5.Update '查詢正在上機的人數 txtSQL6 = "select * from online_info" Set mrc6 = ExecuteSQL(txtSQL6, MsgText6) If mrc6.EOF = True Then lblnumber.Caption = 0 Else lblnumber.Caption = mrc6.RecordCount End If End If End If End If End If End Sub小結:其實上機這個點并不難,困難的是如何將各個表聯系起來,在敲之前一定先做一個宏觀的把控,先做什么后做什么,這樣做起來也會很順暢!
新聞熱點
疑難解答