p align="left">Данный запрос, описанный в SQL: UPDATE ((Вид_издания INNER JOIN Издание ON Вид_издания.Код_вида_издания = Издание.Код_вида_издания) INNER JOIN Экземпляр ON Издание.Код_издания = Экземпляр.Код_издания) INNER JOIN Выдача ON Экземпляр.Код_экземпляра = Выдача.Код_экземпляра SET Выдача.Пеня = (Выдача!Когда_вернул-(Выдача!Дата_выдачи+Вид_издания!На_какой_срок)) *Вид_издания! Начисляемая_пеня WHERE ((([Выдача]![Когда_вернул]-([Выдача]![Дата_выдачи]+ [Вид_издания]! [На_какой_срок]))>0) AND (([Выдача]![Пеня])=0) AND (([Выдача]![Заплатил_пеню?])=False)); Шаг 2: Выполнение запроса Аннулировать пеню (2) |
Таблица Выдача | | Номер_билета Код_экземпляра Дата_выдачи Когда_вернул Пеня Заплатил_пеню? | | |
Данный запрос, описанный в SQL: UPDATE ((Вид_издания INNER JOIN Издание ON Вид_издания.Код_вида_издания = Издание.Код_вида_издания) INNER JOIN Экземпляр ON Издание.Код_издания = Экземпляр.Код_издания) INNER JOIN Выдача ON Экземпляр.Код_экземпляра = Выдача.Код_экземпляра SET Выдача.[Заплатил_пеню?] = True WHERE ((([Выдача]![Когда_вернул]) Is Not Null) AND (([Выдача]![Пеня])=0)); Вернуть_книгу - запрос на обновление: если читатель возвращает книгу, то данный запрос изменяет везде данные, что книга имеется в библиотеке в данный момент (не на руках). На_руках_ли_книга? - запрос на обновление: проверяется, есть ли книга в фонде библиотеке в данный момент или она на руках. Создать_таблицу - запрос на создание таблицы: создается временная таблица Заплатить с последним заплатившим пеню. Оплата_пени - запрос на обновление: сведения из таблицы Заплатить заносятся в соответствующие списки об оплате пени. 6. Реализация пользовательского интерфейса средствами форм 1. Разберем подробно разработку Главной формы и ее вкладки Просроченные книги. Эта вкладка предназначена для просмотра информации о тех книгах, которые читатель просрочил и не заплатил пеню. 1.1) Подсхема данных: 1.2) Наилучший тип формы для построения: В данной форме должна выдаваться информация в зависимости от выбора пользователем читателя, а это невозможно сделать с помощью составной формы. Такой тип формы, как связь по кнопке нерациональна, так как это составляет сложности для неопытных пользователей и весьма неудобно. Поэтому самым целесообразным является вложенный тип формы - пользователь может выбирать необходимого читателя и при этом сразу же сможет увидеть связанную с ним информацию. 1.3) Источники записей формы: Для Главной формы источником записей являются следующие таблицы: Улицы, Адрес и Читатели. Для вложенной формы Просроченные_подчиненная форма форма источником записей являются следующие таблицы: Заглавия, Вид_издания, Авторы, Издание, Экземпляр, Читатели и Выдача. 1.4) Связанные поля форм: Вложенная форма Просроченные_подчиненная форма и Главная форма: Подчиненные поля: Номер_билета. Основные поля: Номер_билета. 1.5) Поля базы данных, которые отражены в форме: Вложенная форма Просроченные_подчиненная форма: Авт_знак Автор Заглавие Год_издания Вид_издания Пеня Главная форма: Фамилия 1.6) Форма 7. Разработка отчетов Фонд_библиотеки - отчет, в котором содержится информация обо всех книгах, рассортированная по авторам. Подсхема данных: 1.2) Тип отчета: составной. 1.3) Источник записей: Издательства, Заглавия, Авторы, Издание. 1.4) Уровни группировки: |
Поле/выражение | Заголовок группы | Примечание группы | | Автор | Да | Нет | | Код_автора | Да | Нет | | |
1.5) Поля: Заголовок группы 'Автор' Автор Заголовок группы 'Код_автора' Авт_знак Область данных Библ_шифр Заглавие Издательство Место_издания Год_издания 1.6) Сам отчет: 10 читателей - отчет, в котором представлена диаграмма с десятью читателями, которые брали в библиотеке наибольшее количество книг. Читатели - отчет, в котором содержится информация обо всех читателях библиотеки и книгах, которые они брали: ФИО читателя, книга, которую он брал, дата выдачи). 8. Реализация алгоритмов обработки информации программными средствами 8.1 Реализация алгоритмов средствами макросов Главная_форма. Оплата - макрос позволяет читателю заплатить пеню и не переплатить. а) Сообщение Сообщение: Вы ввели слишком большую сумму. Сигнал: Да Тип: Информационное Заголовок: Слишком большая сумма Макрокоманда выдает сообщение, если сумма, заплаченная пользователем, больше той, которую следует заплатить. б) КЭлементуУправления Имя элемента: [ОплатитьДолг] Происходит переход ко вкладке ОплатитьДолг. в) КЭлементуУправления Имя элемента: [Заплачено] Происходит переход к элементу Заплачено вкладки ОплатитьДолг. г) ОткрытьЗапрос Имя запроса: Создать_таблицу Режим: Таблица Режим данных: Изменение Макрокоманда открывает запрос на создание таблицы о сумме, которую заплатил читатель. При выполнении следующих макрокоманд необходимо, чтобы сумма, которую заплатил читатель, была меньше той, которую следует заплатить. д) ОткрытьЗапрос Имя запроса: Создать_таблицу Режим: Таблица Режим данных: Изменение Макрокоманда открывает запрос на создание таблицы о сумме, которую заплатил читатель. е) ОткрытьЗапрос Имя запроса: Оплата_пени Режим: Таблица Режим данных: Изменение Макрокоманда открывает запрос на обновление той суммы, которую внес читатель и которую ему осталось оплатить. Главная_форма.Выбор_читателя - реагирование системы на выбор пользователем определенного читателя. Главная_форма.Пеня, Главная_форма.Пеня_присвоение - переход на вкладку с оплатой пени и занесение данных в нужные ячейки. Главная_форма.Переход - вспомогательный макрос для перехода на последнюю запись при оплате пени пользователем. Главная_форма.Возврат_книги - возвращение читателем книги, снятие ее с рук, подсчет пени для читателя и убирание тех, кто заплатил. Главная_форма.На_руках_ли - открытие запроса На_руках_ли?, что позволяет проверить, какие книги на руках. Главная_форма.Закрытие_формы - закрытие формы Главная форма и применение запроса Аннулировать_долг(2), что позволяет изменить в таблицах долг читателя, если он оплатил его. Адреса_клиентов.Кнопки - макрос по выбору читателей по заданной первой букве фамилии. Сумма_оплаченная - переход к выбранному читателю из возможных Поиск_книги.Фильтр - применение фильтра на основании заданных параметров. Поиск_книги.Ошибка - выдается сообщение, если читатель пытается взять книгу, которая на руках у другого человека. Поиск_книги.Взять - вспомогательный макрос для поиска книги. Поиск_книги.Взял - закрывает форму Поиск_книги и записывает выбранную книгу за читателем. Поиск_книги.Error - выдает сообщение, если при поиске книги по критериям читатель указал более или менее пяти критериев. 8.2 Реализация алгоритмов средствами Visual Basic Следующий алгоритм предназначен для перехода на форму Адреса_клиентов после нажатия кнопки Просмотр всех читателей на главной форме: Private Sub ВсеЧитатели_Click() On Error GoTo Err_ВсеЧитатели_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(1040) & ChrW(1076) & ChrW(1088) & ChrW(1077) & ChrW(1089) & ChrW(1072) & ChrW(95) & ChrW(1082) & ChrW(1083) & ChrW(1080) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1086) & ChrW(1074) DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_ВсеЧитатели_Click: Exit Sub Err_ВсеЧитатели_Click: MsgBox Err.Description Resume Exit_ВсеЧитатели_Click End Sub Кроме того, в автоматизированной системе “Библиотека” присутствуют и другие события, написанные средствами Visual Basic: Событие, позволяющее подсчитать пеню читателя. Событие, предназначенное для открытия формы Поиск_книги после нажатия кнопки Поиск_книги. Событие, которое происходит после выбора читателем пяти критериев при поиске книги. Оно позволяет вывести на экран только те критерии, которые выбрал пользователь и после производить действия с ними. Событие, которое происходит при нажатии читателем при выборе понравившейся ему книги. Событие, которое скрывает все поля для ввода критериев при запуске формы Поиск_книги или повторном поиске книги. 9. Разработка приложения пользователя Главной формой базы данных “Библиотека” является Главная форма, содержащая в себе 6 вкладок. Вкладка Сведения о книгах. На данной вкладке представлена информация обо всех тех книгах, которые брал тот читатель, чья фамилия выбрана в заголовке формы. Вкладка Просроченные книги содержит информацию о просроченных книгах и о той сумме, которую следует заплатить (поле Пеня). При двойном нажатии на данное поле происходит переход на вкладку Оплатить долг. Курсор автоматически устанавливается в последнее поле, счетчик увеличивается на единицу, датой оплаты ставится текущее число, а вверху формы автоматически проставляется текущая сумма задолженности. После того, как пользователь введет сумму, которую он хочет оплатить, ему следует нажать кнопку Рассчитать. Вкладка Какие книги на руках отвечает за информацию о тех книгах, которые находятся на руках у читателя (если таковые имеются). Вкладка Сведения о читателе содержит информацию о выбранном читателе. При нажатии кнопки Просмотр всех читателей открывается форма Адреса_клиентов, в которой представлена информация обо всех читателях с их адресами и телефонами. И последняя вкладка, Найти и взять книгу, содержит данные о тех книгах, которые читатель брал. При нажатии на кнопку Поиск книги откроется форма Поиск_книги, на которой читатель может найти книгу по заданным параметрам и взять ее. Приложения 1. Формы 2. Отчеты
Страницы: 1, 2, 3
|