您的位置:首页 > 数据库

【第一次机房收费系统】学生下机

2018-01-20 11:43 295 查看
在敲普通用户学生上机装态查看的时候,里面有几个点大家需要注意一下。



查询基本没什么问题,运用的是组合查询的相关知识。点此查看组合查询知识

显示全部前面也提到过,运用代码实现将数据库中的信息调用到MSHFlexgrid控件中。

其实最好玩的还是上机管理这部分,先不管这个功能放在这里合适不合适,反正学到了就是自己的。

这两个功能非常类似,唯一区别就是一个全部下线,一个选中下线。

还是那句话,先把思路理清,后面的就不是事了。

以所有学生下线为例。



涉及到的表:online student line basicdata

展示部分代码。

'定义所需变量'
Dim OnlineSQL As String, LineSQL As String, BasicDataSQL As String, studentSQL As String
Dim mrcBasicData As ADODB.Recordset
Dim mrcLine As ADODB.Recordset
Dim mrcStudent As ADODB.Recordset
Dim mrcOnline As ADODB.Recordset

Dim OnlineMsgtext As String, LineMsgtext As String, BasicdataMsgtext As String, Studentmsgtext As String
Dim intLineTime As Integer
Dim intConsumeTime As Integer
Dim curConsume As Currency
Dim curBalance As Currency
Dim CostDate As Integer
Dim CostTime As Integer
Dim a As Integer
Dim b As Integer

'删除online表中的信息,让所有的学生下线'
OnlineSQL = "select * from online_Info "
Set mrcOnline = ExecuteSQL(OnlineSQL, OnlineMsgtext)
'如果没有人上线,提示'
If mrcOnline.RecordCount = 0 Then
MsgBox "没有学生上线!", vbOKOnly + vbInformation, "苏轼提醒您"
Exit Sub
End If

a = myFlexGrid.rows - 1
If myFlexGrid.rows = 0 Then
MsgBox "没有学生上线!", vbOKOnly + vbInformation, "苏轼提醒您"
Exit Sub
End If
myFlexGrid.rows = 1
For b = a To 1 Step -1
'从basicdata表中读取数据'
BasicDataSQL = "select * from basicdata_Info"
Set mrcBasicData = ExecuteSQL(BasicDataSQL, BasicdataMsgtext)

'从student表中读取数据'
studentSQL = "select * from student_Info"
Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)

'从line表中读取数据'
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)

'从online表中读取数据'
OnlineSQL = "select * from online_Info"
Set mrcOnline = ExecuteSQL(OnlineSQL, OnlineMsgtext)

CostTime = DateDiff("n", Trim(Hour(Time)), Trim(mrcOnline!OnTime))
CostDate = DateDiff("n", Trim(Date), Trim(mrcOnline!OnDate))
intLineTime = Format(Str(Val(CostTime) + Val(CostDate)))

'判断实际在线时间是否小于准备时间,若小于则消费时间为0'
If intLineTime < mrcBasicData!prepareTime Then
intConsumeTime = 0
'判断实际在线时间是否小于最低消费时间,若小于,则消费时间为最低消费时间'
ElseIf intLineTime < mrcBasicData!leastTime Then
intConsumeTime = mrcBasicData!leastTime
Else
intConsumeTime = Round(intLineTime / mrcBasicData!unitTime) * mrcBasicData!unitTime  'round()函数为四舍五入函数'
End If

'计算消费金额(消费金额=消费时间/30*用户类型的半小时费用)'
'固定用户(为什么要除以30) 最小计费单位'
If Trim(mrcStudent.Fields(14)) = "固定用户" Then
curConsume = intConsumeTime / 30 * mrcBasicData!Rate
Else
curConsume = intConsumeTime / 30 * mrcBasicData!tmpRate
End If

'计算余额(账户余额=原账户余额-消费金额)'
curBalance = mrcStudent!cash - curConsume

'更新学生信息表的余额'
mrcStudent.Fields(7) = curBalance
mrcStudent.Update
mrcStudent.Close

'更新上机记录表(line表)'
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
mrcLine.AddNew
'更新上机记录表(line表)'
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
mrcLine.AddNew
mrcLine.Fields(1) = Trim(mrcOnline!cardno)
……
mrcLine.Fields(13) = "强制下机"
mrcLine.Fields(14) = Trim(Environ("computername"))
mrcLine.Update

'删除在线表中的信息'
OnlineSQL = "select * from online_Info"
Set mrcOnline = ExecuteSQL(OnlineSQL, OnlineMsgtext)
mrcOnline.Delete
mrcOnline.Update

Next b
MsgBox "所有学生已下线!", vbOKOnly + vbInformation, "苏轼提醒您"


选中学生下机多了一个选择学生的过程,也很简单。

'选中 删除'
myFlexGrid.RemoveItem myFlexGrid.RowSel


弄完这个,学生下机就搞定了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库