第一次机房收费系统——组合查询

前言

1.

机房收费系统中的组合查询窗体有三个,分别为学生上机统计信息查询、学生基本信息维护、操作员工作记录,三个大同小异,基本的思路是相通的,主要涉及到的为查询操作和修改操作。
既然为组合查询,当然对输入的条件进行一个组合查询工作,我的基本思路:点击查询之后,先将第一行内容记录,判断是否选择第一个组合查询,如果是,那么第二行文本框可用,记录第二行信息,以此类推,最大的难点就在于将记录的信息转化为SQL语句内容,大家已经都学过数据库这本书了,对于VB于SQL语句的转化应该还是没问题的吧!

2.

需要注意的一点就是,学生上机统计信息查询和操作原工作记录窗体中,有时间的选项,大家是否应用了时间控件呢?(反正以我的脑袋瓜,呃,,是在师傅提出来之后才想到的)当用户选择注册日期或时间的时候,要查询的内容就会变成DTPicker1控件,方便用户的体验。

3.

对于学生基本信息维护中,有一个修改的选项,其中涉及到对MSHFlexGrid1控件中的选项进行选择的问题,代码如下:

    MSHFlexGrid1.SelectionMode = flexSelectionByRow   '设置msgflexgrid1的选择方式是按行选择
    haveselected = False                               '设置标志防止没选择就被删除

Private Sub MSHFlexGrid1_Click()
    MSHFlexGrid1.FocusRect = flexFocusNone            '选中行显示焦点区域
    MSHFlexGrid1.HighLight = flexHighlightWithFocus   '选中行突出显示

    haveselected = True                               '设置标志允许修改
    n = MSHFlexGrid1.RowSel
End Sub

一、逻辑思路

这里写图片描述

二、部分代码展示

就拿学生上机统计信息查询为例

Private Sub Combofield7_Click()
    If Combofield7.Text <> "" Then

        ComboField2.Enabled = True
        Combofield5.Enabled = True
        txtInquiryContent2.Enabled = True
    Else
        ComboField2.Enabled = False
        ComboField3.Enabled = False
        Combofield5.Enabled = False
        Combofield6.Enabled = False
        txtInquiryContent2.Enabled = False
        txtInquiryContent3.Enabled = False
        txtInquiryContent2.Text = ""
        txtInquiryContent3.Text = ""
    End If

End Sub
'判断第一行内容是否完整
    If Trim(ComboField1.Text) = "" Or Trim(Combofield4.Text) = "" Then
        MsgBox "请将第一行信息输入完整!", 0 + 48, "提示"
    Exit Sub
    End If

    If (Trim(ComboField1.Text) = "姓名" Or Trim(ComboField1.Text) = "消费金额" Or Trim(ComboField1.Text) = "余额" Or Trim(ComboField1.Text) = "备注") And Trim(txtInquiryContent1.Text) = "" Then
        MsgBox "请将第一行信息输入完整!", 0 + 48, "提示"
    Exit Sub
    Else

        txtsql = "select * from line_info where "

        If DTPicker1.Visible = True Then

 '调用学生信息表,记录查询语句
            txtsql = txtsql & field(ComboField1.Text) & " " & Combofield4.Text & "'" & DTPicker1.Value & "'"
        Else

 '调用学生信息表,记录查询语句
            txtsql = txtsql & field(ComboField1.Text) & " " & Combofield4.Text & "'" & Trim(txtInquiryContent1.Text) & "'"
        End If


 '判断是否选择第一个组合查询
        If Trim(Combofield7.Text) <> "" Then

 '判断第二行内容是否完整
            If Trim(ComboField2.Text) = "" Or Trim(Combofield5.Text) = "" Then
                MsgBox "你选择了第一个组合查询,请将第二行内容输入完整!", 0 + 48, "提示"
            Exit Sub
            End If

            If (Trim(ComboField2.Text) = "姓名" Or Trim(ComboField2.Text) = "消费金额" Or Trim(ComboField2.Text) = "余额" Or Trim(ComboField2.Text) = "备注") And Trim(txtInquiryContent2.Text) = "" Then
                MsgBox "你选择了第一个组合查询,请将第二行内容输入完整!", 0 + 48, "提示"
            Exit Sub
            Else

                If DTPicker2.Visible = True Then
   '调用学生信息表,记录查询记录
                    txtsql = txtsql & " " & field(Combofield7.Text) & " " & field(ComboField2.Text) & " " & Combofield5.Text & "'" & DTPicker2.Value & "'"
                Else
                    txtsql = txtsql & " " & field(Combofield7.Text) & " " & field(ComboField2.Text) & Combofield5.Text & "'" & Trim(txtInquiryContent2.Text) & "'"
                End If
            End If

        End If

   '判断是否选择第二个组合查询
        If Trim(Combofield8.Text) <> "" Then

   '判断第三行内容是否输入完整
            If Trim(ComboField3.Text) = "" Or Trim(Combofield6.Text) = "" Then
                MsgBox "你选择了第二个组合查询,请将第三行内容输入完整!", 0 + 48, "提示"
            Exit Sub
            End If

            If (Trim(ComboField3.Text) = "姓名" Or Trim(ComboField3.Text) = "消费金额" Or Trim(ComboField3.Text) = "余额" Or Trim(ComboField3.Text) = "备注") And Trim(txtInquiryContent3.Text) = "" Then
                MsgBox "你选择了第二个组合查询,请将第三行内容输入完整!", 0 + 48, "提示"
            Exit Sub
            Else

                If DTPicker3.Visible = True Then
      '调用学生信息表,记录查询信息
                    txtsql = txtsql & " " & field(Combofield8.Text) & " " & field(ComboField3.Text) & " " & Combofield6.Text & "'" & DTPicker3.Value & "'"
                Else

                    txtsql = "select * from line_info where "
                    txtsql = txtsql & " " & field(Combofield8.Text) & " " & field(ComboField3.Text) & Combofield6.Text & "'" & Trim(txtInquiryContent3.Text) & "'"
                End If
            End If
        End If
    End If

Set mrc = ExecuteSQL(txtsql, msgtext)
Private Sub comboField1_Click()
    Combofield4.Clear   '避免重复添加操作符
    Select Case ComboField1.Text
    Case "教师"
        Combofield4.AddItem "="
        Combofield4.AddItem "<>"
        txtInquiryContent1.Visible = True
        txtInquiryContent1.Enabled = True
        DTPicker1.Visible = False

    Case "注册日期"
        Combofield4.AddItem "="
        Combofield4.AddItem ">"
        Combofield4.AddItem "<"
        Combofield4.AddItem "<>"
        txtInquiryContent1.Visible = False
        DTPicker1.Visible = True
    Case "注册时间"
        Combofield4.AddItem "="
        Combofield4.AddItem ">"
        Combofield4.AddItem "<"
        Combofield4.AddItem "<>"
        txtInquiryContent1.Visible = False
        txtInquiryContent1.Enabled = False
        DTPicker1.Visible = True
    Case "注销日期"
        Combofield4.AddItem "="
        Combofield4.AddItem ">"
        Combofield4.AddItem "<"
        Combofield4.AddItem "<>"
        txtInquiryContent1.Visible = False
        txtInquiryContent1.Enabled = False
        DTPicker1.Visible = True
    Case "注销时间"
        Combofield4.AddItem "="
        Combofield4.AddItem ">"
        Combofield4.AddItem "<"
        Combofield4.AddItem "<>"
        txtInquiryContent1.Visible = False
        txtInquiryContent1.Enabled = False
        DTPicker1.Visible = True
    Case "机器名"
        Combofield4.AddItem "="
        Combofield4.AddItem "<>"
        txtInquiryContent1.Visible = True
        txtInquiryContent1.Enabled = True
        DTPicker1.Visible = False
    End Select

End Sub
Public Function field(a As String) As String
     '将文本框中的字段返回到数据库中
     Select Case a
        Case "教师"
            field = "userid"
        Case "注册日期"
            field = "logindate"
        Case "注册时间"
            field = "logintime"
        Case "注销日期"
            field = "logoutdate"
        Case "注销时间"
            field = "logouttime"
        Case "机器名"
            field = "computer"
        Case "与"
            field = "and"
        Case "或"
            field = "or"
       End Select

End Function

三、导出为Excel

Dim i As Integer  '声明一个行变量
    Dim j As Integer    '声明一个列变量

    Dim excelapp As Excel.Application
    Dim excelbook As Excel.Workbook
    Dim excelsheet As Excel.Worksheet   '声明一个Excel工作簿

    Set excelapp = New Excel.Application '建立一张表
    Set excelbook = excelapp.Workbooks.Add '添加新的工作簿
    Set excelsheet = excelbook.Worksheets(1) '建立工作表

    DoEvents        '转让控制权,以便让操作系统处理其他的事件

    With MSHFlexGrid1     '将msgflexgrid1中的内容写到表格中
        For i = 0 To .Rows - 1
            For j = 0 To .Cols - 1

                DoEvents
                excelapp.ActiveSheet.Cells(i + 1, j + 1) = .TextMatrix(i, j)  '注意Excel是从第一行第一列开始的,而窗体中的表是从第0行第1列开始的

            Next j
        Next i
    End With

        '保存路径
        excelapp.Visible = True
        Set excelapp = Nothing

End Sub

猜你喜欢

转载自blog.csdn.net/molihuakai_118/article/details/79501295