机房收费系统 Part Three——我看复合查询中的”Keyword”

    在SELECT语句中,可以通过Where子句构造记录的筛选条件,选择出符合条件的记录集。比如,我想在上机表中,查询卡号为101的学生的上机记录。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;">SELECT* From Line_Info where cardno=101</span></strong></span>

    这是简单查询,条件查询还包括模糊查询和复合条件查询。下面我就来详细的介绍一下这个复合条件查询。开始我以为这个是学生信息管理系统中没有出现的内容,后来操作了半天,研究了半天,才发现,这东西!我用过啊!

    下面这两个图中的红对勾是对应的,只是在机房收费系统中逻辑表达式相对比较自由,字段随意、操作符随意、连接符随意。本质都是一样的——复合条件查询。

机房收费系统 Part Three——我看复合查询中的”Keyword”_第1张图片

机房收费系统 Part Three——我看复合查询中的”Keyword”_第2张图片

    所谓复合条件查询,通过Where子句中使用逻辑运算符将两个或者两个以上的条件表达式组合起来,构成综合检索条件。完成更为复杂的查询任务。复合条件中可以使用和逻辑运算符包括:And,Or,Not。

And——连接两个条件表达式,完成逻辑运算符与运算。

Or——连接两个条件表达式,完成逻辑运算符或运算。

Not——对一个条件表达式进行逻辑非运算。

    在机房收费系统中,就是层层递进的关系,SQL语句通过And和Or进行连接,构成一个,两个,三个条件的查询。


下面就先来挑出学生信息管理系统中的Keyword:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>    TxtSQL = "SELECT * From result_Info where "
    
    If ChkSID(0).Value Then
    '按学号的复选框选中
        TxtSQL = TxtSQL & "student_ID = '" & Trim(txtSID) & "'"
    End If
    
    If ChkSName(1).Value Then
    '按姓名查询的复选框选中
        TxtSQL = TxtSQL & "and student_name = '" & txtName & "'"
    End If
    
    If ChKCourse(2).Value Then
    '按课程查询复选框选中
        TxtSQL = TxtSQL & "and course_name = '" & txtCourse & "'"
    End If
    
    TxtSQL = TxtSQL & " order by student_ID "
    '按照学生的学号排序
    Set mrc = ExecuteSQL(TxtSQL, MsgText)
</strong></span>

    发现规律了么?它先写好一个半成品的SQL语句存入txtSQL变量中,根据选中情况,一步步的完善SQL语句。照着我的学生信息管理系统,我也编出了机房的Keyword:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>    Dim TxtSQL As String
    Dim MsgText As String
    Dim mrc As ADODB.Recordset
    
    
    TxtSQL = "SELECT * From Line_Info Where (" & ComF1.Tag & ComE1.Text & "'" & Text1.Text & "'"
    '一个条件的查询
    If ComG1.Text <> "" Then
        '添加第二个查询
        TxtSQL = TxtSQL & " " & ComG1.Tag & " " & ComF2.Tag & ComE2.Text & "'" & Text2.Text & "'"
    End If
   
    If ComG2.Text <> "" Then
        '添加第三个查询
        TxtSQL = TxtSQL & " " & ComG2.Tag & " " & ComF3.Tag & ComE3.Text & "'" & Text3.Text & "'"
    
    End If
    
    TxtSQL = TxtSQL & ")"
    
    Set mrc = ExecuteSQL(TxtSQL, MsgText)
</strong></span>

    稍微需要动些小脑筋的地方就是SQL的and和or的用法。上边其实就是在一句话上面做了改动。让这句话中的字段,操作符和查询内容都可以自定义。彻底的了解了下面这句话的意思,那么复合条件查询就不成问题了。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>SELECT * FROM Line_Info WHERE (cardno='101' OR studentno='111')
AND studentname='azz'</strong></span>
    开始认为复合查询挺难的,所以把它放在了后边敲。现在才明白了对于一个功能块,只要可以找到它的Keyword,慢慢的都可以理解的。只要你不放弃不停的调试,就会达到你想要的效果。


你可能感兴趣的:(机房收费系统 Part Three——我看复合查询中的”Keyword”)