刚开始,看到机房收费系统的查询,傻眼了,横看,四个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句:
这一路,还是不要瞎想,还是不要恐惧,只要去做,什么都可以的。