现在的位置: 首页 > 综合 > 正文

机房收费系统———组合查询

2013年02月01日 ⁄ 综合 ⁄ 共 2806字 ⁄ 字号 评论关闭

    机房收费系统中,组合查询可以算说是一个难点吧。在学生信息管理系统中,也有组合查询,不过那只是简单的组合,然后进行查询。可是,在机房收费系统中,涉及到好多内容。一开始接触,完全就懵了,根本不知道从哪里下手。因为组合查询,我耽误了一段时间。后来,随着系统的深入,对系统也越来越了解,对系统的各项功能也越来越熟悉,对组合查询也就慢慢的产生了好感。

    其实,组合查询没有我们想象的那么难。静下心来,想一想,更本就没有那么复杂,只需要一个SQL语句就Ok了。在这里,我们以“上机状态查询”这个窗体,来探讨里边的组合查询。

    在这里,虽然看着非常复杂,有三行组合,需要进行查询。其实,我们完全可以以组合关系为点,进行判断。首先如果没有选择组合关系,则默认为是按照第一行的要求进行查询;如果选择了组合关系,则需要两行或三行的条件都得满足。在这里还需要进行一下汉字的转换,因为在这里,字段名是汉字,如果在数据库中查询,更本不识别汉字,需要把汉字转换成相应的字符串,这就需要用到FieldName这个函数。

Private Sub cmdInquire_Click()
     Dim mrc As ADODB.Recordset
     Dim txtSQL As String
     Dim Msgtext As String
     
     txtSQL = "select * from line_info where "
     
     '判断字段名是否为空
     If Not testtxt(comboFieldname(0).Text) Then
         MsgBox "字段名不能为空,请输入字段名!", vbOKOnly + vbExclamation, "警告"
         comboFieldname(0).SetFocus
         Exit Sub
     End If
     
     '判断操作符是否为空
     If Not testtxt(comboOperate(0).Text) Then
        MsgBox "操作符不能为空,请选择", vbOKOnly + vbExclamation, "警告"
        comboOperate(0).SetFocus
        Exit Sub
     End If
     
     '判断要查询的内容是否为空
     If Not testtxt(txtContent1.Text) Then
        MsgBox "请输入需要查询的内容!", vbOKOnly + vbExclamation, "警告"
        txtContent1.SetFocus
        Exit Sub
     End If
     
     txtSQL = txtSQL & FiledName(comboFieldname(0).Text) & " " & comboOperate(0).Text & " '" & txtContent1.Text & "' "
     
     
     '开始进行组合查询,先进行第一个组合判断
     If Trim(comboContent(0).Text <> "") Then
         If Trim(comboFieldname(1).Text) = "" Or Trim(comboOperate(1).Text) = "" Or Trim(txtContent2.Text) = "" Then
             MsgBox "您选择了组合查询,请输入数据后再进行查询!", vbOKOnly + vbExclamation, "警告"
            
             Exit Sub
         Else
             txtSQL = txtSQL & FiledName(comboContent(0).Text) & " " & comboFieldname(1).Text & " " & comboOperate(1).Text & " " & txtContent2.Text
         End If
     End If
     
     '第二个组合查询
     If Trim(comboContent(1).Text <> "") Then
        If Trim(comboFieldname(2).Text) = "" Or Trim(comboOperate(2).Text) = "" Or Trim(txtContent3.Text) = "" Then
            MsgBox "您选择了组合查询,请输入数据后再进行查询!", vbOKOnly + vbExclamation, "警告"
            Exit Sub
        Else
            txtSQL = txtSQL & FiledName(comboContent(1).Text) & " " & comboFieldname(2).Text & " " & comboOperate(2).Text & " " & txtContent3.Text
        End If
     End If
     Debug.Print Msgtext
     '开始进行查找
     Set mrc = ExecuteSQL(txtSQL, Msgtext)
    
     If mrc.RecordCount = 0 Then
       MsgBox "没有您想要查询的记录", vbOKOnly + vbExclamation, "警告"
       comboFieldname(0).SetFocus
       
       myflexgrid.Rows = 1
     Else
       myflexgrid.Rows = 1
       
       
       With myflexgrid
              .Rows = 1
              .CellAlignment = 4
              .TextMatrix(0, 0) = "卡号"
              .TextMatrix(0, 1) = "姓名"
              .TextMatrix(0, 2) = "上机日期"
              .TextMatrix(0, 3) = "上机时间"
              .TextMatrix(0, 4) = "机房号"
    
       
         Do While Not mrc.EOF
              With myflexgrid
                     .Rows = .Rows + 1
                     .CellAlignment = 4
                     .TextMatrix(.Rows - 1, 0) = mrc!cardno
                     .TextMatrix(.Rows - 1, 1) = mrc!studentname
                     .TextMatrix(.Rows - 1, 2) = mrc!ondate
                     .TextMatrix(.Rows - 1, 3) = mrc!OnTime
                     .TextMatrix(.Rows - 1, 4) = mrc!computer
              End With
              mrc.MoveNext
          Loop
        End With
     End If
     Exit Sub

End Sub

利用FieldName函数,将汉字转换成字符串

Public Function FiledName(StrFiledName As String) As String                    '将汉字转换为相应的字段名
      Select Case StrFiledName
           Case "卡号"
                 FiledName = "cardno"
           Case "姓名"
                 FiledName = "studentname"
           Case "上机日期"
                 FiledName = "ondate"
            Case "上机时间"
                 FiledName = "ontime"
             Case "机房号"
                 FiledName = "computer"
             Case "与"
                 FiledName = "and "
             Case "或"
                 FiledName = "or "
      End Select
   
End Function


    这样,一个看似非常复杂的组合查询就完成了。做完组合查询,真正领会到了SQL语句的强大。

    其实有些事情看起来很难,一开始让你做,你更本就没有头绪,不知道从哪下手。其实这些都没有多大的关系,勇敢的去做,Just do it!就行了。记住,只要迈出第一步,开始,你就离成功不远了。

抱歉!评论已关闭.