大家好,又见面了,我是你们的朋友全栈君。
今天第一次验收,却出现了很多问题,主要就是在涉及到钱的问题上就比较混乱,出现这个问题的原因也就是因为当时思路没有理清楚就着急实现功能。出来混迟早要还的,今天自己又再一次验证了这个理论。已经退了的卡,为什么还能上机,而且卡里还有钱?出现这种情况自己也大吃了一惊,后来又重新理了一遍,现在应该就没有问题了。
下面就谈谈怎么退卡:首先是进行一系列的判断,判断卡号是否为空,是否为数字,接着进行查询,然后再进行判断,判断卡号是否存在,是否已经退卡,是否正在上机,最后就是对数据的进行操作,更新student_Info表中的status字段为“不使用”,cash=0,并将相应的student_Info表中的部分信息插入到CancelCard_Info表中。
'判断卡号是否为空
If Not Testtxt(txtCardno.Text) Then
MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
txtCardno.SetFocus
Exit Sub
End If
'新建查询
strSQL = "select status,studentNo,Cash,UserID,Ischeck from student_Info where cardno = '" & txtCardno.Text & "'"
Set mrc = ExecuteSQL(strSQL, msgText)
studentNo = Trim(mrc.Fields(1))
Cash = mrc.Fields(2)
UserID = mrc.Fields(3)
Ischeck = mrc.Fields(4)
'判断是否注册
If mrc.EOF Then
MsgBox "没有该卡号!", vbOKOnly + vbExclamation, "提示"
txtCardno.SetFocus
txtCardno.Text = ""
Exit Sub
'判断是否退卡
ElseIf Trim(mrc.Fields(0)) = Trim("不使用") Then
MsgBox "此卡已退卡!", 48, "提示"
txtCardno.SetFocus
txtCardno.Text = ""
Exit Sub
Else
'判断是否正在上机
strSQL = "select * from Online_Info where cardno= '" & txtCardno.Text & "'"
Set mrcO = ExecuteSQL(strSQL, msgText)
If Not mrcO.EOF Then
MsgBox "此卡正在上机,请先下机再退卡!", 48, "提示"
txtCardno.SetFocus
txtCardno.Text = ""
Exit Sub
End If
'更新student_Info表
strSQL = "update student_Info set status = '" & "不使用" & "'" & "where cardno = '" & txtCardno.Text & "'"
Set mrc2 = ExecuteSQL(strSQL, msgText)
strSQL = "update student_Info set cash= '" & Val(0) & "'" & "where cardno = '" & txtCardno.Text & "'"
Set mrcS = ExecuteSQL(strSQL, msgText)
'把数据插入到CancelCard_Info表
strSQL = "select * from CancelCard_Info"
Set mrcC = ExecuteSQL(strSQL, msgText)
mrcC.AddNew
mrcC.Fields(0) = studentNo
mrcC.Fields(1) = txtCardno.Text
mrcC.Fields(2) = Cash
mrcC.Fields(3) = Date
mrcC.Fields(4) = Time
mrcC.Fields(5) = UserID
mrcC.Fields(6) = Ischeck
mrcC.Update
mrcC.Close
txtReturnAmount.Text = Cash
txtMessage.Text = "退款卡号:" & txtCardno.Text & vbCrLf & vbCrLf & _
"应退款金额:" & Cash & vbCrLf & vbCrLf & _
"退款日期:" & CancelDate & vbCrLf & vbCrLf & _
"退款时间:" & CancelTime & vbCrLf & vbCrLf & _
"办理退卡老师:" & UserID
MsgBox "退卡成功!", vbOKOnly + vbExclamation, "提示"
End If
最后在往CancelCard_Info表中插入数据是,也可以使用 insert 语句
strSQL = "insert into CancelCard_Info values('" & studentNo & "','" & txtCardno.Text & "','" & Cash & "','" & Date & _
"','" & Time & "','" & UserID & "','" & Ischeck & "')"
Call ExecuteSQL(strSQL, msgText)
两种方法实现的功能是一样的,但是我们因为敲学生的问题,一开始都比较习惯用select语句,但是insert语句用起来也挺简单的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105790.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...