一,前言
一个注册就做了两三天,刚开始做的时候感觉简单,做了一个上午就能实现一些简单的功能,比如说在查找时就能调出查询学生余额的表,还有里面的基本流程。
二、思路
但是当考虑到一些细节,要结合其他的数据表做的时候就有点难了,所以的好好分析,当把他分析透彻了才做起来有方向。
从窗体可以看见,里面有四个按钮,只要把四个按钮所要实现的功能做出来就里完成不远了,但是这里有三个按钮是非常简单的,只有一行代码就可以完成。
三个按钮代码:
1.查找:在这里的查找是对学生余额进行查询,那么只有用一行代码把这个窗体调出来即可,在调的前提下“查询学生余额”必须是做完以后的。
> `Private Sub cmdInquiry_Click()
> frmStuDemCash.Show
> End Sub`
2.清空:做的时候站着用户的角度想,不管是在输入信息的过程中有没有这个信息,如果在输之前有的话还需要自己挨个删除,之前的用户也会把自己的信息泄露,这样就造成了信息的不安全,如果能一键删除信息那就给用户和开发人员都带来了很大的便利。所以在做这一步时特别简单,只需将每个text赋值为空值就行。
代码:
Private Sub cmdEmpty_Click()
txtCardNo.Text = ""
txtCash.Text = ""
txtSID.Text = ""
txtName.Text = ""
txtSex.Text = ""
txtDept.Text = ""
txtGrade.Text = ""
txtClass.Text = ""
txtState.Text = ""
txtBalance.Text = ""
txtComment.Text = ""
txtType.Text = ""
End Sub
3.存盘:这一步就比较难了,在做的过程中要考虑很多细节,还有判断很多信息,比如在注册的过程中对卡号有没有被注册给出提示,如果输入的卡号已经被注册,那么它就不能被存盘,还有对输入的信息的限制,针对所输入的信息跟基本数据设定表之间的一些关系做出提示,注册时余额不能大于充值金额,如果能大于那充值的人就亏大了。
我在这里就出现问题了,已经注册过的卡号再次注册时还能注册成功,而且能存到数据库里。
但是在做这一步时还出现了个问题:如图
原因:在数据表中有一个Use人ID的列,但是在做的时候这一列出现了无法插入数据的情况,导致报错。
解决方法:可是问题是UserID列的数据记录在User_Info表上,那么我们要想用field()=的方法添加语句。就得再调用user表。具体方法是:
txtsql = "select*from student_Info"
Set mrc = ExecuteSQL(txtsql, msgtext) ’我们需要再查询User表数据
txtsql = "select*from User_Info" 'UserID在student表中是第13列,在UserID表中是第8列
Set mrc1 = ExecuteSQL(txtsql, msgtext)
mrc.AddNew
mrc.Fields(8) = mrc2.Fields(13)
三、部分代码
判断是否输入卡号和对本框进行一些限制:
txtSQL = “select * from student_Info where cardno = '” & txtCardNo.Text & " ’ " 'and status = ‘使用’"
Set mrc = ExecuteSQL(txtSQL, MsgString)
If txtCardNo.Text = “” Then
MsgBox "请输入卡号!", 48, "警告"
Else
If Not IsNumeric(txtCardNo.Text) Then
MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"
Exit Sub
txtCardNo.SetFocus
Else
If mrc.EOF = False Then
MsgBox "此卡号已经存在,您可查询余额!", vbOKOnly + vbExclamation, "警告"
txtCardNo.SetFocus
txtCardNo.Text = ""
Exit Sub
'若卡号不存在,则输入基本信息
If Not testtxt(txtCash.Text) Then
MsgBox "请输入充值金额!", 48, "警告"
Exit Sub
End If
判断输入的充值金额不能低于余额
txtSQL = "select * from basicdata_info"
Set mrss = ExecuteSQL(txtSQL, MsgString)
If Trim(txtCash.Text) < Trim(txtBalance.Text) Then
MsgBox "充值金额不能低于余额!", vbExclamation + vbOKOnly, "警告"
txtCash.Text = ""
txtCash.SetFocus
Exit Sub
End If
全部存盘代码:
'存盘
Private Sub cmdSave_Click()
Dim strSQL As String
Dim MsgString As String
Dim Msgtext As String
Dim mrs As ADODB.Recordset
Dim mrss As ADODB.Recordset
Dim mrc As ADODB.Recordset
Dim Temp(0 To 15) As String
txtSQL = "select * from student_Info where cardno = '" & txtCardNo.Text & " ' " 'and status = '使用'"
Set mrc = ExecuteSQL(txtSQL, MsgString)
If txtCardNo.Text = "" Then
MsgBox “请输入卡号!”, 48, “警告”
Else If Not IsNumeric(txtCardNo.Text) Then MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告" Exit Sub txtCardNo.SetFocus Else If mrc.EOF = False Then MsgBox "此卡号已经存在,您可查询余额!", vbOKOnly + vbExclamation, "警告" txtCardNo.SetFocus txtCardNo.Text = "" Exit Sub '若卡号不存在,则输入基本信息 If Not testtxt(txtCash.Text) Then MsgBox "请输入充值金额!", 48, "警告" Exit Sub End If txtSQL = "select * from basicdata_info" Set mrss = ExecuteSQL(txtSQL, MsgString) If Trim(txtCash.Text) < Trim(txtBalance.Text) Then MsgBox "充值金额不能低于余额!", vbExclamation + vbOKOnly, "警告" txtCash.Text = "" txtCash.SetFocus Exit Sub End If If Trim(txtSID.Text) = "" Then MsgBox "学号不能为空!", vbExclamation + vbOKOnly, "警告" txtSID.Text = "" txtSID.SetFocus Exit Sub End If If Trim(txtName.Text) = "" Then MsgBox "姓名不能为空!", vbExclamation + vbOKOnly, "警告" txtName.Text = "" txtName.SetFocus Exit Sub End If If Trim(txtSex.Text) = "" Then MsgBox "性别不能为空!", vbExclamation + vbOKOnly, "警告" txtSex.SetFocus Exit Sub End If If Trim(txtDept.Text) = "" Then MsgBox "系别不能为空!", vbExclamation + vbOKOnly, "警告" txtDept.Text = "" txtDept.SetFocus Exit Sub End If If Trim(txtGrade.Text) = "" Then MsgBox "年级不能为空!", vbExclamation + vbOKOnly, "警告" txtGrade.Text = "" txtGrade.SetFocus Exit Sub End If If Trim(txtClass.Text) = "" Then MsgBox "班级不能为空!", vbExclamation + vbOKOnly, "警告" txtClass.Text = "" txtClass.SetFocus Exit Sub End If If Trim(txtState.Text) = "" Then MsgBox "状态不能为空!", vbExclamation + vbOKOnly, "警告" txtState.SetFocus Exit Sub End If If Trim(txtType.Text) = "" Then txtType.Text = "无" strSQL = "select * from Student_info" Set mrs = ExecuteSQL(strSQL, MsgString) mrs.AddNew mrs.Fields(0) = Trim(txtCardNo.Text) mrs.Fields(1) = Trim(txtSID.Text) mrs.Fields(2) = Trim(txtName.Text) mrs.Fields(3) = Trim(txtSex.Text) mrs.Fields(4) = Trim(txtDept.Text) mrs.Fields(5) = Trim(txtGrade.Text) mrs.Fields(6) = Trim(txtClass.Text) mrs.Fields(7) = Trim(txtCash.Text) mrs.Fields(8) = Trim(txtComment.Text) mrs.Fields(9) = UserName mrs.Fields(10) = Trim(txtState.Text) mrs.Fields(14) = Trim(txtType.Text) mrs.Fields(12) = Date mrs.Fields(13) = Time mrs.Fields(11) = "未结账" mrs.Update strSQL = "select * from BasicData_Info" Set mrss = ExecuteSQL(strSQL, MsgString) mrss.AddNew mrss.Fields(0) = Trim(mrs.Fields(0)) mrss.Fields(1) = Trim(mrs.Fields(1)) mrss.Fields(8) = Trim(mrs.Fields(2)) '我们需要再查询User表数据 txtSQL = "select*from User_Info" 'UserID在student表中是第13列,在UserID表中是第11列 Set mrc = ExecuteSQL(strSQL, MsgString) mrc.AddNew mrc.Fields(8) = mrs.Fields(13) mrs.Update mrs.Close MsgBox "注册成功!", vbInformation + vbOKOnly, "注册成功" Call cmdEmpty_Click End If End If End Sub
PS:只有细心做了,理清思路就没有想象的那么难了。