- •Введение
- •1. Постановка задачи
- •2.1.1. Программы для упорядочивания домашней библиотеки
- •2.1.1.1. BookSnake
- •2.1.1.2. PSD Home Library
- •2.1.1.3. Unicat
- •2.1.1.4. Учёт книг
- •2.1.4. Вывод
- •2.1.2. Автоматизированные библиотечные информационные системы
- •2.1.3. Электронные библиотеки
- •2.2.1.1. Microsoft SQL Server
- •2.2.1.2. Interbase
- •2.2.1.3. Firebird (FirebirdSQL)
- •2.2.1.4. MySQL
- •2.2.2.2. Microsoft Access
- •2.2.2.3. OpenOffice.org Base
- •2.2.3. Вывод
- •3.1.1. Инфологическая модель данных
- •3.1.2. Датологическая модель данных
- •3.1.3. Физическая модель данных
- •3.1.4. Построение схемы данных
- •3.2. Разработка интерфейса
- •3.2.1. Главная кнопочная форма «frmMain»
- •3.2.2. Форма «frmBooks». Работа с книгами
- •3.2.3. Форма «frmEditBook». Редактирование данных о книге
- •3.2.4. Форма «frmEditBooks». Редактирование данных об экземпляре книги
- •3.2.5. Форма «frmEditWeb». Редактирование данных о web-узле
- •3.2.6. Форма «frmVersion». Работа с ПО
- •3.2.7. Форма «frmEditSoft». Редактирование данных о ПО
- •3.2.8. Форма «frmEditManufacturer». Редактирование данных о производителе
- •3.2.9. Форма «frmEditVersion». Редактирование данных об экземпляре (версии) ПО
- •3.2.10. Форма «frmWeb». Web-узлы
- •4. Результаты испытаний
- •Заключение
- •Список источников
- •Приложение 1. Созданные в MS Access таблицы и примеры их наполнения
- •Приложение 2. Коды программ
- •Приложение 3. Техническое задание
Приложение 2. Коды программ
Код программы для формы «frmMain»
Option Compare Database
Private Sub btnBooks_Click()
On Error GoTo Err_btnBooks_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "frmBooks"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_btnBooks_Click:
Exit Sub
Err_btnBooks_Click:
MsgBox Err.Description
Resume Exit_btnBooks_Click
End Sub
Private Sub btnSoft_Click()
On Error GoTo Err_btnSoft_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "frmVersion"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_btnSoft_Click:
Exit Sub
Err_btnSoft_Click:
MsgBox Err.Description
58
Resume Exit_btnSoft_Click
End Sub
Private Sub btnWeb_Click()
On Error GoTo Err_btnWeb_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "frmWeb"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_btnWeb_Click:
Exit Sub
Err_btnWeb_Click:
MsgBox Err.Description
Resume Exit_btnWeb_Click
End Sub
Код программы для формы «frmBooks»
Option Compare Database
Option Explicit
Private Sub BtnAdd_Click() DoCmd.OpenForm "frmEditBook", acNormal End Sub
Private Sub btnAddBooks_Click() DoCmd.OpenForm "frmEditBooks", acNormal
End Sub
Private Sub btnChange_Click()
DoCmd.OpenForm "frmEditBook", acNormal, , , , , _
59
IIf(IsNull(List.Value), Null, List.Column(0, List.ListIndex))
End Sub
Private Sub btnChangeBooks_Click()
DoCmd.OpenForm "frmEditBooks", acNormal, , , , , _ IIf(IsNull(List.Value), Null, List.Column(1, List.ListIndex))
End Sub
Private Sub btnClear_Click() SelectLanguage.Value = 1 SelectExtension.Value = 1 SelectYear = Null SelectPlace = 1
List.RowSource = "SELECT tblBook.ID_Book, tblBooks.ID_Books, tblBook.Bibliographic, tblBooksType.BooksType, tblExtension.Extension, tblBooks.[Publication Date], tblLanguage.Language, tblTypeOfPlace.Type, tblBooks.Elaboration, tblBooks.Source, tblWeb.URL, tblBook.Annotacion FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN (tblLanguage INNER JOIN (tblExtension INNER JOIN (tblBook INNER JOIN (tblBooksType INNER JOIN tblBooks ON tblBooksType.ID_BooksType = tblBooks.BooksType) ON tblBook.ID_Book = tblBooks.Book) ON tblExtension.ID_Extension = tblBooks.Extension) ON tblLanguage.ID_Language = tblBooks.Language) ON tblTypeOfPlace.ID_Place = tblBooks.[Place of storage]) ON tblWeb.Code = tblBooks.Web ORDER BY tblBook.Bibliographic;" List.Requery
End Sub
Private Sub btnClose_Click()
Me.Undo
DoCmd.Close acForm, "frmBooks"
End Sub
Private Sub btnFind_Click()
Dim b As Boolean
60
b = False
List.RowSource = "SELECT tblBook.ID_Book, tblBooks.ID_Books, tblBook.Bibliographic, tblBooksType.BooksType, tblExtension.Extension, tblBooks.[Publication Date], tblLanguage.Language, tblTypeOfPlace.Type, tblBooks.Elaboration, tblBooks.Source, tblWeb.URL, tblBook.Annotacion FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN (tblLanguage INNER JOIN (tblExtension INNER JOIN (tblBook INNER JOIN (tblBooksType INNER JOIN tblBooks ON tblBooksType.ID_BooksType = tblBooks.BooksType) ON tblBook.ID_Book = tblBooks.Book) ON tblExtension.ID_Extension = tblBooks.Extension) ON tblLanguage.ID_Language = tblBooks.Language) ON tblTypeOfPlace.ID_Place = tblBooks.[Place of storage]) ON tblWeb.Code = tblBooks.Web WHERE "
If SelectLanguage.Value <> 1 Then
List.RowSource = List.RowSource + " tblLanguage.ID_Language=" + SelectLanguage.Value
b = True End If
If SelectExtension.Value <> 1 Then
If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource + " tblExtension.ID_Extension=" +
SelectExtension.Value b = True
End If
If SelectYear <> "" And Not IsNull(SelectYear) Then If b Then List.RowSource = List.RowSource + " AND "
List.RowSource = List.RowSource + " tblBooks.[Publication Date]="
+CStr(SelectYear.Value) b = True
End If
If SelectPlace.Value <> 1 Then
If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource + " tblTypeOfPlace.ID_Place=" +
SelectPlace.Value b = True
61
End If
If SelectBibliography.Value <> "" And Not IsNull(SelectBibliography) Then
If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource + " tblBook.Bibliographic Like '*"
+ SelectBibliography.Value + "*'" b = True
End If
If SelectAuthor.Value <> "" And Not IsNull(SelectAuthor) Then If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource + " tblBook.Аuthors Like '*" +
SelectAuthor.Value + "*'" b = True
End If
If b Then
List.RowSource = List.RowSource + " ORDER BY tblBook.Bibliographic;"
Else
List.RowSource = "SELECT tblBook.ID_Book, tblBooks.ID_Books, tblBook.Bibliographic, tblBooksType.BooksType, tblExtension.Extension, tblBooks.[Publication Date], tblLanguage.Language, tblTypeOfPlace.Type, tblBooks.Elaboration, tblBooks.Source, tblWeb.URL, tblBook.Annotacion FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN (tblLanguage INNER JOIN (tblExtension INNER JOIN (tblBook INNER JOIN (tblBooksType INNER JOIN tblBooks ON tblBooksType.ID_BooksType = tblBooks.BooksType) ON tblBook.ID_Book = tblBooks.Book) ON tblExtension.ID_Extension = tblBooks.Extension) ON tblLanguage.ID_Language = tblBooks.Language) ON tblTypeOfPlace.ID_Place = tblBooks.[Place of storage]) ON tblWeb.Code = tblBooks.Web ORDER BY tblBook.Bibliographic;"
End If List.Requery End Sub
62
Private Sub Form_Activate()
List.Requery
End Sub
Private Sub Form_Load()
List.RowSource = "SELECT tblBook.ID_Book, tblBooks.ID_Books, tblBook.Bibliographic, tblBooksType.BooksType, tblExtension.Extension, tblBooks.[Publication Date], tblLanguage.Language, tblTypeOfPlace.Type, tblBooks.Elaboration, tblBooks.Source, tblWeb.URL, tblBook.Annotacion FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN (tblLanguage INNER JOIN (tblExtension INNER JOIN (tblBook INNER JOIN (tblBooksType INNER JOIN tblBooks ON tblBooksType.ID_BooksType = tblBooks.BooksType) ON tblBook.ID_Book = tblBooks.Book) ON tblExtension.ID_Extension = tblBooks.Extension) ON tblLanguage.ID_Language = tblBooks.Language) ON tblTypeOfPlace.ID_Place = tblBooks.[Place of storage]) ON tblWeb.Code = tblBooks.Web ORDER BY tblBook.Bibliographic;"
End Sub
Private Sub List_BeforeUpdate(Cancel As Integer)
List_Click
End Sub
Private Sub List_Click()
bibliographic.Caption = List.Column(2, List.ListIndex) Class.Caption = List.Column(3, List.ListIndex) Extension.Caption = List.Column(4, List.ListIndex) Language.Caption = List.Column(6, List.ListIndex) place.Caption = List.Column(7, List.ListIndex) Elaboration.Caption = List.Column(8, List.ListIndex) Source.Caption = List.Column(9, List.ListIndex) URL.Caption = List.Column(10, List.ListIndex) Annotation.Caption = List.Column(11, List.ListIndex) End Sub
63
Private Sub List_DblClick(Cancel As Integer) btnChangeBooks_Click
End Sub
Код программы для формы «frmEditBook»
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.RecordSource = "select * from tblBook where ID_Book=" +
Me.OpenArgs
Me.DataEntry = False
Else
Me.DataEntry = True
End If
End Sub
Private Sub btnOk_Click()
DoCmd.Close acForm, "frmEditBook"
Forms![frmBooks]!List.Requery
End Sub
Private Sub btnCancel_Click() Me.Undo
DoCmd.Close End Sub
Код программы для формы «frmEditBooks»
Option Compare Database
Private Sub btnAddWeb_Click()
DoCmd.OpenForm "frmEditWeb", acNormal
End Sub
Private Sub btnEditWeb_Click()
DoCmd.OpenForm "frmEditWeb", acNormal, , , , , Web.Column(0, Web.ListIndex)
64
End Sub
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.RecordSource = "select * from tblBooks where ID_Books=" +
Me.OpenArgs
Me.DataEntry = False
Else
Me.DataEntry = True
End If
End Sub
Private Sub btnOk_Click()
DoCmd.Close acForm, "frmEditBooks"
Forms![frmBooks]!List.Requery
End Sub
Private Sub btnCancel_Click() Me.Undo
DoCmd.Close End Sub
Код программы для формы «frmEditWeb»
Option Compare Database
Private Sub Form_Open(Cancel As Integer) If Not IsNull(Me.OpenArgs) Then
Me.RecordSource = "select * from tblWeb where Code=" + Me.OpenArgs Me.DataEntry = False
Else
Me.DataEntry = True End If
End Sub
Private Sub btnOk_Click()
DoCmd.Close acForm, "frmEditWeb"
End Sub
65
Private Sub btnCancel_Click() Me.Undo
DoCmd.Close End Sub
Код программы для формы «frmVersion»
Option Compare Database Option Explicit
Private Sub BtnAdd_Click()
DoCmd.OpenForm "frmEditSoft", acNormal
End Sub
Private Sub btnAddVersion_Click() DoCmd.OpenForm "frmEditVersion", acNormal End Sub
Private Sub btnChange_Click()
DoCmd.OpenForm "frmEditSoft", acNormal, , , , ,
IIf(IsNull(List.Value), Null, List.Column(1, List.ListIndex)) End Sub
Private Sub btnChangeVersion_Click() DoCmd.OpenForm "frmEditVersion", acNormal, , , , ,
IIf(IsNull(List.Value), Null, List.Column(0, List.ListIndex)) End Sub
Private Sub btnClear_Click() SelectLanguage.Value = 1 SelectManufacturer.Value = 1 SelectVersion = Null SelectPlace = 1
SelectOS = Null
SelectSoft = Null
List.RowSource = "SELECT tblVersion.ID_Version, tblSoft.ID_Soft, tblManufacturer.ID_Manufacturer, tblSoft.Name, tblManufacturer.Name,
66
tblWeb.URL, tblVersion.Version, tblLicense.Name, tblVersion. [Operating system], tblLanguage.Language, tblTypeOfPlace.Type, tblVersion.Elaboration FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN ((tblManufacturer INNER JOIN tblSoft ON tblManufacturer.ID_Manufacturer = tblSoft.Manufacturer) INNER JOIN (tblLicense INNER JOIN (tblLanguage INNER JOIN tblVersion ON tblLanguage.ID_Language = tblVersion.Language) ON tblLicense.ID_License = tblVersion.License) ON tblSoft.ID_Soft = tblVersion.Soft) ON tblTypeOfPlace.ID_Place = tblVersion.[Place of storage]) ON tblWeb.Code = tblManufacturer.Web ORDER BY tblSoft.Name;"
List.Requery End Sub
Private Sub btnClose_Click() Me.Undo
DoCmd.Close acForm, "frmVersion" End Sub
Private Sub btnFind_Click() Dim b As Boolean
b = False
List.RowSource = "SELECT tblVersion.ID_Version, tblSoft.ID_Soft, tblManufacturer.ID_Manufacturer, tblSoft.Name, tblManufacturer.Name, tblWeb.URL, tblVersion.Version, tblLicense.Name, tblVersion. [Operating system], tblLanguage.Language, tblTypeOfPlace.Type, tblVersion.Elaboration FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN ((tblManufacturer INNER JOIN tblSoft ON tblManufacturer.ID_Manufacturer = tblSoft.Manufacturer) INNER JOIN (tblLicense INNER JOIN (tblLanguage INNER JOIN tblVersion ON tblLanguage.ID_Language = tblVersion.Language) ON tblLicense.ID_License = tblVersion.License) ON tblSoft.ID_Soft = tblVersion.Soft) ON tblTypeOfPlace.ID_Place = tblVersion.[Place of storage]) ON tblWeb.Code = tblManufacturer.Web WHERE "
If SelectLanguage.Value <> 1 Then
List.RowSource = List.RowSource + "(tblLanguage.ID_Language=" +
67
SelectLanguage.Value + ")" b = True
End If
If SelectManufacturer.Value <> 1 Then
If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource +
"(tblManufacturer.ID_Manufacturer=" + SelectManufacturer.Value + ")" b = True
End If
If SelectVersion.Value <> "" And Not IsNull(SelectVersion) Then If b Then List.RowSource = List.RowSource + " AND "
List.RowSource = List.RowSource + "(tblVersion.Version Like '*" + SelectVersion.Value + "*')"
b = True End If
If SelectPlace.Value <> 1 Then
If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource + "(tblTypeOfPlace.ID_Place=" +
SelectPlace.Value + ")" b = True
End If
If SelectOS.Value <> "" And Not IsNull(SelectOS) Then If b Then List.RowSource = List.RowSource + " AND "
List.RowSource = List.RowSource + "(tblVersion.[Operating system] Like ""*" + SelectOS.Value + "*"")"
b = True End If
If Not IsNull(SelectSoft) Then
If b Then List.RowSource = List.RowSource + " AND " List.RowSource = List.RowSource + "(tblSoft.ID_Soft=" +
SelectSoft.Value + ")" b = True
End If
If b Then
List.RowSource = List.RowSource + " ORDER BY tblSoft.Name;"
68
Else
List.RowSource = "SELECT tblVersion.ID_Version, tblSoft.ID_Soft, tblManufacturer.ID_Manufacturer, tblSoft.Name, tblManufacturer.Name, tblWeb.URL, tblVersion.Version, tblLicense.Name, tblVersion. [Operating system], tblLanguage.Language, tblTypeOfPlace.Type, tblVersion.Elaboration FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN ((tblManufacturer INNER JOIN tblSoft ON tblManufacturer.ID_Manufacturer = tblSoft.Manufacturer) INNER JOIN (tblLicense INNER JOIN (tblLanguage INNER JOIN tblVersion ON tblLanguage.ID_Language = tblVersion.Language) ON tblLicense.ID_License = tblVersion.License) ON tblSoft.ID_Soft = tblVersion.Soft) ON tblTypeOfPlace.ID_Place = tblVersion.[Place of storage]) ON tblWeb.Code = tblManufacturer.Web ORDER BY tblSoft.Name;"
End If List.Requery End Sub
Private Sub Form_Activate()
List.Requery
End Sub
Private Sub Form_Load()
List.RowSource = "SELECT tblVersion.ID_Version, tblSoft.ID_Soft, tblManufacturer.ID_Manufacturer, tblSoft.Name, tblManufacturer.Name, tblWeb.URL, tblVersion.Version, tblLicense.Name, tblVersion. [Operating system], tblLanguage.Language, tblTypeOfPlace.Type, tblVersion.Elaboration FROM tblWeb INNER JOIN (tblTypeOfPlace INNER JOIN ((tblManufacturer INNER JOIN tblSoft ON tblManufacturer.ID_Manufacturer = tblSoft.Manufacturer) INNER JOIN (tblLicense INNER JOIN (tblLanguage INNER JOIN tblVersion ON tblLanguage.ID_Language = tblVersion.Language) ON tblLicense.ID_License = tblVersion.License) ON tblSoft.ID_Soft = tblVersion.Soft) ON tblTypeOfPlace.ID_Place = tblVersion.[Place of storage]) ON tblWeb.Code = tblManufacturer.Web ORDER BY
69
tblSoft.Name;" SelectLanguage.Value = 1 SelectManufacturer.Value = 1 SelectVersion = Null SelectPlace = 1
SelectOS = Null
SelectSoft = Null End Sub
Private Sub List_BeforeUpdate(Cancel As Integer)
List_Click
End Sub
Private Sub List_Click()
Soft.Caption = List.Column(3, List.ListIndex) Manufacturer.Caption = List.Column(4, List.ListIndex) URL.Caption = List.Column(4, List.ListIndex) Version.Caption = List.Column(6, List.ListIndex) License.Caption = List.Column(7, List.ListIndex) OS.Caption = List.Column(8, List.ListIndex) Language.Caption = List.Column(9, List.ListIndex) place.Caption = List.Column(10, List.ListIndex) Elaboration.Caption = List.Column(11, List.ListIndex) End Sub
Private Sub List_DblClick(Cancel As Integer) btnChange_Click
End Sub
Код программы для формы «frmEditSoft»
Option Compare Database
Private Sub btnAddManufacturer_Click() DoCmd.OpenForm "frmEditManufacturer", acNormal End Sub
Private Sub dtnEditManufacturer_Click()
70
DoCmd.OpenForm "frmEditManufacturer", acNormal, , , , ,
Manufacturer.Column(0, Manufacturer.ListIndex) End Sub
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.RecordSource = "select * from tblSoft where ID_Soft=" +
Me.OpenArgs
Me.DataEntry = False
Else
Me.DataEntry = True
End If
End Sub
Private Sub btnOk_Click()
DoCmd.Close acForm, "frmEditSoft"
Forms![frmVersion]!List.Requery
End Sub
Private Sub btnCancel_Click()
Me.Undo
DoCmd.Close
End Sub
71
Код программы для формы «frmManufacturer»
Option Compare Database
Private Sub btnAddWeb_Click()
DoCmd.OpenForm "frmEditWeb", acNormal
End Sub
Private Sub btnEditWeb_Click()
DoCmd.OpenForm "frmEditWeb", acNormal, , , , , Web.Column(0, Web.ListIndex)
End Sub
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.RecordSource = "select * from tblManufacturer where
ID_Manufacturer=" + Me.OpenArgs
Me.DataEntry = False
Else
Me.DataEntry = True
End If
End Sub
Private Sub btnOk_Click()
DoCmd.Close acForm, "frmEditManufacturer"
End Sub
Private Sub btnCancel_Click()
Me.Undo
DoCmd.Close
End Sub
72
Код программы для формы «frmEditVersion»
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
Me.RecordSource = "select * from tblVersion where ID_Version=" +
Me.OpenArgs
Me.DataEntry = False
Else
Me.DataEntry = True
End If
End Sub
Private Sub btnOk_Click()
DoCmd.Close acForm, "frmEditVersion"
Forms![frmVersion]!List.Requery
End Sub
Private Sub btnCancel_Click()
Me.Undo
DoCmd.Close
End Sub
73
