首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

机房收费系统----结合查询

2012-11-26 
机房收费系统----组合查询机房收费系统在磕磕绊绊中过来了,这期间遇到问题,解决问题,最后收获的特别多,在

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

 

     机房收费系统在磕磕绊绊中过来了,这期间遇到问题,解决问题,最后收获的特别多,在敲得过程中,不断的学习新知识,应该说组合查询是收费系统的一个小难点了吧,起初我是真的不知道该从哪里下手,总是有种剪不断理还乱的感觉,分析分析就绕进去了,我总是把问题想的很复杂,其实只要一句SQL语句,一切都解决了,根本用不到好多好多的IF,FOr 什么的,下面是我自己在实现此过程所需要的代码:以收费系统中基本信息维护为例子,其实其他的也都大同小异

 

     只要一句正确的SQL,其他全OK!

机房收费系统----结合查询

     刚着手时看到这个确实有点迷糊,该从何下手呢?理清楚了才明白,其实很简单,在这里我是用组合关系为点,进行判断,如果组合关系中什么都没有选择,那么就认为查询条件为第一行,而且必须选择完全,如果选择了组合关系,那么相对应的2或3行条件就需要填充完整,接着就是按照条件在数据库中查询内容了。而我的字段名选择是汉字,要想在数据库中查询字段,根本就不认识,这就需要我将汉字转换为相应的字符串,代码中的FieldName 就是我要利用到的一个函数

Private Sub cmdInquire_Click()     Dim mrc As ADODB.Recordset    Dim txtSQL As String    Dim MsgText As String     txtSQL = "select * from student_Info where "    '判断字段的选择是否为空    If Not Testtxt(comboFiledName1.Text) Then        MsgBox "请选择字段!", vbOKOnly + vbExclamation, "警告"        comboFiledName1.SetFocus        Exit Sub    End If    '判断操作符的选择是否为空    If Not Testtxt(comboOperate1.Text) Then        MsgBox "请选择操作符!", vbOKOnly + vbExclamation, "警告"        comboOperate1.SetFocus        Exit Sub    End If    '判断要查询的内容是否为空    If Not Testtxt(txtContent1.Text) Then        MsgBox "请在输入要查询的内容", vbOKOnly + vbExclamation, "警告"        txtContent1.SetFocus        Exit Sub    End If    txtSQL = txtSQL & FiledName(comboFiledName1.Text) & " " & comboOperate1.Text & "'" & txtContent1.Text & "'"     '利用模版函数查看是否是组合查询第一行为空时,查询无效    '开始组合查询    If Trim(comboRelation1.Text <> "") Then        If Trim(comboFiledName2.Text) = "" Or Trim(comboOperate2.Text) = "" Or Trim(txtContent2.Text) = "" Then            MsgBox "您选择了组合关系,请输入数据之后再查询", vbOKOnly, "提示信息"            Exit Sub        Else            txtSQL = txtSQL & FiledName(comboRelation1.Text) & " " & FiledName(comboFiledName2.Text) & comboOperate2.Text & "'" & Trim(txtContent2.Text) & "'"        End If    End If    If Trim(comboRelation2.Text) <> "" Then        If Trim(comboFiledName3.Text) = "" Or Trim(comboOperate3.Text) = "" Or Trim(txtContent3.Text) = "" Then            MsgBox "您选择了第二个组合,请输入数据之后在查询", vbOKOnly, "提示"            Exit Sub        Else            txtSQL = txtSQL & FiledName(comboRelation2.Text) & " " & FiledName(comboFiledName3.Text) & comboOperate3.Text & "'" & Trim(txtContent3.Text) & "'"        End If    End If     '开始进行查找     Set mrc = ExecuteSQL(txtSQL, MsgText)     If mrc.RecordCount = 0 Then        MsgBox "没有您要查找的学生上机记录!", vbOKOnly + vbCritical, "查询提示"        comboFiledName1.SetFocus        MSHFlexGrid1.Rows = 1        '存在上机记录查询成功,填充到表格    Else         MSHFlexGrid1.Rows = 1        Do While Not mrc.EOF             With MSHFlexGrid1                .CellAlignment = 4                .Rows = .Rows + 1                .TextMatrix(.Rows - 1, 0) = mrc!studentNo                .TextMatrix(.Rows - 1, 1) = mrc!studentName                .TextMatrix(.Rows - 1, 2) = mrc!cardno                .TextMatrix(.Rows - 1, 3) = mrc!cash                .TextMatrix(.Rows - 1, 4) = mrc!department                .TextMatrix(.Rows - 1, 5) = mrc!grade                .TextMatrix(.Rows - 1, 6) = mrc!Class                .TextMatrix(.Rows - 1, 7) = mrc!Sex                .TextMatrix(.Rows - 1, 8) = mrc!Status                .TextMatrix(.Rows - 1, 9) = mrc!explain            End With            mrc.MoveNext        Loop    End If    Exit SubEnd Sub


 

'将汉字转换为相应的字段名字Public Function FiledName(StrFiledName As String) As String    Select Case StrFiledName    Case "卡号"        FiledName = "cardno"    Case "学号"        FiledName = "studentNo"    Case "姓名"        FiledName = "studentName"    Case "性别"        FiledName = "Sex"    Case "学院"        FiledName = "department"    Case "年级"        FiledName = "grade"    Case "班级"        FiledName = "class"    Case "与"        FiledName = "and"    Case "或"        FiledName = "or"     End SelectEnd Function


    这样一个组合查询完成了,重其中我也收获了财富,遇到错误的时候就是进步的时候,实现这个功能最大的感慨就是SQL语句真的很强大,而我还处在最低级,以后还要努力加油了!

 

热点排行