小妹参照了一本书上的一人实例:Visaul Basic 数据库开发入门与范例解析,郭胜  夏邦贵等编,机械工业出版社       用的上面的高校图书管理系统        现在程序有些地方调试不出来了,有哪位调试出来了,帮一下忙!!!!!!

解决方案 »

  1.   

    太长了,我贴一下          
    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 SubPrivate 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 SubPrivate 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