检查一个卡号能否使用,需要检查以下几点:
只有这几点同时满足,此卡才能正常上机。
1、当然不用多说,不输入卡号当然不能使用。
2、与要求的最小余额进行比较,小于最小余额则禁止上机使用
3、此卡没用注册,注册表中没有这条记录
4、次卡正在处于上机状态,提示正在上机,一卡禁止重复上机使用
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面的这段代码仅为借鉴使用,由于当初刚做,所以代码不规范。
Private Sub Command1_Click()
Dim mrc As ADODB.Recordset ' adodb是动态数据链接对象 Recordset 是adodb的一个子类 (数据集,数据表在内存的映射)
Dim txtsql As String
Dim msgtext As String '声明定义
Dim mrc1 As ADODB.Recordset '链接数据库
Dim mrc2 As ADODB.Recordset
Dim mrc3 As ADODB.Recordset
Dim mrc4 As ADODB.Recordset
'判断卡号是否为空
If Testtxt(cardno.Text) = False Then
MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
cardno.SetFocus
Exit Sub
End If
Set mrc1 = New ADODB.Recordset
txtsql = "select * from student_Info where cardno='" & cardno.Text & "'"
Set mrc1 = ExecuteSQL(txtsql, msgtext)
'判断该卡是否存在
If mrc1.EOF And mrc1.Bof Then
MsgBox "该卡号未注册!", vbOKOnly + vbExclamation, "提示"
cardno.Text = ""
cardno.SetFocus
Exit Sub
Else
'判断余额是否充足
txtsql = "select * from BasicData_info"
Set mrc2 = ExecuteSQL(txtsql, msgtext)
If Trim(mrc1.Fields(14)) = "固定用户" Then
If mrc1.Fields(7) < mrc2.Fields(5) Then
MsgBox "余额只有" & mrc1.Fields(7) & "元,余额不足,请充值后再上机!", 0 + 1 + 48, "提示"
cardno.Text = ""
Call frmrecharge.Show
mrc1.Close
Exit Sub
End If
Else
If mrc1.Fields(7) < mrc2.Fields(5) Then
MsgBox "您是临时用户,余额为" & mrc1.Fields(7) & "元,余额不足,请充值后再上机", 0 + 48, "提示"
cardno.Text = ""
mrc1.Close
Exit Sub
End If
End If
'' 判断该卡号是否正在上机
txtsql = "select * from OnLine_Info where cardno='" & cardno.Text & "'"
Set mrc4 = ExecuteSQL(txtsql, msgtext)
If mrc4.EOF = False Then
MsgBox "该卡正在上机!", vbOKOnly + 48, "提示"
cardno.Text = ""
cardno.SetFocus
Exit Sub
Else
studentNo.Text = Trim(mrc1.Fields(1)) ' Trim 的作用是返回 Variant (String),其中包含指定字符串的拷贝,没有前导空白 (LTrim)、尾随空白 (RTrim) 或前导和尾随空白 (Trim)。
studentName.Text = Trim(mrc1.Fields(2)) 'LTrim 及 RTrim 函数将某字符串的开头及结尾的空格全部去除。只使用 Trim 函数也可以做到将两头空格全部去除。
cardtype.Text = Trim(mrc1.Fields(14))
sex.Text = Trim(mrc1.Fields(3)) '一个数据库中的一个表的第几个字段
department.Text = Trim(mrc1.Fields(4)) '系别从数据库中的表中的第几个字段 来赋值
ondate.Text = Date
ontime.Text = Time
leastmoney.Text = Trim(mrc1.Fields(7))
'将上机的信息添加到OnLine_Info表中
Set mrc3 = New ADODB.Recordset
txtsql = "select * from OnLine_Info "
Set mrc3 = ExecuteSQL(txtsql, msgtext)
mrc3.AddNew
mrc3.Fields(0) = Trim(cardno.Text)
mrc3.Fields(1) = Trim(cardtype.Text)
mrc3.Fields(2) = Trim(studentNo.Text)
mrc3.Fields(3) = Trim(studentName.Text)
mrc3.Fields(4) = Trim(department.Text)
mrc3.Fields(5) = Trim(sex.Text)
mrc3.Fields(6) = Trim(ondate.Text)
mrc3.Fields(7) = Trim(ontime.Text)
mrc3.Fields(8) = Trim(Winsock1.LocalHostName)
mrc3.Update
Label16.Caption = mrc3.RecordCount
mrc3.Update
mrc3.Close
End If
End If
End Sub
上机用了三个表中的内容 分别是student_info 、BasicData_info、 OnLine_Info 。所以做上机的时候一定要先搞清楚数据库中每个之间的联系。