机房收费系统首次让小编接触到了“组合查询”。到现在为止,“组合查询”的类型,大概接触到了两种方式,一是单一表多个字段连接的查询;二是多个表的连接查询。机房收费系统中,组合查询占了很大的比重,在做这部分的内容时,也是遇到了不少的问题。
一、组合框列表中字段都是数据库中相应字段的中文名字,直接加载,数据库能查询到相应数据吗?
答案是否定的。那么,如何才能让数据库认识这些中文字段呢?这就需要一个转化的过程了。如下:
Public Function FiledName(a As String) As String
Select Case a
Case "卡号"
FiledName = "cardno"
Case "姓名"
FiledName = "studentNo"
Case "上机日期"
FiledName = "ondate"
Case "上机时间"
FiledName = "ontime"
Case "下机日期"
FiledName = "offdate"
End Select
End Function
当我们在查询下拉列表中的字段时,在查询语句中用上述相应的转化就可以查到我们需要的数据了,这也就是一个等价转化的过程。
二、这么多重复的字段,在敲代码时,复制粘贴可以吗?
答案是否定的。虽然能得到想要的效果,但是出现很多同样的代码片段就会造成代码冗余了。我们要在能实现基本功能的时候,考虑到系统的性能。相同内容的添加,我们只要用控件组,用循环就很好的解决了代码冗余问题。如下:
For Index = 0 To 2
With combol(Index)
.AddItem "卡号"
.AddItem "姓名"
.AddItem "上机日期"
.AddItem "上机时间"
.AddItem "下机日期"
.AddItem "下机时间"
.AddItem "消费金额"
.AddItem "余额"
End With
Next i
三、组合查询窗体中会涉及到时间日期问题,需要用户自己填写吗?
答案是也不是。为什么这么说呢。是需要用户选择时间日期,有特定的格式;不是需要用户自己随心所欲,想用什么格式就用什么格式,或者根据提示填写符合格式要求的时间日期,这都会给用户增加操作量。所以我们在选择日期字段时,如果填写信息的文本框变成日期控件,让用户选择时间日期,不就会给使用者提供很多方便了嘛?这要怎么实现呢?如下:
If combol(i).Text = "上机日期" Or combol(i).Text = "下机日期" Then
DTPicker1(i).Visible = True
DTPicker1(i).Format = dtpSho