机房收费系统之组合查询

时间:2022-09-16 11:42:36
增删改查,数据库中最基本的四个操作。不论是学生信息管理系统,还是机房收费系统,它们一个都不少。这一次,就来说说“查”。

刚开始,看到机房收费系统的查询,傻眼了,横看,四个Label框,所谓的查询条件;竖看,多个文本框、组合框。



机房收费系统之组合查询

                                              机房收费系统之组合查询

在运行了很多次系统之后,终于越来越有思路了。
首先,我们很清楚查询的两种形式:简单查询和组合查询。这两者的划分,组合关系的选择就是关键了。

所以,根据上面所给的各个控件,我们可以*选择是简单查询还是组合查询。不管做什么,思路很重要,思路决定出路。下面是自己对组合查询的思路梳理: 

机房收费系统之组合查询

简单地说,也就是如果想要进行组合查询,在将查询条件填写完整的前提下,必须将组合关系也填写上,否则,查询失败。

机房收费系统之组合查询

下面是关于查询的代码,自己也是采用了两种方法运行。也就是采用了不同的方法将文本框中的字段转换为SQL中的字段,即是否调用函数。
一.直接写查询代码。
首先进行转化:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><strong>'将组合框中的选中字段转化为SQL语句中的字段
If comboFieldOne.Text = "卡号" Then comboFieldOne.Tag = "UserCardID"
If comboFieldOne.Text = "学号" Then comboFieldOne.Tag = "ClassNo"
If comboFieldOne.Text = "姓名" Then comboFieldOne.Tag = "UserName"
If comboFieldOne.Text = "性别" Then comboFieldOne.Tag = "sex"
If comboFieldOne.Text = "性别" Then MsgBox "请填写男、女", vbOKOnly + vbExclamation, "警告"

If comboFieldOne.Text = "系别" Then comboFieldOne.Tag = "Department"
If comboFieldOne.Text = "年级" Then comboFieldOne.Tag = "grade"
If comboFieldOne.Text = "班级" Then comboFieldOne.Tag = "class"</strong></span>

接着进行查询:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><strong>'判断已选择准确的查询条件一
If comboFieldOne.Text = "" Then
MsgBox "字段不能为空,请输入第一个查询字段!", vbOKOnly + vbExclamation, "警告"
comboFieldOne.SetFocus
Exit Sub
Else
If comboOperationOne.Text = "" Then
MsgBox "操作符不能为空,请输入第一个操作符!", vbOKOnly + vbExclamation, "警告"
comboOperationOne.SetFocus
Exit Sub
Else
If txtInquireOne.Text = "" Then
MsgBox "查询内容不能为空,请输入第一个查询内容!", vbOKOnly + vbExclamation, "警告"
txtInquireOne.SetFocus
Exit Sub
End If
End If
'查询语句一
strTxtSQL = "select * from tb_StudentInformation where (" & comboFieldOne.Tag & comboOperationOne.Text & "'" & txtInquireOne.Text & "'"
</strong></span>

每选择一个查询条件,只要将strTxtSQL语句联结即可。
二.调用函数编写的代码。
<span style="font-family:KaiTi_GB2312;font-size:24px;"><strong>Public Function FieldName(StrFieldName As String) As String  '判断选择字段函数

Select Case StrFieldName
Case "卡号"
FieldName = "UserCardID"
Case "姓名"
FieldName = " UserName"
Case "上机日期"
FieldName = "OnlineDate"
Case "上机时间"
FieldName = "OnlineTime"
Case "下机日期"
FieldName = "LineDate"
Case "下机时间"
FieldName = "LineTime"
Case "消费金额"
FieldName = "Cost"
Case "余额"
FieldName = "ExtraMoney"
Case "备注"
FieldName = "Comment"
。。。。。。
End Select

End Function
Public Function ComboInquire(StrCombo As String) As Boolean '定义函数:判断是否是组合查询

If StrCombo = "" Then
ComboInquire = False
Else
ComboInquire = True
End If

End Function</strong></span>

两者本质上其实一样,只是采用第二种,代码量不大。
上面的是机房收费系统的查询,下面不如拿它和学生管理的查询比较一下。

机房收费系统之组合查询

应该都记得,学生中的查询走到哪儿都是这三个复选框,可以选择多个,也可以只选择一个。这就看到了机房查询和它的相同之处了。
查询语句都是单个SQL或者多个SQL间的联结。
学生查询SQL句:

机房收费系统之组合查询

机房查询SQL句:

机房收费系统之组合查询

机房收费系统之组合查询

这一路,还是不要瞎想,还是不要恐惧,只要去做,什么都可以的。