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

📄 frmlendreturn.frm

📁 图书管理系统
💻 FRM
📖 第 1 页 / 共 2 页
字号:
                & DateAdd("m", Val(Left(txtDays, 1)), Date) & "'" _
                & "WHERE 条码='" & .TextMatrix(Index, 2) _
                & "' AND 证号='" & Trim(txtNum) & "' AND 库号='" _
                & cmbRoom & "'"
    End With
    Library_Manage.Library_Manage_Con.Execute strSQL
    '修改借书清单
    LendedBooks.TextMatrix(Index, 4) = Date
    LendedBooks.TextMatrix(Index, 5) = DateAdd("m", Val(Left(txtDays, 1)), Date)
End Sub
Private Sub cmdLend_Click()
    Dim strCode$, strT$, i%
    If Val(txtLends) = Val(txtLended) Then
        MsgBox "已到最大借书量,不能再借书!", vbCritical, "图书借阅管理"
        Exit Sub
    End If
    strCode = UCase(InputBox("请输入图书条码:", "图书借阅管理"))
    If strCode = "" Then Exit Sub
    '检查当前库中有该条码的图书是否输入正确
    With Library_Manage.rsBooksStore
        If .State = adStateClosed Then .Open
        .Filter = "库室名='" & cmbRoom & "'"
        .Find "条码='" & strCode & "'"
        If .EOF Then
            MsgBox cmbRoom & "中无条码为<" & strCode & ">的图书!", _
                    vbCritical, "图书借阅管理"
            Exit Sub
        End If
    End With
    
    '检查指定条码对应的图书是否已在借书清单中,不允许借同样的图书
    With LendedBooks
        For i = 1 To .Rows - 1
            If .TextMatrix(i, 2) = strCode Then Exit For
        Next
        If i <> .Rows Then
            MsgBox strCode & "条码图书你已经借阅,在借书清单中序号为" _
                   & i & "!", , "图书借阅管理"
            Exit Sub
        End If
    End With
    
    '添加借书记录
    With Library_Manage.rsLendReturn
        If .State = adStateClosed Then .Open
        .AddNew
        .Fields("条码") = strCode
        .Fields("证号") = Trim(txtNum)
        .Fields("借期") = Date
        If txtDays <> "无限制" Then _
        .Fields("还期") = DateAdd("m", Val(Left(txtDays, 1)), Date)
        .Fields("库号") = cmbRoom.ListIndex
        .Update
    End With
    '修改馆藏书目可借数,在检查条码时对应的馆藏记录已是当前记录
    With Library_Manage.rsBooksStore
        .Fields("可借数") = .Fields("可借数") - 1
        '生成借书清单项目信息
        If Val(txtLended) = 0 Then
            strT = "   " & 1
        Else
            strT = "   " & LendedBooks.Rows
        End If
        strT = strT & vbTab & .Fields("书名")
        strT = strT & vbTab & strCode
        strT = strT & vbTab & .Fields("索书号")
        .Update             '保存对可借数的修改
        .Filter = ""        '取消按库室名过滤
    End With
    '生成借书清单项目信息
    strT = strT & vbTab & Date
    strT = strT & vbTab & DateAdd("m", Val(Left(txtDays, 1)), Date)
    strT = strT & vbTab & "False"
    strT = strT & vbTab & cmbRoom
    '添加借书清单项目
    With LendedBooks
        If Val(txtLended) <> 0 Then
            .AddItem strT
        Else
            .FixedRows = 0
            .RemoveItem 1
            .AddItem strT
            .FixedRows = 1
        End If
    End With
    '修改显示的个人借书数量
    txtLends = Val(txtLends) - 1
    txtLended = Val(txtLended) + 1
End Sub

Private Sub cmdNum_Click()
    Dim strNum$, strSQL1$, strSQL2$, i%
    '输入借阅证编号
    strNum = InputBox("请输入借阅证号码:", "图书借阅管理")
    
    '检查借阅证号是否正确
    With Library_Manage.rsReaderData
        If .State = adStateClosed Then .Open
        .MoveFirst
        .Find "证号='" & strNum & "'"
        If .EOF Then
            MsgBox "借阅证号输入错误!", vbCritical, "图书借阅管理"
            Exit Sub
        End If
    End With
    If strNum = "" Then Exit Sub
    
    '获得读者个人及借书信息
    strSQL1 = "select 读者数据.*,读者类别.* from 读者数据,读者类别 " _
             & "where 类号=编号 and 证号='" & strNum & "'"
    strSQL2 = "select distinct 书名,图书借阅.条码,索书号,借期,还期,已还,库号 " & _
             "from 图书借阅,馆藏书目 where 图书借阅.条码=馆藏书目.条码 " & _
             "and 图书借阅.证号='" & strNum & "'" & "order by 借期"
    With Library_Manage.Library_Manage_Con
        If .State = adStateClosed Then .Open
        Set objInfo = New Recordset
        Set objInfo = .Execute(strSQL1)
        Set objBooks = New Recordset
        Set objBooks = .Execute(strSQL2)
    End With
    
    '显示读者个人信息
    If objInfo.RecordCount > 0 Then
        With objInfo
            txtName = .Fields("姓名")
            txtDept = .Fields("部门")
            txtNum = .Fields("证号")
            If .Fields("有效期") = 0 Then
                txtDate = "无"
            Else
                txtDate = DateAdd("yyyy", 4, .Fields("日期"))
            End If
            If .Fields("借书期") = 0 Then
                txtDays = "无限制"
            Else
                txtDays = .Fields("借书期") & "个月"
            End If
            txtType = .Fields("名称")
            txtLended = objBooks.RecordCount
            txtLends = .Fields("借书量") - objBooks.RecordCount
        End With
        '根据借书情况请用借阅功能按钮
        cmdNum.Enabled = False
        If objBooks.RecordCount > 0 Then
            cmdReLend.Enabled = True
            cmdReturn.Enabled = True
        End If
        If Val(txtLends) > Val(txtLended) Then
            cmdLend.Enabled = True
            cmdReLend.Enabled = True
        Else
            cmdLend.Enabled = False
            cmdReLend.Enabled = False
        End If
        '显示借书清单
        If objBooks.RecordCount > 0 Then _
            ShowBooksList objBooks, LendedBooks
    End If
End Sub

Private Sub cmdReturn_Click()
    Dim strCode$, i%, isOut As Boolean
    strCode = UCase(InputBox("请输入图书条码:", "图书借阅管理"))
    If strCode = "" Then Exit Sub
    '检查指定条码对应的图书是否已在借书清单中
    With LendedBooks
        For i = 1 To .Rows - 1
            If .TextMatrix(i, 2) = strCode Then Exit For
        Next
        If i = .Rows Then
            MsgBox strCode & "条码输入错误!", , "图书借阅管理"
            Exit Sub
        Else
            '检查图书是否超期
            If .TextMatrix(i, 0) Like "[*]*" Then isOut = True
         End If
    End With
    '删除或修改借书记录
    With Library_Manage.rsLendReturn
        If .State = adStateClosed Then .Open
        .Filter = "证号='" & Trim(txtNum) & "'"
        .Find "条码='" & strCode & "'"
        If isOut Then
            .Fields("已还") = True  '修改超期借书记录的已还字段
        Else
            .Delete                 '删除未超期借书记录
        End If
        .Update
        .Filter = ""
    End With
    '修改可借数
    With Library_Manage.rsBooksStore
        If .State = adStateClosed Then .Open
        .Filter = "库室名='" & LendedBooks.TextMatrix(i, 7) & "'"
        .Find "条码='" & strCode & "'"
        .Fields("可借数") = .Fields("可借数") + 1
        .Update
        .Filter = ""
    End With
    '删除或修改借书清单项目
    With LendedBooks
        If isOut Then
            '修改超期借书记录的已还字段
            .TextMatrix(i, 6) = "True"
        Else
            '删除借书清单中的借书记录
            If .Rows <> 2 Then
                .RemoveItem i       '如果不是最后一条借书记录,则将其删除
            Else
                '清除第1行中的借书记录数据
                For i = 0 To .Cols - 1
                    .TextMatrix(1, i) = ""
                Next
            End If
        End If
    End With
    '修改读者借书数目
    txtLends = Val(txtLends) + 1
    txtLended = Val(txtLended) - 1
End Sub

Private Sub Form_Load()
    Dim strCN, i%
    With LendedBooks
        '调整各列宽度
        .ColWidth(0) = 600:     .ColWidth(1) = 3000:    .ColWidth(2) = 1000
        .ColWidth(3) = 2000:    .ColWidth(4) = 800:     .ColWidth(5) = 800
        .ColWidth(6) = 800:     .ColWidth(7) = 2000
        .ColAlignment(0) = 1:   .ColAlignment(4) = 1
        .ColAlignment(5) = 1:   .ColAlignment(7) = 1
        '显示列表字段名称
        strCN = Array("序号", "书名", "条码", "索书号", "借期", "还期", "已还", "库名")
        For i = 0 To 7
            .TextMatrix(0, i) = strCN(i)
        Next
    End With
End Sub

Private Sub Form_Resize()
    LendedBooks.Width = Abs(Me.ScaleWidth - 2 * LendedBooks.Left)
    LendedBooks.Height = Abs(Me.ScaleHeight - LendedBooks.Top - 200)
End Sub

Private Sub cmdExit_Click()
    Unload Me       '关闭借阅管理窗体
End Sub

Private Sub ShowBooksList(Data As Recordset, List As MSFlexGrid)
    Dim i%, iRow%, OutDate As Boolean, strT$
    With List
        .FixedRows = 0
        .RemoveItem 1
        '显示借书记录
        While Not Data.EOF
            strT = Data.AbsolutePosition
            For i = 0 To Data.Fields.Count - 2
                strT = strT & vbTab & Data.Fields(i)
            Next
            strT = strT & vbTab & cmbRoom.List(Data.Fields(i))
            If IsDate(Data.Fields("还期")) Then
                If CDate(Data.Fields("还期")) < Date Then
                    OutDate = True
                    iRow = iRow + 1
                    strT = "*  " & strT     '为超期的借书记录添加标记
                Else
                    strT = "   " & strT
                End If
            Else
                strT = "   " & strT
            End If
            .AddItem strT
            Data.MoveNext
        Wend
        .FixedRows = 1     '固定字段标题
    End With
    If OutDate Then         '显示借书超期提示
        MsgBox "你共有" & iRow & "本书已经超期!", vbCritical, "图书借阅管理"
        '禁用借书、续借按钮
        cmdLend.Enabled = False
        cmdReLend.Enabled = False
    End If
End Sub



⌨️ 快捷键说明

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