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

📄 borrow_re.frm

📁 里面包括图书馆的基本功能
💻 FRM
📖 第 1 页 / 共 2 页
字号:
            .TextMatrix(1, i) = ""
        Next
    End With
End Sub

Private Sub cmdReborrow_Click()
    Dim iKN%, Index%, strSQL$
    If Val(txtBorrowed) = 0 Then Exit Sub
    Index = Val((InputBox("请输入续借图书在借书清单中的序号:", _
                "图书借阅管理")))
    If Index < 1 Or Index > LendedBooks.Rows - 1 Then
        MsgBox "输入的序号无效!", vbCritical, "图书借阅管理"
        Exit Sub
    End If
    With LendedBooks
        '修改图书借阅记录
        strSQL = "UPDATE 借阅 SET 借书日期='" & Date & "',还书日期='" _
                & DateAdd("m", 1, Date) & "',续借否 = '是' " _
                & "WHERE 书号='" & .TextMatrix(Index, 2) _
                & "' AND 读者号='" & Trim(ReaderNO) & "'"
    End With
    Library_Manager.Library_Manager_Con.Execute strSQL
    '修改借书清单
    LendedBooks.TextMatrix(Index, 3) = Date
    LendedBooks.TextMatrix(Index, 4) = DateAdd("m", 1, Date)
    LendedBooks.TextMatrix(Index, 5) = "是"
End Sub
Private Sub cmdBorrow_Click()
    Dim strCode$, strT$, i%
    If Val(txtBorrowed) >= 5 Then
        MsgBox "已到最大借书量,不能再借书!", vbCritical, "图书借阅管理"
        Exit Sub
    End If
    strCode = UCase(InputBox("请输入图书条码:", "图书借阅管理"))
    If strCode = "" Then Exit Sub
    '检查当前库中有该条码的图书是否输入正确
    With Library_Manager.rsBook
        If .State = adStateClosed Then .Open
        
        .Find "书号='" & strCode & "'"
        If .EOF Then
            MsgBox "图书馆中无书号为<" & strCode & ">的图书!", _
                    vbCritical, "图书借阅管理"
            Exit Sub
        End If
        If .Fields("数量") <= .Fields("外借数") Then
            MsgBox "本书已经全部外借了!", _
                     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_Manager.rsBorrow_Re
        If .State = adStateClosed Then .Open
        .AddNew
        .Fields("书号") = strCode
        .Fields("读者号") = Trim(ReaderNO)
        .Fields("借书日期") = Date
        .Fields("还书日期") = DateAdd("m", 1, Date)
        .Fields("续借否") = "否"
        .Update
    End With
    '修改馆藏书目可借数,在检查条码时对应的馆藏记录已是当前记录
    With Library_Manager.rsBook
        .Fields("外借数") = .Fields("外借数") + 1
        '生成借书清单项目信息
        If Val(txtBorrowed) = 0 Then
            strT = "   " & 1
        Else
            strT = "   " & LendedBooks.Rows
        End If
        strT = strT & vbTab & .Fields("书名")
        strT = strT & vbTab & strCode
       
        .Update             '保存对可借数的修改
        .Filter = ""        '取消按库室名过滤
    End With
    '生成借书清单项目信息
    strT = strT & vbTab & Date
    strT = strT & vbTab & DateAdd("m", 1, Date)
    strT = strT & vbTab & " 否"
    
    '添加借书清单项目
    With LendedBooks
        If Val(txtBorrowed) <> 0 Then
            .AddItem strT
        Else
            .FixedRows = 0
            .RemoveItem 1
            .AddItem strT
            .FixedRows = 1
        End If
    End With
    '修改显示的个人借书数量
    txtBorrows = Val(txtBorrows) - 1
    txtBorrowed = Val(txtBorrowed) + 1
    If 5 > Val(txtBorrowed) Then
        cmdBorrow.Enabled = True
        cmdReborrow.Enabled = True
    Else
        cmdBorrow.Enabled = False
        cmdReborrow.Enabled = False
    End If
End Sub

Private Sub cmdNum_Click()
   
    Dim strNum$, strSQL1$, strSQL2$, i%
    '输入借阅证编号
    strNum = InputBox("请输入读者号码:", "图书借阅管理")
    
    '检查借阅证号是否正确
    With Library_Manager.rsReader
        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 读者号 = '" & strNum & "'"
    strSQL2 = "select distinct 书名, 借阅.书号,借书日期,还书日期,续借否 from 借阅, 图书" & _
             " where 借阅.书号 = 图书.书号 " & _
             "and 借阅.读者号 = '" & strNum & "'" & "order by 借书日期"
    With Library_Manager.Library_Manager_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
            ReaderNO = .Fields("读者号")
            ReaderName = .Fields("姓名")
            Sex = .Fields("性别")
            ReaderType = .Fields("类别")
            txtYN = .Fields("欠书否")
            txtBorrowed = objBooks.RecordCount
            txtBorrows = 5 - objBooks.RecordCount
        End With
        '根据借书情况请用借阅功能按钮
        cmdNum.Enabled = False
        If objBooks.RecordCount > 0 Then
            cmdReborrow.Enabled = True
            cmdReturn.Enabled = True
        End If
        If 5 > Val(txtBorrowed) Then
            cmdBorrow.Enabled = True
            cmdReborrow.Enabled = True
        Else
            cmdBorrow.Enabled = False
            cmdReborrow.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_Manager.rsBorrow_Re
        If .State = adStateClosed Then .Open
        .Filter = "读者号='" & Trim(ReaderNO) & "'"
        .Find "书号='" & strCode & "'"
        .Delete                 '删除未超期借书记录
        'End If
        .Update
        .Filter = ""
    End With
    '修改可借数
    With Library_Manager.rsBook
        If .State = adStateClosed Then .Open
        
        .Find "书号='" & strCode & "'"
        .Fields("外借数") = .Fields("外借数") - 1
        .Update
        .Filter = ""
    End With
    '删除或修改借书清单项目
    With LendedBooks
        
            '删除借书清单中的借书记录
            If .Rows <> 2 Then
                .RemoveItem i       '如果不是最后一条借书记录,则将其删除
            Else
                '清除第1行中的借书记录数据
                For i = 0 To .Cols - 1
                    .TextMatrix(1, i) = ""
                Next
            End If
        
    End With
    '修改读者借书数目
    txtBorrows = Val(txtBorrows) + 1
    txtBorrowed = Val(txtBorrowed) - 1
    If 5 > Val(txtBorrowed) Then
            cmdBorrow.Enabled = True
            cmdReborrow.Enabled = True
    Else
            cmdBorrow.Enabled = False
            cmdReborrow.Enabled = False
    End If
    
End Sub

Private Sub Form_Load()
    Dim strCN, i%
    With LendedBooks
        '调整各列宽度
        .ColWidth(0) = 600:     .ColWidth(1) = 3000:    .ColWidth(2) = 1000
        .ColWidth(3) = 1000:    .ColWidth(4) = 1000:     .ColWidth(5) = 800
        
        .ColAlignment(0) = 1:   .ColAlignment(4) = 1
        
        .ColAlignment(5) = 1:   .ColAlignment(7) = 1
        '显示列表字段名称
        strCN = Array("序号", "书名", "书号", "借书日期", "还书日期", "续借否")
        For i = 0 To 5
            .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)
    On Error Resume Next
    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 - 1
                strT = strT & vbTab & Data.Fields(i)
            Next
            
            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, "图书借阅管理"
        '禁用借书、续借按钮
        cmdBorrow.Enabled = False
        cmdReborrow.Enabled = False
    End If
End Sub

⌨️ 快捷键说明

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