检查一个卡号能否使用,需要检查以下几点:
只有这几点同时满足,此卡才能正常上机。
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 。所以做上机的时候一定要先搞清楚数据库中每个之间的联系。