机房收费系统———组合查询
2013-11-25 15:26
183 查看
机房收费系统中,组合查询可以算说是一个难点吧。在学生信息管理系统中,也有组合查询,不过那只是简单的组合,然后进行查询。可是,在机房收费系统中,涉及到好多内容。一开始接触,完全就懵了,根本不知道从哪里下手。因为组合查询,我耽误了一段时间。后来,随着系统的深入,对系统也越来越了解,对系统的各项功能也越来越熟悉,对组合查询也就慢慢的产生了好感。
其实,组合查询没有我们想象的那么难。静下心来,想一想,更本就没有那么复杂,只需要一个SQL语句就Ok了。在这里,我们以“上机状态查询”这个窗体,来探讨里边的组合查询。
在这里,虽然看着非常复杂,有三行组合,需要进行查询。其实,我们完全可以以组合关系为点,进行判断。首先如果没有选择组合关系,则默认为是按照第一行的要求进行查询;如果选择了组合关系,则需要两行或三行的条件都得满足。在这里还需要进行一下汉字的转换,因为在这里,字段名是汉字,如果在数据库中查询,更本不识别汉字,需要把汉字转换成相应的字符串,这就需要用到FieldName这个函数。
这样,一个看似非常复杂的组合查询就完成了。做完组合查询,真正领会到了SQL语句的强大。
其实有些事情看起来很难,一开始让你做,你更本就没有头绪,不知道从哪下手。其实这些都没有多大的关系,勇敢的去做,Just do it!就行了。记住,只要迈出第一步,开始,你就离成功不远了。
其实,组合查询没有我们想象的那么难。静下心来,想一想,更本就没有那么复杂,只需要一个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!就行了。记住,只要迈出第一步,开始,你就离成功不远了。