⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 borrowsearch.vb

📁 图书管理系统 书籍的管理应用 源码可以直接用
💻 VB
📖 第 1 页 / 共 3 页
字号:
        Me.lstCondition.TabIndex = 34
        '
        'BorrowSearch
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(440, 405)
        Me.Controls.Add(Me.GroupBox1)
        Me.Name = "BorrowSearch"
        Me.Text = "借阅查询"
        Me.GroupBox1.ResumeLayout(False)
        Me.ResumeLayout(False)

    End Sub

#End Region
    '记录总体数据结构
    Dim dataSets As dbAttributeDescription
    '记录数据表集,即所有表
    Dim sets As New ArrayList
    '记录选定的数据表
    Dim setSelected As New dbSetDescription
    '记录选定的信息项,即某字段
    Dim fieldSelected As New dbFieldDescription
    '记录选定的代码项
    Dim codeSelected As New codeDescription
    '查询条件链表
    Dim linkQuery As New ArrayList
    '某项查询条件描述
    Dim queryDesc As QueryDescription
    '左括号
    Dim leftBracket As Boolean = False
    '右括号
    Dim rightBracket As Boolean = False
    '运算符
    Dim BIG As String = "大于"
    Dim SMAll As String = "小于"
    Dim EQUAL As String = "等于"
    Dim BIG_EQUAL As String = "大于等于"
    Dim SMALL_EQUAL As String = "小于等于"
    Dim LIKING As String = "类似"
    Dim NO_EQUAL As String = "不等于"

    '表初始化信息
    'sTable(i,0):物理表名;sTable(i,1);逻辑表名
    Dim sTable(,) As String = {{"BookBorrow", "借阅信息"}, {"BookInfo", "书籍信息"}, {"ReaderInfo", "读者信息"}}
    '查询项初始化信息
    'sItem(i,0):表名;sItem(i,1):字段名;sItem(i,2):字段意义;sItem(i,3):代码表。
    Private sItem(,) As String = {{"BookBorrow", "BorrowDate", "借阅日期", ""}, _
                                   {"BookBorrow", "ReturnDate", "归还日期", ""}, _
                                   {"BookBorrow", "Deadline", "到期时间", ""}, _
                                   {"BookInfo", "Name", "书籍名称", ""}, _
                                   {"BookInfo", "Author", "作者", ""}, _
                                   {"BookInfo", "Type", "类型", "BookType"}, _
                                   {"BookInfo", "Press", "出版社", ""}, _
                                   {"BookInfo", "Price", "价格", ""}, _
                                   {"BookInfo", "PressDate", "出版日期", ""}, _
                                   {"ReaderInfo", "Name", "读者姓名", ""}, _
                                   {"ReaderInfo", "Gender", "性别", ""}, _
                                   {"ReaderInfo", "MaxNumber", "最大可借阅册数", ""}, _
                                   {"ReaderInfo", "MaxTime", "最大可借阅天数", ""}}

    Private Sub BorrowSearch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        '调用初始化函数初始化数据结构
        dataSets = getInitialization()
        '得到数据表集
        sets = dataSets.getSets()
        '将信息集显示在下拉列表框中
        For i = 0 To sets.Count - 1
            Dim perset As New dbSetDescription
            '第i个数据表集
            perset = sets.Item(i)
            '显示第i个数据表集的逻辑表名(即其意义)
            cmbSets.Items.Add(perset.getSetChiName())
        Next
    End Sub

    Public Function getInitialization() As dbAttributeDescription
        '记录总体数据结构
        Dim dbAD As New dbAttributeDescription
        '记录数据表集
        Dim sets As New ArrayList
        Dim i As Integer
        For i = 0 To 2
            '数据表
            Dim sdd As New dbSetDescription
            '表名
            sdd.setSetSqlName(sTable(i, 0))
            '表意义
            sdd.setSetChiName(sTable(i, 1))
            '字段集
            Dim fields As New ArrayList
            Dim j As Integer
            For j = 0 To 12
                '若字段属于此表
                If sItem(j, 0).Equals(sdd.getSetSqlName()) Then
                    '字段
                    Dim fdd As New dbFieldDescription
                    '字段名
                    fdd.setFieldSqlName(sItem(j, 1))
                    '字段意义
                    fdd.setFieldChiName(sItem(j, 2))
                    '字段代码表
                    fdd.setCodeTable(sItem(j, 3))
                    '字段代码
                    Dim codes As New ArrayList
                    If fdd.getCodeTable() <> "" Then
                        Dim veccode As New ArrayList
                        Dim k As Integer
                        '得到代码表内容
                        veccode = getCodeByTable("CODE", "NAME", "BookType")
                        For k = 0 To veccode.Count - 1
                            '一条代码
                            Dim code As New codeDescription
                            '代码值
                            code.setCodeID((veccode.Item(k))(0))
                            '代码意义
                            code.setCodeExp((veccode.Item(k))(1))
                            codes.Add(code)
                        Next
                    End If
                    '将代码添加到字段
                    fdd.setCodes(codes)
                    '将字段添加到字段集
                    fields.Add(fdd)
                End If
            Next
            '将字段集添加到数据表
            sdd.setFields(fields)
            '将数据表添加到数据表集
            sets.Add(sdd)
        Next
        '将数据表集添加到总体结构
        dbAD.setSets(sets)
        Return dbAD
    End Function

    Private Sub cmbSets_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSets.SelectedIndexChanged
        Dim i As Integer
        '得到选定数据表
        setSelected = sets.Item(cmbSets.SelectedIndex)
        '清空信息项列表
        cmbItems.Items.Clear()
        '得到该数据表的所有字段并显示
        For i = 0 To setSelected.getFields().Count - 1
            Dim field As New dbFieldDescription
            '数据表的第i个字段
            field = setSelected.getFields().Item(i)
            '在下拉列表中显示数据表第i个字段的意义
            cmbItems.Items.Add(field.getFieldChiName())
        Next
    End Sub

    Private Sub cmbItems_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbItems.SelectedIndexChanged
        Dim fields As ArrayList = setSelected.getFields()
        Dim i As Integer
        '清空查询值列表
        cmbValue.Items.Clear()
        '得到选定字段
        fieldSelected = fields.Item(cmbItems.SelectedIndex)
        '如果该字段对应某个代码表,则加载代码表内容
        If Not fieldSelected.getCodes() Is Nothing And fieldSelected.getCodes().Count > 0 Then
            For i = 0 To fieldSelected.getCodes().Count - 1
                Dim code As New codeDescription
                '代码表的第i个代码项
                code = fieldSelected.getCodes().Item(i)
                '第i个代码项的意义
                cmbValue.Items.Add(code.getCodeExp())
            Next
        End If
    End Sub
    '添加逻辑操作符
    Private Sub btnAnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnd.Click
        Dim queryDesc As New QueryDescription
        '判断是否在第一行添加逻辑操作符
        If lstCondition.Items.Count = 0 Then
            InfoMSG("不能在第一行添加'并且'!")
            Return
        End If
        Dim index As Integer
        '记录条件列表中选定项
        index = lstCondition.SelectedIndex
        '若未选定条件,默认添加在最后一行
        If index = -1 Or index = lstCondition.Items.Count - 1 Then
            '在条件列表中显示
            lstCondition.Items.Add("并且")
            '设置查询条件
            queryDesc.setchiRelation("并且")
            queryDesc.setsqlRelation(" and ")
            '将条件添加到查询条件链表
            linkQuery.Add(queryDesc)
        Else
            '在条件列表选定项的下方添加显示
            lstCondition.Items.Insert(index + 1, "并且")
            '设置查询条件
            queryDesc.setchiRelation("并且")
            queryDesc.setsqlRelation("and")
            '将条件插入到查询条件链表
            linkQuery.Insert(index + 1, queryDesc)
        End If
    End Sub

    Private Sub btnOr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOr.Click
        queryDesc = New QueryDescription
        If lstCondition.Items.Count = 0 Then
            InfoMSG("不能在第一行添加'或者'!")
            Return
        End If
        Dim index As Integer
        index = lstCondition.SelectedIndex
        If index = -1 Or index = lstCondition.Items.Count - 1 Then
            lstCondition.Items.Add("或者")
            queryDesc.setchiRelation("或者")
            queryDesc.setsqlRelation("or")
            linkQuery.Add(queryDesc)
        Else
            lstCondition.Items.Insert(index + 1, "或者")
            queryDesc.setchiRelation("或者")
            queryDesc.setsqlRelation(" or ")
            linkQuery.Insert(index + 1, queryDesc)
        End If
    End Sub

    Private Sub btnLeftBra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLeftBra.Click
        Dim index As Integer
        queryDesc = New QueryDescription
        '判断是否已选择某条件
        If (lstCondition.SelectedIndex < 0) Then
            InfoMSG("请在条件列表中选中要添加左括号的条件。")
            Exit Sub
        End If
        '得到选定条件的序号
        index = lstCondition.SelectedIndex
        '如果该条件是逻辑操作符,则提示错误,即不能为and或or添加括号
        If isRelation(index) Then
            InfoMSG("非法的条件!")
            Exit Sub
        End If
        '条件列表中更新显示
        lstCondition.Items(index) = "(" + lstCondition.Items(index)
        '得到条件链表中的选定条件
        Dim tmpquery As QueryDescription = linkQuery.Item(index)
        '重新设置该条件
        tmpquery.setleftBracket()
    End Sub
   
    Private Sub btnRightBra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRightBra.Click
        Dim index As Integer
        queryDesc = New QueryDescription
        If (lstCondition.SelectedIndex < 0) Then
            InfoMSG("请在条件列表中选中要添加左括号的条件。")
            Exit Sub
        End If
        index = lstCondition.SelectedIndex

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -