先上一张导图
学生上机功能是我们用到多个表的第一个功能,在学生上机中我们要思考的东西有很多,这也是真正在功能上为用户考虑,上机需要涉及到四个表的运用,需要判断的东西也就比登录窗体多一点,大家在参考的时候灵活运用,多加一些自己的想法
上机代码:
```vbnet
Private Sub Command1_Click()
Dim Txtsql As String
Dim Msgtext As String
Dim Mrc As ADODB.Recordset
Dim Mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim mrc3 As ADODB.Recordset
Dim Mrc4 As ADODB.Recordset
'mrc连接student表
Txtsql = "select * from student_info where cardno='" & Trim(txtcardNo.Text) & "'"
Set Mrc = ExecuteSQL(Txtsql, Msgtext)
'mrc1连接online表
Txtsql = "select * from online_info where cardno='" & Trim(txtcardNo.Text) & "'"
Set Mrc1 = ExecuteSQL(Txtsql, Msgtext)
'mrc2连接line表
Txtsql = "select * from line_info where cardno='" & Trim(txtcardNo.Text) & "'"
Set mrc2 = ExecuteSQL(Txtsql, Msgtext)
'mrc3连接basicdata表
Txtsql = "select * from basicdata_info"
Set mrc3 = ExecuteSQL(Txtsql, Msgtext)
If Trim(txtcardNo.Text) = "" Then
MsgBox "卡号不能为空!", 48, "警告"
txtcardNo.SetFocus
Exit Sub
End If
If Not IsNumeric(Trim(txtcardNo.Text)) Then
MsgBox "请输入数字!", 48, "警告"
txtcardNo.Text = ""
txtcardNo.SetFocus
Exit Sub
End If
If Mrc.EOF = True Then
MsgBox "此卡未注册", 0 + 48, "系统提示"
txtcardNo.SetFocus
txtcardNo.Text = ""
Exit Sub
End If
If Val(Mrc.Fields(7)) < Val(mrc3.Fields(5)) Then
MsgBox "余额不足,请先充值!", 48, "警告"
txtcardNo.SetFocus
Exit Sub
End If
If Mrc1.EOF = False Then
MsgBox "此卡正在上机,不能重复登录!", 48, "警告"
lblOffDate.Text = Mrc1.Fields(7)
Exit Sub
Else
'更新Online_info表
With Mrc1
.AddNew
.Fields(0) = Trim(txtcardNo.Text)
.Fields(1) = Trim(txtType.Text)
.Fields(2) = Trim(txtsid.Text)
.Fields(3) = Trim(txtname.Text)
.Fields(4) = Trim(txtdepe.Text)
.Fields(5) = Trim(txtSex.Text)
.Fields(6) = Trim(lblOnDate.Text)
.Fields(7) = Trim(lblOffDate.Text)
.Fields(8) = VBA.Environ("computername")
.Fields(9) = Now
.Update
End With
'更新line_info表
With mrc2
.AddNew
.Fields(1) = Trim(txtcardNo.Text)
.Fields(2) = Trim(txtsid.Text)
.Fields(3) = Trim(txtname.Text)
.Fields(4) = Trim(txtdepe.Text)
.Fields(5) = Trim(txtSex.Text)
.Fields(6) = lblOnDate.Text
.Fields(7) = Format(lblOnTime.Text, "yyyy-mm-dd")
.Fields(8) = Null
.Fields(9) = Null
.Fields(10) = Null
.Fields(11) = "0.0"
.Fields(12) = Mrc.Fields(7)
.Fields(13) = "正常上机"
.Fields(14) = VBA.Environ("computername")
.Update
End With
End If
If Mrc.EOF = False Then
MsgBox "上机成功"
txtsid.Text = Mrc.Fields(1)
txtname.Text = Mrc.Fields(2)
txtSex.Text = Mrc.Fields(3)
txtdepe.Text = Mrc.Fields(4)
txtType.Text = Mrc.Fields(14)
lblOnDate.Text = Format(Date, "yyyy-mm-dd")
lblOffDate.Text = Time
lblbalance.Text = Mrc.Fields(7)
End If
Txtsql = "select * from online_info"
Set Mrc4 = ExecuteSQL(Txtsql, Msgtext)
Label16.Caption = "当前上机人数:" & Mrc4.RecordCount
End Sub