<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong> 昨天师傅验收了我的机房收费系统,代码上基本没发现什么错误师傅让我过了,帮我提出了一些改进的方案,十分值得借鉴。这次我和大家探讨一下组合查询的方法。</strong></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong> 组合查询看起来貌似很复杂,因为要限制的条件很多,我用了下面这种方法,觉得就没那么复杂了。首先我判断有几条查询条件的依据是最后两个逻辑关系Combox。第一个为空,则说明只有一个条件,所以让第二个逻辑关系combox的enable为false。若第一个不为空则判断第二个是否为空,若第二个为空则有两条查询条件,若第二个不为空则有三个查询条件。</strong></span>
If CombRelation1.Text = "" Then
CombRelation2.Enabled = False
txtSQL = "select * from Line_Info where " & Trim(CombFileName1.Tag) & "" & Trim(CombSign1.Text) & " '" & Trim(txtNeirong1.Text) & "'"
Else
If CombRelation2.Text = "" Then
txtSQL = "select * from Line_Info where " & Trim(CombFileName1.Tag) & "" & Trim(CombSign1.Text) & "'" & Trim(txtNeirong1.Text) & "'" & Trim(CombRelation1.Tag) & " " & Trim(CombFileName2.Tag) & "" & Trim(CombSign2.Text) & "'" & Trim(txtNeirong2.Text) & "'"
Else
txtSQL = "select * from Line_Info where " & Trim(CombFileName1.Tag) & "" & Trim(CombSign1.Text) & "'" & Trim(txtNeirong1.Text) & "'" & Trim(CombRelation1.Tag) & " " & Trim(CombFileName2.Tag) & "" & Trim(CombSign2.Text) & "'" & Trim(txtNeirong2.Text) & "'" & Trim(CombRelation2.Tag) & " " & Trim(CombFileName3.Tag) & " " & Trim(CombSign3.Text) & "'" & Trim(txtNeirong3.Text) & "'"
End If
End If
If CombFileName1.Text = "卡号" Then
CombFileName1.Tag = "cardno"
End If
If CombFileName1.Text = "姓名" Then
CombFileName1.Tag = "studentName"
End If
If CombFileName1.Text = "上机日期" Then
CombFileName1.Tag = "ondate"
End If
If CombFileName1.Text = "上机时间" Then
CombFileName1.Tag = "ontime"
End If
If CombFileName1.Text = "下机日期" Then
CombFileName1.Tag = "offdate"
End If
If CombFileName1.Text = "下机时间" Then
CombFileName1.Tag = "offtime"
End If
If CombFileName1.Text = "消费金额" Then
CombFileName1.Tag = "consume"
End If
If CombFileName1.Text = "余额" Then
CombFileName1.Tag = "cash"
End If
If CombFileName1.Text = "备注" Then
CombFileName1.Tag = "status"
End If
If CombRelation1.Text = "与" Then
CombRelation1.Tag = "And"
End If
If CombRelation1.Text = "或" Then
CombRelation1.Tag = "Or"
End If
这样一个复杂的问题就变得简单了。代码中的控件的tag是个非常好用的方法,很灵活。
用这种方法有个缺陷就是点击查询后,第二个combox一直是不可用的,只能关闭窗口后,重新加载才可继续使用。解决这个问题的方法是当焦点失去时激活第二个Combox
Private Sub ComSee_LostFocus()
CombRelation2.Enabled = True
End Sub
在里面添加一个空的选项,这样就可以选则空了。
这是我关于组合查询的一些小心得,求斧正!