我之前学习VB的时候就非常的发憷循环结构,学了数据库之后就发憷SQL语句的嵌套。这种看似多数据变量的东西,让我在结账的汇总界面顿时头大。这两天宿舍的人都说我是被机房收费系统给魔怔了,回到宿舍休息的时候,还想着功能怎么去实现。结账的这一块的功能是我惆怅最久的。可是在我休息的时候,自己看着原版系统的汇总界面,突然茅塞顿开。心里觉得这些问题既然已经挂在那里好几次了,这一次索性就彻底解决了它。
结账界面的分析:
- 两个combol一个选项卡SSTab。
- 选项卡SSTab前四个界面都用到了MSHFlexgrid控件。
- SSTab的tab5汇总界面难度系数是这里头最高的(弱弱的说),这里头他涉及到了多张表的数据操作。
前面四个选项卡我想大家在经过了学生收费系统之后,这个就so easy 了。我重点讨论汇总这个选项卡。通过观察会发现他是对前四个选项卡的总结,而且他们很类似,都是对对象总数的操作。这样我们就解决了五个文本框了,还剩两个就是文本框内数据的操作,这个太简单不过了。
同样是数据的求和(其中包括购卡数,退卡数,充值金额,退卡金额)
这是这个汇总界面真是让我感慨万千呀!同样是数据的查找求和,看我如何用多种方法实现它!
第一种:求总的充值金额。
For i = 1 To myflexgrid2.Rows - 1 '这里是引用数组求和的方法将选项卡五的充值金额文本框的值求出来。
s = myflexgrid2.TextMatrix(i, 2)
sum = sum + s
Next i
txtaddmoney.Text = Val(sum)
mrc.Close
第二种:求总的退卡金额
'求退卡金额
txtsql = "select sum(cancelcash) from cancelcard_info as a where userid= '" & Trim(cmbid.Text) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If IsNull(mrc) Then
txttuikamoney.Text = 0
Else
txttuikamoney.Text = a
End If
mrc.Close
这两种方法都可用,但是个人推荐用后面那种,简单方便。但是,第一种的思想随处可见,因此必须掌握。
此外,我还必须的承认因为自己刚开始的对临时收费金额的错误理解,让我对多条件多张表的SQL语句操作有了进一步的理解。
' txtsql = "select * from recharge_info where cardno in(select cardno from student_info where type= '临时用户') and userid='" & Trim(cmbid.Text) & "'"
' Set mrc = ExecuteSQL(txtsql, msgtext)
'
' Do While Not mrc.EOF
' myflexgrid4.TextMatrix(myflexgrid4.Rows - 1, 4) = mrc.Fields(3)
' mrc.MoveNext
' Loop
'
' For i = 1 To myflexgrid4.Rows - 1
' s = myflexgrid4.TextMatrix(myflexgrid4.Rows - 1, 4)
' sum = sum + s
' Next i
' txttempmoney.Text = sum
'
我最先认为这个是统计临时用户的总金额,但后头和同学讨论之后发现自己想偏了。但是因为这个,我才彻底算是知道了SQL语句究竟是怎么回事了。
总结:如果同样的问题第一次遇到自己不会,无伤大雅,高高兴兴把它挂起来。多次遇到,自己不懂那就必须解决它,否则自己的工作将停滞不前。相反,若是自己解决了,心里会很有成就感,为接下来的工作提供了动力。