Автоматизированной информационная библиотечная система
Таблица 1.12.
Структура таблицы “Издательства”
№
|
Имя поля
|
Тип
|
Размер
|
Дес
|
Назначение
|
|
1
|
Идентификатор издательства
|
Счетчик
|
Длинное целое
|
0
|
Индексированное ключевое поле, совпадения не допускаются
|
|
2
|
Место издания
|
Текстовый
|
20
|
|
|
|
3
|
Издательство
|
Текстовый
|
50
|
|
|
|
4
|
Телефон
|
Текстовый
|
15
|
|
Шаблон ввода:
!\(999") "000\-0000;0;_
|
|
|
Таблица 1.13.
Структура таблицы “Инвентарная книга”
№
|
Имя поля
|
Тип
|
Размер
|
Дес
|
Назначение
|
|
1
|
Инвентарный номер
|
Числовой
|
С плавающей точкой (8 байт)
|
0
|
Индексированное ключевое поле, совпадения не допускаются
|
|
2
|
Цена издания
|
Денежный
|
Денежный
|
2
|
|
|
3
|
Идентификатор издания
|
Числовой
|
Длинное целое
|
0
|
|
|
4
|
Состояние
|
Текстовый,
подстановка
|
10
|
|
Поле со списком:
"в фонде"; "на руках"
|
|
|
Таблица 1.14.
Структура таблицы “Справочник ББК”
№
|
Имя поля
|
Тип
|
Размер
|
Дес
|
Назначение
|
|
1
|
Код ББК
|
Текстовый
|
10
|
|
Индексированное ключевое поле, совпадения не допускаются
|
|
2
|
Описание ББК
|
Текстовый
|
100
|
|
|
|
|
Таблица 1.15.
Структура таблицы “Сведения о читателях”
№
|
Имя поля
|
Тип
|
Размер
|
Дес
|
Назначение
|
|
1
|
Номер читательского формуляра
|
Счетчик
|
Длинное целое
|
0
|
Индексированное поле, совпадения не допускаются
|
|
2
|
Фамилия
|
Текстовый
|
20
|
|
|
|
3
|
Имя_Отчество
|
Текстовый
|
40
|
|
|
|
4
|
Год рождения
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон ввода:
99/99/00;0;_
|
|
5
|
Группа
|
Текстовый: подстановка
|
10
|
|
Поле со списком: таблица “Группы”
|
|
6
|
Домашний адрес временный
|
Текстовый
|
60
|
|
|
|
7
|
Домашний адрес постоянный
|
Текстовый
|
60
|
|
|
|
8
|
Телефон
|
Текстовый
|
15
|
|
Шаблон ввода:
!\(999") "000\-0000;0;_
|
|
9
|
Дата заведения формуляра
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон: 99/99/00;0;_
|
|
10
|
Дата списания
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон: 99/99/00;0;_
|
|
11
|
Дата перегистрации
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон: 99/99/00;0;_
|
|
12
|
Фамилия отца
|
Текстовый
|
20
|
|
|
|
13
|
Имя_отчество отца
|
Текстовый
|
50
|
|
|
|
14
|
Место работы отца
|
Текстовый
|
60
|
|
|
|
15
|
Фамилия матери
|
Текстовый
|
20
|
|
|
|
16
|
Имя_отчество матери
|
Текстовый
|
50
|
|
|
|
17
|
Место работы матери
|
Текстовый
|
60
|
|
|
|
|
Таблица 1.16.
Структура таблицы “Читательский формуляр”
№
|
Имя поля
|
Тип
|
Размер
|
Дес
|
Назначение
|
|
1
|
Номер читательского формуляра
|
Числовой
|
Длинное целое
|
0
|
|
|
2
|
Инвентарный номер книги
|
С плавающей точкой (8 байт)
|
20
|
|
|
|
3
|
Дата выдачи
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон: 99/99/00;0;_
|
|
4
|
Дата возврата
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон: 99/99/00;0;_
|
|
5
|
Возврат
|
Дата/Время
|
Краткий формат даты
|
|
Шаблон: 99/99/00;0;_
|
|
|
ПРИЛОЖЕНИЕ 2
Листинг программы главной кнопочной формы
Option Compare Database
Option Explicit
Private Sub Form_LostFocus()
DoCmd.Maximize
End Sub
Private Sub Form_Open(Cancel As Integer)
' Свертывание окна базы данных,
' инициализация формы.
' Переход на страницу кнопочной формы, отмеченную для использования по умолчанию.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'по умолчанию' "
Me.FilterOn = True
End Sub
Private Sub Form_Current()
' Обновление заголовка и заполнение
' списка команд.
Me.Caption = Nz(Me![ItemText], "")
FillOptions
End Sub
Private Sub FillOptions()
' Заполнение команд для страницы
' кнопочной формы.
' Число кнопок в форме.
Const conNumButtons = 8
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Dim intOption As Integer
' Установка фокуса на первую кнопку формы,
' скрытие всех кнопок формы, кроме первой.
' Поле с фокусом скрыть нельзя.
Me![Option1].SetFocus
For intOption = 2 To conNumButtons
Me("Option" & intOption).Visible = False
Me("OptionLabel" & intOption).Visible = False
Next intOption
' Открытие таблицы элементов кнопочной формы,
' поиск первого элемента текущей страницы формы.
Set dbs = CurrentDb()
strSQL = "SELECT * FROM [Элементы кнопочной формы]"
strSQL = strSQL & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
strSQL = strSQL & " ORDER BY [ItemNumber];"
Set rst = dbs.OpenRecordset(strSQL)
' Вывод сообщения при отсутствии элементов
' на странице кнопочной формы. В остальных
' случаях - заполнение страницы элементами.
If (rst.EOF) Then
Me![OptionLabel1].Caption = "Элементы кнопочной формы отсутствуют"
Else
While (Not (rst.EOF))
Me("Option" & rst![ItemNumber]).Visible = True
Me("OptionLabel" & rst![ItemNumber]).Visible = True
Me("OptionLabel" & rst![ItemNumber]).Caption = rst![ItemText]
rst.MoveNext
Wend
End If
' Закрытие набора записей и базы данных.
rst.Close
dbs.Close
End Sub
Private Function HandleButtonClick(intBtn As Integer)
' Эта функция вызывается при нажатии кнопки.
' Аргумент intBtn указывает, какая кнопка была нажата.
' Константы для выполняемых команд.
Const conCmdGotoSwitchboard = 1
Const conCmdOpenFormAdd = 2
Const conCmdOpenFormBrowse = 3
Const conCmdOpenReport = 4
Const conCmdCustomizeSwitchboard = 5
Const conCmdExitApplication = 6
Const conCmdRunMacro = 7
Const conCmdRunCode = 8
' Особая ошибка.
Const conErrDoCmdCancelled = 2501
Dim dbs As Database
Dim rst As Recordset
On Error GoTo HandleButtonClick_Err
' Поиск записи, соответствующей нажатой кнопке,
' в таблице элементов кнопочной формы.
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Элементы кнопочной формы", dbOpenDynaset)
rst.FindFirst "[SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
' Если нужная запись не найдена, вывод
' сообщения об ошибке и выход из функции.
If (rst.NoMatch) Then
MsgBox "Ошибка при чтении таблицы элементов кнопочной формы."
rst.Close
dbs.Close
Exit Function
End If
Select Case rst![Command]
' Переход к другой кнопочной форме.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rst![Argument]
' Открытие формы в режиме добавления записей.
Case conCmdOpenFormAdd
DoCmd.OpenForm rst![Argument], , , , acAdd
Открытие формы.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rst![Argument]
' Открытие отчета.
Case conCmdOpenReport
DoCmd.OpenReport rst![Argument], acPreview
' Настройка кнопочной формы.
Case conCmdCustomizeSwitchboard
' Обработка ситуации, когда диспетчер
' кнопочных форм не установлен
' (например, при сокращенной установке).
On Error Resume Next
Application.Run "WZMAIN80.sbm_Entry"
If (Err <> 0) Then MsgBox "Команда недоступна."
On Error GoTo 0
' Обновление формы.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'по умолчанию' "
Me.Caption = Nz(Me![ItemText], "")
FillOptions
' Выход из приложения.
Case conCmdExitApplication
CloseCurrentDatabase
' Запуск макроса.
Case conCmdRunMacro
DoCmd.RunMacro rst![Argument]
' Выполнение программы.
Case conCmdRunCode
Application.Run rst![Argument]
' Другие команды не поддерживаются.
Case Else
MsgBox "Неизвестная команда."
End Select
' Закрытие набора записей и базы данных.
rst.Close
dbs.Close
HandleButtonClick_Exit:
Exit Function
HandleButtonClick_Err:
' Если выполнение прервано пользователем,
' сообщение об ошибке не выводится. Вместо этого
' выполнение продолжается со следующей строки.
If (Err = conErrDoCmdCancelled) Then
Resume Next
Else
MsgBox "Ошибка при выполнении команды.", vbCritical
Resume HandleButtonClick_Exit
End If
End Function
Листинг программы для формы “Издание”
Option Compare Database
Dim FlCorr As Boolean
Option Explicit
'Открытие окна диалога Поиска.
Private Sub Find_Record_Click()
On Error GoTo Err_Find_Record_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_Find_Record_Click:
Exit Sub
Err_Find_Record_Click:
MsgBox Err.Description
Resume Exit_Find_Record_Click
End Sub
Private Sub Form_Load()
'Загрузка формы
DoCmd.Maximize
FlCorr = True
продолжение приложения 2
End Sub
Private Sub Кнопка86_Click()
On Error GoTo Err_Кнопка86_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Аннотация"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка86_Click:
Exit Sub
Err_Кнопка86_Click:
MsgBox Err.Description
Resume Exit_Кнопка86_Click
End Sub
Private Sub Цена_Click()
On Error GoTo Err_Цена_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Цена"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Цена_Click:
Exit Sub
Err_Цена_Click:
MsgBox Err.Description
Resume Exit_Цена_Click
End Sub
'Просмотр библиографического описания по ГОСТ
Private Sub ГОСТ_Click()
On Error GoTo Err_ГОСТ_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Описание по ГОСТ"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_ГОСТ_Click:
Exit Sub
Err_ГОСТ_Click:
MsgBox Err.Description
Resume Exit_ГОСТ_Click
End Sub
'Вызов формы поиска по фильтру
Private Sub Фильтр_Click()
On Error GoTo Err_Фильтр_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Фильтр"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Фильтр_Click:
Exit Sub
Err_Фильтр_Click:
MsgBox Err.Description
Resume Exit_Фильтр_Click
End Sub
Private Sub Тематическая_справка_Click()
On Error GoTo Err_Тематическая_справка_Click
'Просмотр отчета для отобранных значений в форме "Издение"
Dim stDocName As String
Dim strFilter As String
stDocName = "Тематическая справка"
strFilter = Me.Filter
DoCmd.OpenReport stDocName, acPreview, , strFilter
Exit_Тематическая_справка_Click:
Exit Sub
Err_Тематическая_справка_Click:
MsgBox Err.Description
Resume Exit_Тематическая_справка_Click
End Sub
Private Sub Кнопка187_Click()
On Error GoTo Err_Кнопка187_Click
'Печать каталожной карточки
Dim strFilter As String
Dim stDocName As String
stDocName = "Каталожная карточка"
strFilter = Me.Filter
DoCmd.OpenReport stDocName, acViewNormal, strFilter
Exit_Кнопка187_Click:
Exit Sub
Err_Кнопка187_Click:
MsgBox Err.Description
Resume Exit_Кнопка187_Click
End Sub
Листинг программы для формы “Библиографическое описание издание”
Option Compare Database
Dim FlCorr As Boolean
Option Explicit
Private Sub Find_Record_Click()
'Открыть форму диалога Поиска.
On Error GoTo Err_Find_Record_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_Find_Record_Click:
Exit Sub
Err_Find_Record_Click:
MsgBox Err.Description
Resume Exit_Find_Record_Click
End Sub
Private Sub Form_Load()
FlCorr = True
DoCmd.Maximize
End Sub
Private Sub Form_Error(DataErr As Integer, Response As Integer)
'Перехват дубликата значения
Dim strMsg As String
Const conDupKey = 3022
If DataErr = conDupKey Then
strMsg = "Вы ввели дубликат идентификатора книги"
strMsg = strMsg & "Пожалуйста введите новое значение"
MsgBox strMsg
[Идентификатор издания].SetFocus
Response = acDataErrContinue
End If
End Sub
Private Sub Form_AfterUpdate()
' Обновляет поле со списком "Языковой материал" после изменения записи.
Me!ТипИздания.Requery
End Sub
Private Sub INVNum_Click()
On Error GoTo Err_INVNum_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Добавление инвентарных записей"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_INVNum_Click:
Exit Sub
Err_INVNum_Click:
MsgBox Err.Description
Resume Exit_INVNum_Click
End Sub
Private Sub ТипИздания_NotInList(NewData As String, Response As Integer)
'Добавление пользователем нового элемента в список
Dim ctl As Control
'Определяет поле со списком в качестве объекта элемента управления
Set ctl = Me!ТипИздания
'Подтверждение на ввод нового значения
If MsgBox("Собираетесь добавить новое значение в список?", vbOKCancel) _
Then
'Установить аргумент Response для отображения добавляемого значения
Response = acDataErrAdded
'Добавляет строку в список значений в источник строки
Debug.Print ctl.RowSource
ctl.RowSource = ctl.RowSource & ";" & NewData
Debug.Print ctl.RowSource
Else
'Если нажата кнопка отмена - выдается сообщение об ошибке
Response = acDataErrContinue
ctl.Undo
End If
End Sub
'Private Sub Form_AfterUpdate()
' Обновляет поле со списком "Языковой материал" после изменения записи.
' Me!ТипИздания.Requery
'End Sub
Private Sub Кнопка84_Click()
On Error GoTo Err_Кнопка84_Click
DoCmd.GoToRecord , , acNewRec
FlCorr = False
Exit_Кнопка84_Click:
Exit Sub
Err_Кнопка84_Click:
MsgBox Err.Description
Resume Exit_Кнопка84_Click
End Sub
Private Sub Кнопка86_Click()
On Error GoTo Err_Кнопка86_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Аннотация"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка86_Click:
Exit Sub
Err_Кнопка86_Click:
MsgBox Err.Description
Resume Exit_Кнопка86_Click
End Sub
Private Sub Цена_Click()
продолжение приложения 2
On Error GoTo Err_Цена_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Цена"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Цена_Click:
Exit Sub
Err_Цена_Click:
MsgBox Err.Description
Resume Exit_Цена_Click
End Sub
Private Sub ГОСТ_Click()
On Error GoTo Err_ГОСТ_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Описание по ГОСТ"
stLinkCriteria = "[Идентификатор издания]=" & Me![Идентификатор издания]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_ГОСТ_Click:
Exit Sub
Err_ГОСТ_Click:
MsgBox Err.Description
Resume Exit_ГОСТ_Click
End Sub
продолжение приложения 2
Private Sub Удаление_Click()
On Error GoTo Err_Удаление_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Удаление_Click:
Exit Sub
Err_Удаление_Click:
MsgBox Err.Description
Resume Exit_Удаление_Click
End Sub
Листинг программы формы “Просмотр книг”
Option Compare Database
Option Explicit
Private Sub cmdSome_Click()
Dim strWhere As String, varItem As Variant
Dim gstrWhereBook As String
If Me!lstBName.ItemsSelected.Count = 0 Then
'ExitSub
End If
For Each varItem In Me!lstBName.ItemsSelected
strWhere = strWhere & _
Me!lstBName.Column(0, varItem) & ","
Next varItem
' Удаление лишней запятой в строке IN
strWhere = Left$(strWhere, Len(strWhere) - 1)
' Открытие формы для просмотра всех данных о книге с отбором
продолжение приложения 2
'выделенных книг
gstrWhereBook = "[Идентификатор издания] IN (" & _
strWhere & ")"
DoCmd.OpenForm "Издание", WhereCondition:=gstrWhereBook
End Sub
Private Sub Form_Load()
DoCmd.Maximize
End Sub
Private Sub lstBName_DblClick(Cancel As Integer)
Dim strWhere As String, varItem As Variant
Dim gstrWhereBook As String
If Me!lstBName.ItemsSelected.Count = 0 Then
'ExitSub
End If
For Each varItem In Me!lstBName.ItemsSelected
strWhere = strWhere & _
Me!lstBName.Column(0, varItem) & ","
Next varItem
' Удаление лишней запятой в строке IN
strWhere = Left$(strWhere, Len(strWhere) - 1)
' Открытие формы для просмотра всех данных о книге с отбором
'выделенных книг
gstrWhereBook = "[Идентификатор издания] IN (" & _
strWhere & ")"
DoCmd.OpenForm "Издание", WhereCondition:=gstrWhereBook
End Sub
Листинг программы для формы “Краткие сведения о книгах”
Option Compare Database
Option Explicit
`Реакция на нажатие кнопки “Подробнее”
Private Sub Detalis_Click()
Dim gstrWhereBook As String
' Открывает форму для книги, выбранной в списке
gstrWhereBook = "[Идентификатор издания] = " & _
Me![Идентификатор издания]
DoCmd.OpenForm FormName:="Описание по ГОСТ", _
WhereCondition:=gstrWhereBook
DoCmd.Close acForm, Me.Name
Forms![Описание по ГОСТ].SetFocus
End Sub
Листинг формы “Сведения в архив”
(форма вызывается для отправки в архив сведений о списанной литературе, вызывается двойным щелчком мыши на любой записи формы “Библиографическое описание”)
Option Compare Database
Option Explicit
Private Sub Post()
'Предлагает архивировать выбранные записи
Dim wsp As Workspace, dbsCurrent As Database
Dim rstPost As Recordset
Dim intCount As Integer, blnInTrans As Boolean
Dim varReturn As Variant, strMsg As String
Dim strSQLArchive As String, strSQLDelete As String
Dim dtmCutOff As Double, intChoice As Integer
Dim dat As Date, dtmCutPr As String
Dim A As String
On Error GoTo Err_Post
dat = Date
blnInTrans = False
Set wsp = DBEngine.Workspaces(0)
Set dbsCurrent = CurrentDb()
' Подпрограмма архивации
ArchiveTrans:
intChoice = MsgBox("Будете добавлять в архив новые записи?", _
vbYesNo + vbQuestion, "Архивация?")
If intChoice = 7 Then
GoTo Exit_Post
Else
'Отключение предупреждения Access
DoCmd.SetWarnings False
dtmCutOff = Me![Инвентарный номер]
If Not Me![Состояние] = "на руках" Then
strSQLArchive = "INSERT INTO [Списанная литература] ([Инвентарный номер], [Идентификатор издания], [Цена издания], [Дата списания], [Причина списания], [Название книги]) " & _
"VALUES (Forms![Сведения в архив]![Инвентарный номер], Forms![Сведения в архив]![Идентификатор издания], Forms![Сведения в архив]![Цена издания], Forms![Сведения в архив]![Дата списания], Forms![Сведения в архив]![Причина списания], Forms![Сведения в архив]![Название книги]);"
DoCmd.RunSQL (strSQLArchive)
strSQLDelete = "DELETE [Инвентарная книга].* FROM [Инвентарная книга] " & _
"WHERE ([Инвентарная книга]![Инвентарный номер])= " & dtmCutOff & ";"
DoCmd.RunSQL (strSQLDelete)
'Сброс предупреждения.
DoCmd.SetWarnings True
'выход из формы
DoCmd.Close
Else
MsgBox ("Книга находиться на руках и не подлежит архивации")
продолжение приложения 2
DoCmd.Close
End If
End If
Exit_Post:
Exit Sub
Err_Post:
MsgBox Err.Description
Resume Exit_Post
End Sub
Private Sub Архив_Click()
Post
End Sub
Листинг программы для формы “Фильтр”
Option Compare Database
Dim iD As Integer
Option Explicit
Private Sub Form_Load()
DoCmd.Maximize
Me!Связь2 = "AND"
Me!Связь3 = "AND"
Me!Связь4 = "AND"
Me!Связь5 = "AND"
Me!Связь6 = "AND"
Me!Связь7 = "AND"
Me!Связь8 = "AND"
Me!Связь9 = "AND"
Me!Связь10 = "AND"
End Sub
Private Sub Связь2_Click()
If Me!Связь3 = "AND" Then
Me!Связь3 = "OR"
Else: Me!Связь3 = "AND"
End If
End Sub
Private Sub Связь3_Click()
If Me!Связь3 = "AND" Then
Me!Связь3 = "OR"
Else: Me!Связь3 = "AND"
End If
End Sub
Private Sub Связь4_Click()
If Me!Связь4 = "AND" Then
Me!Связь4 = "OR"
Else: Me!Связь4 = "AND"
End If
End Sub
Private Sub Связь5_Click()
If Me!Связь5 = "AND" Then
Me!Связь5 = "OR"
Else: Me!Связь5 = "AND"
End If
End Sub
Private Sub Связь6_Click()
If Me!Связь6 = "AND" Then
Me!Связь6 = "OR"
Else: Me!Связь6 = "AND"
End If
End Sub
Private Sub Связь7_Click()
If Me!Связь7 = "AND" Then
Me!Связь7 = "OR"
Else: Me!Связь7 = "AND"
End If
End Sub
Private Sub Связь8_Click()
If Me!Связь8 = "AND" Then
продолжение приложения 2
Me!Связь8 = "OR"
Else: Me!Связь8 = "AND"
End If
End Sub
Private Sub Связь9_Click()
If Me!Связь9 = "AND" Then
Me!Связь9 = "OR"
Else: Me!Связь9 = "AND"
End If
End Sub
Private Sub Связь10_Click()
If Me!Связь10 = "AND" Then
Me!Связь10 = "OR"
Else: Me!Связь10 = "AND"
End If
End Sub
Private Sub Поиск_Click()
Dim db As Database, rst As Recordset
Dim lngCount As Long, intRtn As Integer
Dim S As String, gstrWhereBook As String
'Очистка главной строки фильтра
gstrWhereBook = ""
DoCmd.Hourglass False
gstrWhereBook = ""
'Проверка поля ББК и создание условия
If Not IsNull(Me!ББК) Then
gstrWhereBook = "[ББК] Like " & Chr$(34) & Me!ББК
gstrWhereBook = gstrWhereBook & Chr$(34)
End If
'Проверка поля Название и создание условия
If Not IsNull(Me!Название) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Название книги] LIKE " & Chr$(34) & Me!Название
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь3] & " [Название книги] LIKE " & Chr$(34) & Me!Название
End If
If Right$(Me!Название, 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
'Проверка поля Автор и создание условия
If Not IsNull(Me!Автор) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Автор] LIKE " & Chr$(34) & Me!Автор
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь4] & " [Автор] LIKE " & Chr$(34) & Me!Автор
End If
If Right$(Me!Автор, 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
'Проверка поля Другие авторы и создание условия
If Not IsNull(Me![Другие авторы]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Другие авторы] LIKE " & Chr$(34) & Me![Другие авторы]
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь5] & " [Другие авторы] LIKE " & _
Chr$(34) & Me![Другие авторы]
End If
If Right$(Me![Другие авторы], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
'Проверка поля Ответственность и создание условия
If Not IsNull(Me![Ответственность]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Ответственность] LIKE " & Chr$(34) & Me![Ответственность]
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь6] & " [Ответственность] LIKE " & _
Chr$(34) & Me![Ответственность]
End If
If Right$(Me![Ответственность], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
Построение строки IN для кода типа книги
If Not IsNull(Me![Материал]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [ТипИздания] LIKE " & Chr$(34) & Me![Материал]
Else: gstrWhereBook = gstrWhereBook & " " & " AND [ТипИздания] LIKE " & _
Chr$(34) & Me![Материал]
End If
If Right$(Me![Материал], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
'Проверка поля Номер тома и создание условия
If Not IsNull(Me![Номер тома]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Номер тома/книги] LIKE " & Chr$(34) & Me![Номер тома]
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь7] & " [Номер тома/книги] LIKE " & _
Chr$(34) & Me![Номер тома]
End If
If Right$(Me![Номер тома], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
'Проверка поля Название тома и создание условия
If Not IsNull(Me![Название тома]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Название тома/книги] LIKE " & Chr$(34) & Me![Название тома]
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь8] & " [Название тома/книги] LIKE " & _
Chr$(34) & Me![Название тома]
End If
If Right$(Me![Название тома], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
If gstrWhereBook = "" Then
MsgBox "Условий не задано.", vbExclamation, "Фильтр"
'ExitSub
End If
'Проверка поля Ответственность за том и создание условия
If Not IsNull(Me![Ответственность за том]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Ответственность за том] LIKE " & Chr$(34) & Me![Ответственность за том]
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь9] & " [Ответственность за том] LIKE " & _
Chr$(34) & Me![Ответственность за том]
End If
If Right$(Me![Ответственность за том], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
If gstrWhereBook = "" Then
MsgBox "Условий не задано.", vbExclamation, "Фильтр"
End If
'Проверка поля "Серия" и создание условия
If Not IsNull(Me![Название серии]) Then
If gstrWhereBook = "" Then
gstrWhereBook = " [Название серии] LIKE " & Chr$(34) & Me![Название серии]
Else: gstrWhereBook = gstrWhereBook & " " & Me![Связь10] & " [Название серии] LIKE " & _
Chr$(34) & Me![Название серии]
End If
If Right$(Me![Название серии], 1) = "*" Then
gstrWhereBook = gstrWhereBook & Chr$(34)
Else: gstrWhereBook = gstrWhereBook & "*" & Chr$(34)
End If
End If
'Поиск на основе построенного запроса
Me.Visible = False
DoCmd.Hourglass True
If IsLoaded("Издание") Then
продолжение приложения 2
Forms![Издание].SetFocus
DoCmd.ApplyFilter , gstrWhereBook
If Forms![Издание].RecordsetClone.RecordCount = 0 Then
DoCmd.Hourglass False
MsgBox "Нет книг, удовлетворяющих вашим условиям", vbExclamation, "Фильтр"
DoCmd.ShowAllRecords
'Forms![Форма ввода библиографического описания издания].Visiable = False
Me.Visible = True
Exit Sub
End If
DoCmd.Hourglass False
Else
Set db = CurrentDb
Set rst = db.OpenRecordset( _
"SELECT DISTINCTROW " & _
"ШИФРЫ.[Идентификатор издания] " & _
"FROM [Издание] " & _
"WHERE " & gstrWhereBook & ";")
If rst.RecordCount = 0 Then
DoCmd.Hourglass False
MsgBox "Нет книг, удовлетворяющих вашим условиям", vbExclamation, "Фильтр"
gstrWhereBook = ""
Me.Visible = True
rst.Close
Exit Sub
End If
'Переход к последней строке для получения числа записей
rst.MoveLast
lngCount = rst.RecordCount
DoCmd.Hourglass False
Если найдено более 10 записей - запрос на просмотр только кратких сведений о книгах
If lngCount > 10 Then
intRtn = MsgBox("Найдено более 10 книг. " & _
"Нажмите Да для просмотра кратких сведений о " & lngCount & _
"найденных книгах," & _
" или Нет - для просмотра полных сведений об этих книгах." & _
" Нажав Отмена Вы предпримете новую попытку поиска", _
vbInformation + vbYesNoCancel, "Фильтр")
Select Case intRtn
Case vbCancel
Me.Visible = True
Exit Sub
Case vbYes
DoCmd.OpenForm _
FormName:="Краткие сведения о книгах", _
WhereCondition:=gstrWhereBook
DoCmd.Close acForm, Me.Name
Forms![Краткие сведения о книгах].SetFocus
Exit Sub
End Select
End If
'Если нажата кнопка Нет или найдено менее 10 книг,
' Отображаем полные данные
DoCmd.OpenForm _
FormName:="Издание", _
WhereCondition:=gstrWhereBook
'If Not IsNull(Автор) Then
' Forms![Издание]![Вкладка100] = 1
' End If
продолжение приложения 2
End If
' Закрываем форму
DoCmd.Close acForm, Me.Name
End Sub
Листинг программы формы “Читательский формуляр”
Option Compare Database
Option Explicit
Private Sub Кнопка6_Click()
On Error GoTo Err_Кнопка6_Click
'Просмотр сведений о читателях
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Сведения о читателях"
stLinkCriteria = "[Номер читательского формуляра]=" & Me![Номер читательского формуляра]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка6_Click:
Exit Sub
Err_Кнопка6_Click:
MsgBox Err.Description
Resume Exit_Кнопка6_Click
End Sub
Private Sub Поиск_Click()
On Error GoTo Err_Поиск_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
продолжение приложения 2
Exit_Поиск_Click:
Exit Sub
Err_Поиск_Click:
MsgBox Err.Description
Resume Exit_Поиск_Click
End Sub
Private Sub Формуляр_DblClick(Cancel As Integer)
'Фильтр по введенному номеру читательского формуляра
Dim strFilter As String
strFilter = Me![Формуляр]
Me.Filter = "[Номер читательского формуляра]= " & strFilter
Me.FilterOn = True
End Sub
Private Sub Добавление_Click()
On Error GoTo Err_Добавление_Click
Dim frm As Form
'Открытие формы как скрытой
DoCmd.OpenForm "Ввод записи в формуляр читателя", acNormal, , , , acHidden
'Присвоение переменной ссылки на форму
Set frm = Forms![Ввод записи в формуляр читателя]
'Копирование данных в форму
frm![Номер читательского формуляра] = Me![Номер читательского формуляра]
frm![Инвентарный номер книги].SetFocus
'вывод скрытой формы
frm.Visible = True
Exit_Добавление_Click:
Exit Sub
Err_Добавление_Click:
MsgBox Err.Description
Resume Exit_Добавление_Click
End Sub
Листинг программы формы “Список литературы”
Option Compare Database
Option Explicit
Private Sub Номер_формуляра_AfterUpdate()
Dim Cancel As Integer
Dim strFilter As String
strFilter = Me![Номер формуляра]
Me.Filter = "[Номер читательского формуляра]>= " & strFilter
Me.FilterOn = True
End Sub
Private Sub Формуляр_Click()
On Error GoTo Err_Формуляр_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Сведения о читателях"
stLinkCriteria = "[Номер читательского формуляра]=" & Me![Номер читательского формуляра]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Формуляр_Click:
продолжение приложения 2
Exit Sub
Err_Формуляр_Click:
MsgBox Err.Description
Resume Exit_Формуляр_Click
End Sub
Private Sub Добавление_Click()
On Error GoTo Err_Добавление_Click
Dim stDocName As String
stDocName = "Сведения о читателях"
'Открываем форму "Сведения о читателях" для добавления новой записи
DoCmd.OpenForm stDocName
DoCmd.GoToRecord , , acNewRec
Exit_Добавление_Click:
Exit Sub
Err_Добавление_Click:
MsgBox Err.Description
Resume Exit_Добавление_Click
End Sub
Private Sub Кнопка15_Click()
On Error GoTo Err_Кнопка15_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_Кнопка15_Click:
Exit Sub
Err_Кнопка15_Click:
MsgBox Err.Description
Resume Exit_Кнопка15_Click
End Sub
Private Sub Поиск_Click()
On Error GoTo Err_Поиск_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_Поиск_Click:
Exit Sub
Err_Поиск_Click:
MsgBox Err.Description
Resume Exit_Поиск_Click
End Sub
Private Sub Formular_Click()
On Error GoTo Err_Formular_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Читательский формуляр"
stLinkCriteria = "[Номер читательского формуляра]=" & Me![Номер читательского формуляра]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Formular_Click:
Exit Sub
Err_Formular_Click:
MsgBox Err.Description
Resume Exit_Formular_Click
End Sub
Список литературы
“С компьютером на ты”: Методическое пособие для библиотек по информационным технологиям и Интернет. Вып. 3./ Ред.-сост. Л.А. Казаченкова. - М.: Либерея, 2000. -112 с.
Цветкова И.Б. Лингвистическое обеспечение библиотечных информационных ресурсов// Доклад, Всероссийское совещание директоров федеральных и региональных библиотек России. М., 1999.
Российский коммуникативный формат представления библиографических записей в машиночитаемой форме(Рос. вариант UNIMARC)/ И. Б. Цветкова и др.; М-во культуры PФ, Рос. библ. ассоц. - СПб.: Изд-во РНБ, 1998.
Вейскас Д. Эффективная работа с Microsoft Access 97. - СПб.: Издательство “Питер”, 2000. - 976 с.: ил.
Учебно-методическое пособие по курсу “Учебно-методическое пособие по курсу технико-экономическое проектирование”. Сост. Ю.В. Брусницын, А.Н. Гармаш. - Таганрог, ТРТУ, 1998 г. - 35 с.
Охрана труда в вычислительных центрах: Учебное пособие для учащихся средних специальных учебных заведений по специальности “Программирование для быстродействующих математических машин”/ Ю. Г. Сибаров, Н.Н. Нагинаев. - М.: Машиностроение, 1985. - 176 с., ил.
Белах Н.В., Петраков Н.Я., Русаков В. П. Доходы, предложения и цены -- проблема сбалансированности//Изв. АН СССР. Сер. экон. 1982. № 2. С. 71-77.
Охрана труда в радио- и электронной промышленности: Учебник для техникумов. - 2-е изд., перераб. и доп. / С.П. Павлов, Л.С. Виноградов, Н.Ф. Крылова и др.; Под ред. С.П. Павлова. - М.: Радио и связь, 1985. - 200 с., ил.
Страницы: 1, 2, 3, 4
|