初版流程图,不足之处,还望指出。
一:流程图
二:vbCrLf:
①
字符串常数,即“Chr(13) & Chr(10)”(回车符与换行符连接在一起),是
换行
的意思。
②
Text1.Text = "第一行" & vbCrLf & "第二行"
注意:要在TextBox控件中换行,需先将
MultiLine
属性设置为
true
这里是采用一个text控件来展示我们所要显示的信息内容,但是内容分为好几行,那么如何解决让它乖乖的按照自己所想的分为几行或者什么时候换行呢? 这里就用到了vbCrLf这样一个好用的工具。
大家有兴趣也可以查一下,其实小编第一次做的时候用了一种很笨的方法,就是将所有的内容全部用了不同的控件来代表,当然了,写代码的时候也写了一堆,分别对每一个都写了代码,这样的效率其实是不高的。
就像这样,足足的把每一个控件都设置了一遍。所以来客要不要采用一个简单有效率的办法呢?
三:OLE错误:
引起这个问题的原因可能就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。
例如自动编号字段的就不应该指定值;限制50个字符的字段你就不应该提交多于50个字符的字符串
当小编运行的时候出了错,将鼠标放在mrc时,显示的内容是“7 ”
我想可能是里面的空也占了字段,所以添加了trim之后就可以运行了。
四:
发现重复退了好几次卡,依旧是可以退卡,那么就可以对它进行限制,
已经退卡的就不能再次退了
五:最后要将信息更新到表student中,因为status列由使用,变成了不使用。代码如下:
'更新到student表
txtSQL = "update student_info set status = '" & "不使用" & "'" & "where cardno = '" & txtcardno.Text & "'"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
将退卡记录添加到cancel表中,并将其显示内容清空。代码如下:
'将数据添加到cancel card表种
txtSQL = "select * from cancelcard_info"
Set mrc3 = ExecuteSQL(txtSQL, MsgText)
mrc3.AddNew
mrc3.Fields(1) = txtcardno.Text
mrc3.Fields(2) = mrc.Fields(7)
mrc3.Fields(3) = Date
mrc3.Fields(4) = Time
mrc3.Fields(0) = Trim(mrc.Fields(1))
mrc3.Fields(5) = mrc.Fields(10)
mrc3.Fields(6) = "未结账"
mrc3.Update
mrc3.Close
MsgBox "退卡成功", vbOKOnly, "恭喜"
txtcardno.Text = ""
txtexplain.Text = ""
六:退卡窗体整体代码展示:
Private Sub cmdok_Click()
Dim txtSQL As String
Dim MsgText As String
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim mrc3 As ADODB.Recordset
'判断卡号是否为空
If Trim(txtcardno.Text = "") Then
MsgBox "请输入卡号!", 48, "提示"
txtcardno.SetFocus
Else
'卡号为数字
If Not IsNumeric(txtcardno.Text) Then
MsgBox "请输入数字!", 48, "提示"
txtcardno.SetFocus
Else
'判断卡号是否存在
txtSQL = "select * from student_info where cardno = '" & txtcardno.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Then
MsgBox "卡号不存在或已经注销,请重新输入卡号!", 48, "提示"
txtcardno.SetFocus
txtcardno.Text = ""
'已经退卡
ElseIf Trim(mrc.Fields(10)) = Trim("不使用") Then
MsgBox "此卡已退!", 48, "提示"
txtcardno.SetFocus
txtcardno.Text = ""
Else
'判断是否正在上机
txtSQL = "select * from online_info where cardno = '" & txtcardno.Text & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
If Not mrc1.EOF Then
MsgBox "此卡正在上机,请先下机再退卡!", 48, "提示"
txtcardno.SetFocus
txtcardno.Text = ""
Else
'显示信息-----在一个文本框如何显示多行数据?vbcrlf字符串常数
txtexplain.Text = "" & vbCrLf & vbCrLf & _
"充值卡号:" & txtcardno.Text & vbCrLf & vbCrLf & _
"退款金额:" & mrc.Fields(7) & vbCrLf & vbCrLf & _
"退卡日期:" & Date & vbCrLf & vbCrLf & _
"退卡时间:" & Time & vbCrLf & vbCrLf & _
"办理老师:" & mrc.Fields(9)
'更新到student表
txtSQL = "update student_info set status = '" & "不使用" & "'" & "where cardno = '" & txtcardno.Text & "'"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
'将数据添加到cancel card表种
txtSQL = "select * from cancelcard_info"
Set mrc3 = ExecuteSQL(txtSQL, MsgText)
mrc3.AddNew
mrc3.Fields(1) = txtcardno.Text
mrc3.Fields(2) = mrc.Fields(7)
mrc3.Fields(3) = Date
mrc3.Fields(4) = Time
mrc3.Fields(0) = Trim(mrc.Fields(1))
mrc3.Fields(5) = mrc.Fields(10)
mrc3.Fields(6) = "未结账"
mrc3.Update
mrc3.Close
MsgBox "退卡成功", vbOKOnly, "恭喜"
txtcardno.Text = ""
txtexplain.Text = ""
自己亲自研究出来的窗体到底不一样,更有一种亲切感。
还有一个感悟:看了别人设计出来的东西,很容易将自己置于迷地之中,就像你听了别人写出来的曲子,你的每一句旋律之中就会有别人作品的影子。所以乱世之中,一定要保持自己独有的想法。