Информационная система аптеки

Задачи баз данных и основные ограничения при работе с ними. Проектирование логической структуры базы данных и заполнение её данными. Создание экранных форм. Реализация информационных запросов. Структура, форма и назначение отчёта, схема его создания.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 12.07.2012
Размер файла 2,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ»

Кафедра «САПР»

КУРСОВОЙ ПРОЕКТ

по дисциплине «Информационное обеспечение баз данных»

на тему «Информационная система аптеки»

Выполнил: Лашков Д.

Группа: 0612

Проверил: Калмычков В.А.

Санкт-Петербург

2012

Оглавление

  • 1. Информационный анализ предметной области
  • 2. Проектирование логической структуры базы данных
  • 3. Создание структуры БД и заполнение её данными
  • 4. Создание экранных форм
  • 5. Реализация информационных запросов
  • 6. Создание отчётов
  • Приложение 1.
  • Приложение 2.
  • Приложение 3.
  • Литература

1. Информационный анализ предметной области

Цель курсовой работы - создание базы данных аптеки готовых лекарственных форм для повышения эффективности ее работы и автоматизации обработки результатов её деятельности. Аптеки готовых лекарственных форм занимаются продажей лекарств, изготовленных на заводах фирм-производителей. Каждое лекарственное средство имеет свое назначение, весь ассортимент лекарств классифицирован по группам и лекарственным формам.

В базе данных необходимо хранить разнообразную информацию о клиентах, заказах, препаратах и поставщиках данных препаратов, чтобы можно было оперативно определять информацию о принадлежности того или иного препарата к определенному изготовителю, просматривать заказы, выполненные определённым сотрудником, вести учёт прибыли от реализации препаратов или убытков при списании просроченных препаратов.

Могут существовать следующие ограничения при работе с базой данных:

1. Один изготовитель может производить несколько препаратов

2. Один и тот же препарат может быть изготовлен разными производителями

3. На складе могут храниться одинаковые препараты от разных поставщиков, иметь разные цены, разную лекарственную форму и разный срок годности

4. Препараты, срок годности которых истек, нельзя заказать. Также их стоимость учитывается в расчёте прибыли как убыток

Задачами базы данных являются:

1. Добавление новых препаратов

2. Добавление новых торговых названий

3. Добавление новых лекарственных форм

4. Добавление новых поставщиков (изготовителей)

5. Регистрация новых сотрудников

6. Классификация препаратов по изготовителям

7. Контроль срока годности препаратов

8. Учёт клиентов и их заказов

9. Подсчёт прибылей/убытков от реализации препаратов

Разрабатываемая БД включает в себя следующие сущности (отношения):

1. Группы

2. Заказано

3. Заказы

4. Клиенты

5. Лекарственные формы

6. Поставки

7. Поставщики

8. Препараты

9. Сотрудники

10. Торговые названия

11. Буфер

12. Директор

База данных предназначена для сотрудников (обеспечение полного учета товаров аптеки, контроль работы аптеки в целом), клиентов (обеспечение удобного поиска нужного препарата) и для директора (информация о прибылях/убытках аптеки).

Входными данными для сотрудников являются:

Заказ:

· Код заказа

· Код клиента

· Код сотрудника

· Дата размещения

· Препарат

· Количество

Информация о препарате:

• Код препарата

• Название

• Лекарственная форма

Лекарственная форма:

· Название формы

· Описание

Группа:

· Название

· Описание

Для клиентов - просмотр информации о препаратах и сотрудниках аптеки в виде отчётов.

Для директора:

Информация о сотрудниках:

• ФИО

• Адрес

• Телефон

• Зарплата

Информация об изготовителе (поставщике):

• Уникальный код поставщика

• Название

• Адрес

• Телефон

• ФИО представителя

Информация о поставке:

· Код поставки

· Код препарата

· Код поставщика

· Цена закупочная

· Цена реализации

· Количество

· Годен до

БД можно расширять путём добавления новых препаратов, клиентов, поставщиков и принятия на работу новых сотрудников.

2. Проектирование логической структуры базы данных

Выбор СУБД.

Система управления базами данных Access (СУБД Access) входит в стандартный набор прикладных программ пакета Microsoft Office, который используется практически в каждой организации нашей страны. Она предоставляет значительные возможности по работе с хранящимися данными, их обработке и совместному использованию.

Все объекты, относящиеся к одной базе данных, Access хранит в одном файле с расширением mdb, среди объектов разрабатываемой БД предусмотрено:

1. Таблицы - основные объекты любой базы данных. В таблицах хранятся все данные, имеющиеся в базе, кроме того, таблицы хранят и структуру базы (поля, их типы и свойства).

2. Запросы - служат для извлечения данных из таблиц и предоставления их пользователю в удобном виде. С помощью запросов выполняются такие операции, как отбор данных, их сортировку и фильтрацию. С помощью запросов можно выполнять преобразования данных по заданному алгоритму, выполнять автоматическое наполнения таблиц данными, импортированными из других источников, выполнять простейшие вычисления в таблицах и многое другое.

3. Формы - это средства для ввода данных. Смысл их - предоставить пользователю средства для заполнения только тех полей, которые ему заполнять положено. Одновременно с этим в форме можно разместить специальные элементы управления для автоматизации ввода.

4. Отчеты по своим свойствам и структуре во многом похожи на формы, но предназначены только для вывода данных. В связи с этим отчеты отличаются тем, что в них приняты специальные меры для группирования выводимых данных и для вывода специальных элементов оформления, характерных для печатных документов.

На этапе логического проектирования БД строится модель предметной области, которая должна отражать взаимосвязь объектов предметной области. Диаграмма, отражающая связи объектов предметной области, называется диаграммой ER-типа (от англ. Entity - сущность, Relationship - связь). Сущность - класс однотипных объектов, информация о которых должна быть учтена в модели. Связь - ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собою. Атрибут сущности - именованная характеристика, являющаяся некоторым свойством сущности. Ключ сущности - неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности.

Выделим основные сущности (таблицы базы данных):

1. Группы

2. Заказано

3. Заказы

4. Клиенты

5. Лекарственные формы

6. Поставки

7. Поставщики

8. Препараты

9. Сотрудники

10. Торговые названия

11. Буфер

12. Директор

Построим ER-диаграмму:

В отдельной секции в каждом отношении на схеме обозначены ключевые атрибуты.

Жирным шрифтом обозначены поля, обязательные для заполнения.

Таблицы связаны между собой, что обеспечивает целостность данных. Обеспечение целостности данных означает выполнение для взаимосвязанных таблиц следующих условий корректировки базы данных:

· в подчиненную таблицу не может быть добавлена запись, для которой не существует в главной таблице ключа связи

· в главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице

· изменение значений ключа связи главной таблицы должно приводить к изменению соответствующих значений в записях подчиненной таблицы

В случае если пользователь нарушил эти условия в операциях обновления или удаления данных в связанных таблицах, Access выводит соответствующее сообщение и не допускает выполнения операции. Access автоматически отслеживает целостность данных, если между таблицами в схеме данных установлена связь с параметрами обеспечения целостности. При вводе некорректных данных в связанные таблицы выводится соответствующее сообщение. Access не позволяет создавать связи с параметрами обеспечения целостности в схеме данных, если ранее введенные в таблицы данные не отвечают требованиям целостности.

Установление между двумя таблицами связи типа один ко многим и задание параметров целостности данных возможно только при следующих условиях:

· связываемые поля имеют одинаковый тип данных, причем имена полей могут быть различными

· обе таблицы сохраняются в одной базе данных Access

· главная таблица связывается с подчиненной по первичному простому или составному ключу (уникальному индексу) главной таблицы

Для связей заданы режимы каскадного обновления связанных записей.

В режиме каскадного обновления связанных записей при изменении значения в поле связи главной таблицы Access автоматически изменит значения в соответствующем поле в подчиненных записях.

Сущность «Препараты» содержит список всех производимых препаратов. Первичным ключом является код препарата. Характеристики препарата включают в себя название и лекарственную форму.

Сущность «Поставки» содержит список всех медикаментов, имеющихся на складе. Первичным ключом является код поставки. Характеристики препарата на складе включают в себя: код поставщика, цену закупочную, цену реализации, количество и срок годности.

Сущность «Группы» дает характеристику препаратов, определяет их группу принадлежности, а также содержит описание каждой группы. Первичным ключом является название группы.

Сущность «Сотрудники» содержит информацию о сотрудниках аптеки. Полями таблицы являются персональные данные сотрудника: ФИО, дата рождения, дата найма, должность, адрес, телефон, фотография. Сотрудники работают в аптеке, обслуживают клиентов, отправляют заказы. Каждому сотруднику присваивается уникальный код (первичный ключ).

Сущность «Поставщики» включает в себя информацию о поставщиках аптеки. Каждому поставщику присваивается уникальный код (первичный ключ). Полями таблицы являются характеристики поставщика: название, представитель, адрес, город, страна и контактный телефон.

Сущность «Клиенты» содержит информацию о клиентах аптеки: ФИО, адрес и телефон. Каждому клиенту присваивается уникальный код (первичный ключ).

Сущность «Заказы» содержит информацию о заказах, которые поступают в аптеку от клиентов. Каждый заказ обрабатывает определённый сотрудник аптеки. Каждому заказу соответствует уникальный код (первичный ключ).

Сущность «Заказано» включает в себя характеристику полученных заказов (код поставки, количество). Реализован составной ключ по атрибутам «код заказа» и «код поставки».

Сущность «Торговые названия» включает в себя информацию о торговых названиях, под которыми могут выпускаться препараты. Первичным ключом является торговое название.

Сущность «Лекарственные формы» включает в себя информацию о лекарственных формах, в которых могут выпускаться препараты под одним торговым названием. Также каждой форме даётся краткое описание. Первичным ключом является название формы.

Сущность «Буфер» используется для хранения информации о коде сотрудника, вошедшего через форму «Логин» для вывода приветствия в интерфейсе сотрудника.

Сущность «Директор» включает в себя информацию о ФИО директора аптеки, его пароле и балансе аптеки.

Подробная структура отношений:

Таблица. Отношение «Препараты»:

Название поля

Пример обозначения

Характеристика

Код_препарата

1

Счётчик

Ключевое поле

Совпадения не допускаются

Ключевое поле

Название

Лидокаин

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Название_формы

Раствор

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Таблица. Отношение «Сотрудники»:

Название поля

Пример обозначения

Характеристика

Код сотрудника

2

Счётчик

Ключевое поле

Совпадения не допускаются

Фамилия

Звенигородский

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Обязательное поле

Имя

Николай

Тип данных - Текстовый (15 символов)

Допускаются совпадения

Отчество

Алексеевич

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Должность

Кассир

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Дата_рождения

09.01.1981

Тип данных - Дата/Время

Формат поля - краткий формат даты

Условие на значение: <Date()

Дата_найма

13.09.2011

Тип данных - Дата/Время

Формат поля - краткий формат даты

Условие на значение: <=Date()

Адрес

ул. Степная, 22

Тип данных - Текстовый (50 символов)

Обязательное поле

Совпадения не допускаются

Телефон

(812) 564-5767

Тип данных - Текстовый (15 символов)

Маска ввода: \(000") "000\-0000

Обязательное поле

Совпадения не допускаются

Фото

Точечный рисунок

Поле объекта OLE

Необязательное поле

Зарплата

10 000,00 р.

Тип данных - денежный

Условие на значение: >=0

Обязательное поле

Допускаются совпадения

Пароль

Hfy34hrfas

Тип данных - Текстовый (15 символов)

Обязательное поле

Допускаются совпадения

Таблица. Отношение «Поставщики»:

Название поля

Пример обозначения

Характеристика

Код_поставщика

45

Счётчик. Ключевое поле. Совпадения не допускаются. Ключевое поле

Название

ЧП Булатов

Тип данных - Текстовый (30 символов)

Обязательное поле

Совпадения не допускаются

Представитель

Булатов В.В.

Тип данных - Текстовый (25 символов)

Обязательное поле

Совпадения не допускаются

Адрес

РФ, Азнакаево, ул. Озерная, 419

Тип данных - Текстовый (50 символов)

Обязательное поле

Совпадения не допускаются

Контактный_телефон

(812) 564-5767

Тип данных - Текстовый (15 символов)

Маска ввода: \(000") "000\-0000

Обязательное поле

Совпадения не допускаются

Таблица. Отношение «Поставки»:

Название поля

Пример обозначения

Характеристика

Код_поставки

7

Счётчик. Ключевое поле. Совпадения не допускаются. Ключевое поле

Код_препарата

4

Тип данных - Числовой

Тип элемента управления - поле со списком

Код_поставщика

13

Тип данных - Числовой

Тип элемента управления - поле со списком

Цена_закупочная

100 р

Тип данных - Денежный

Условие на значение: >=0

Обязательное поле

Допускаются совпадения

Цена_реализации

200 р

Тип данных - Денежный

Условие на значение: >=0

Обязательное поле

Допускаются совпадения

Количество

666

Тип данных - Числовой

Допускаются совпадения

Годен_до

01.01.2013

Тип данных - Дата/Время

Формат поля - краткий формат даты

Условие на значение: >=Date()

Допускаются совпадения

Таблица. Отношение «Лекарственные формы»:

Название поля

Пример обозначения

Характеристика

Название_формы

Мази

Тип данных - Текстовый (25 символов)

Ключевое поле

Совпадения не допускаются

Ключевое поле

Описание

мягкая лекарственная форма, предназначенная для нанесения на кожу, раны и слизистые оболочки

Тип данных - Поле МЕМО

Небязательное поле

Совпадения допускаются

Таблица. Отношение «Клиенты»:

Название поля

Пример обозначения

Характеристика

Код_клиента

8

Счётчик

Ключевое поле

Совпадения не допускаются

Ключевое поле

Фамилия

Иванов

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Обязательное поле

Имя

Иван

Тип данных - Текстовый (15 символов)

Допускаются совпадения

Обязательное поле

Отчество

Иванович

Тип данных - Текстовый (25 символов)

Допускаются совпадения

Обязательное поле

Адрес

ул. Калинина, 375

Тип данных - Текстовый (50 символов)

Необязательное поле

Совпадения не допускаются

Телефон

(812) 564-5767

Тип данных - Текстовый (15 символов)

Маска ввода: \(000") "000\-0000

Необязательное поле

Совпадения не допускаются

Жалобы

боль в спине

Тип данных - Поле МЕМО

Небязательное поле

Совпадения допускаются

Таблица. Отношение «Заказы»:

Название поля

Пример обозначения

Характеристика

Код_заказа

77

Счётчик

Ключевое поле

Совпадения не допускаются

Ключевое поле

Код_клиента

4

Тип данных - Числовой

Тип элемента управления - поле со списком

Код_сотрудника

3

Тип данных - Числовой

Тип элемента управления - поле со списком

Дата_размещения

05.08.2012

Тип данных - Дата/Время

Формат поля - краткий формат даты

Условие на значение: =Date()

Таблица. Отношение «Заказано»:

Название поля

Пример обозначения

Характеристика

Код_заказа

122

Тип данных - Числовой

Тип элемента управления - поле со списком

Ключевое поле

Код_поставки

89

Тип данных - Числовой

Тип элемента управления - поле со списком

Ключевое поле

Количество

5

Тип данных - Числовой

Обязательное поле

Совпадения допускаются

Таблица. Отношение «Группы»:

Название поля

Пример обозначения

Характеристика

Название_группы

Психостимуляторы

Тип данных - Текстовый (25 символов)

Ключевое поле

Совпадения не допускаются

Ключевое поле

Описание

психотропные вещества, активизирующие психическую и, в меньшей степени, физическую активность организма

Тип данных - Поле МЕМО

Небязательное поле

Совпадения не допускаются

Показания

Боли в животе

Тип данных - Поле МЕМО

Небязательное поле

Совпадения допускаются

Таблица. Отношение «Торговые названия»:

Название поля

Пример обозначения

Характеристика

Код_заказа

Версатис

Тип данных - Текстовый (25 символов)

Совпадения не допускаются

Ключевое поле

Название_группы

Слабительные

Тип данных - Текстовый (25 символов)

Ключевое поле

Совпадения допускаются

Таблица. Отношение «Буфер»:

Название поля

Пример обозначения

Характеристика

Код

1

Тип данных - Счётчик

Совпадения не допускаются

Ключевое поле

Куки

2

Тип данных - Числовой

Совпадения допускаются

Таблица. Отношение «Директор»:

Название поля

Пример обозначения

Характеристика

Имя

Давид

Тип данных - Текстовый (15 символов)

Совпадения не допускаются

Ключевое поле

Фамилия

Козлов

Тип данных - Текстовый (25 символов)

Совпадения допускаются

Отчество

Николаевич

Тип данных - Текстовый (15 символов)

Совпадения допускаются

Пароль

12345

Тип данных - Текстовый (15 символов)

Совпадения допускаются

Баланс

100000000 р

Тип данных - денежный

Обязательное поле

Допускаются совпадения

Нормализация.

Все отношения содержат только атомарные значения, что обеспечивает 1-ю нормальную форму.

В отношении нет неключевых атрибутов, зависящих от части сложного ключа, что обеспечивает 2-ю нормальную форму. Потенциальный ключ в остальных отношениях является простым, поэтому эти отношения автоматически находится во 2НФ.

В отношениях нет зависимости неключевых атрибутов от других неключевых атрибутов, что обеспечивает 3-ю нормальную форму.

В отношениях детерминант каждой функциональной зависимости является потенциальным ключом, что обеспечивает нормальную форму Бойса-Кодда.

3. Создание структуры БД и заполнение её данными

Проектирование таблиц:

6) Клиенты

Взаимосвязь между таблицами реализуем на схеме данных:

Заполним созданные таблицы данными.

4. Создание экранных форм

Формы - это средства для ввода данных. Смысл их - предоставить пользователю средства для заполнения только тех полей, которые ему заполнять положено. Одновременно с этим в форме можно разместить специальные элементы управления для автоматизации ввода.

Запускается автоматически при запуске БД. С помощью данной формы клиенты могут войти в интерфейс клиента, где можно узнать информацию о препаратах в наличии, посмотреть информацию о сотрудниках аптеки. Сотрудники, введя логин и пароль, могут войти в интерфейс сотрудника, где они могут войти в форму «Заказы» для продажи препаратов клиентам, посмотреть кол-во и сумму продаж за сегодняшний день, месяц, год. Директор может войти в свой собственный интерфейс, где он может полностью управлять аптекой (принимать на работу новых сотрудников, добавлять новых поставщиков, добавлять поставки, клиентов), просматривать графики продаж, следить за балансом аптеки и расслабляться, играя в казино(!).

Используется для входа в интерфейс сотрудника. При нажатии на кнопку «Войти» проверяется соответствие введённого пароля введённому коду сотрудника. В случае ввода правильного пароля в таблицу «Буфер» заносится код сотрудника и в открывшейся форме интерфейса выводится приветствие по имени. Реализовано на VBA (Visual Basic for Applications - упрощённая реализация языка программирования Visual Basic, встроенная в MS Access), код с комментариями см. в Приложении 1.

Появляется после ввода правильного пароля для конкретного сотрудника. Выводит приветствие, отображает доступные действия:

· Касса - открывает форму «Заказы» для создания нового заказа

· Список препаратов - показывает список препаратов в наличии в виде отчёта

Также нажав на кнопку «Добавить новый» можно добавить новый препарат в базу. Примечание: препарат попадает в список существующих комбинаций торговых названий и лекарственных форм, а не на склад, создавать поставки может только директор.

Директор с помощью своего собственного интерфейса может полностью управлять аптекой. Чтобы войти в интерфейс, нужно ввести пароль. При загрузке интерфейса проверяется наличие просроченных препаратов на складе и выводится соответствующее сообщение.

Форма «Клиентам»:

С помощью данной формы клиенты аптеки могут просматривать информацию о препаратах в наличии, сотрудниках аптеки и скидках.

Форма «Заказы»:

Используется для создания нового заказа. Одним клиентом может быть заказано несколько товаров, для этого используется подчинённая форма «Заказано». Для создания нового заказа необходимо указать код клиента, если клиент уже есть в базе или нажать на кнопку «Новый клиент» для добавления нового клиента (созданный клиент после закрытия формы «Клиенты» сразу же появится в списке клиентов, это реализовано с помощью кода VBA: Forms![Заказы]![Код_клиента].Requery, который выполняется после закрытия формы «Клиенты»), код сотрудника подставляется автоматически из таблицы «Буфер», текущая дата ставится автоматически. После этого нужно добавить в заказ товары. Это можно сделать с помощью списка в поле «Препарат» (выводятся только препараты с неистёкшим сроком годности) или с помощью поиска по складу нажав на кнопку «Поиск по складу». После добавления препаратов в заказ необходимо нажать кнопку «Подтвердить заказ», при этом вычислится скидка и посчитается сумма. После этого можно ввести в поле «Получено» полученную от клиента сумму, после чего в поле «Сдача» появится сумма сдачи. Далее вместо кнопки «Подтвердить заказ» появится кнопка «Новый заказ». При нажатии на неё к балансу аптеки прибавляется сумма выручки, затем форма переходит к добавлению нового заказа. Изменение баланса аптеки реализовано на VBA:

Dim strSQL As String

Dim a As Integer

a = Поле19 ' Присваиваем переменной а значение выручки

strSQL = "UPDATE Директор SET Баланс = Баланс +" & a & "" ' Запрос на увеличение баланса на сумму выручки

CurrentDb.Execute (strSQL) ' Выполняем запрос

Поля «Скидка», «Итого» и «Сдача» заблокированы с целью недопущения обмана со стороны сотрудника. Код обновления кол-ва препаратов на складе и вычисления скидки при нажатии на кнопку «Подтвердить заказ» с комментариями см. в Приложении 2.

Форма «Выбор»:

Позволяет выполнить поиск по названию препарата или по симптомам (тип поиска выбирается с помощью переключателей). Список препаратов обновляется в режиме реального времени и берётся с помощью запроса:

SELECT Поставки.Код_поставки, Препараты.Код_препарата, Препараты.Название, Препараты.Название_формы, Поставки.Цена_реализации, Поставки.Количество, Поставки.Годен_до FROM Препараты INNER JOIN Поставки ON Препараты.Код_препарата = Поставки.Код_препарата WHERE (((Препараты.Название) Like [Forms]![Выбор]![Поиск] & "*") AND ((Поставки.Количество)>0) AND ((Поставки.Годен_до)>=Date()));

Выводит только препараты с неистёкшим сроком годности.

Форма «Поставки»:

Используется для добавления новой поставки. При вводе данных можно с помощью кнопок 25%, 50% и 100% автоматически установить цену реализации на 25%, 50% и 100% соответственно выше цены закупочной. С помощью кнопки «Сколько это будет стоить?» можно узнать стоимость поставки. Доступна только директору. После добавления поставки из баланса аптеки вычитается стоимость закупленных препаратов, реализовано на VBA:

Dim strSQL As String

Dim a As Integer

a = Цена_закупочная * Количество ' Записываем в переменную а стоимость поставки

strSQL = "UPDATE Директор SET Баланс = Баланс -" & a & "" ' Запрос на вычитание из баланса стоимости поставки

CurrentDb.Execute (strSQL) ' Выполняем запрос

DoCmd.GoToRecord , , acNext ' Переходим к новой записи

Me.Refresh ' Обновляем форму

Форма «Препараты»:

Используется для добавления в базу новых препаратов. Реализован запрет на добавление препарата, уже имеющегося в базе, с помощью VBA:

Dim a As Integer

a = DCount("Код_препарата", "Препараты", "[Название]='" & Me.Название & "' AND [Название_формы]='" & Me.Название_формы & "'") ' Определяем число записей в таблице «Препараты», в которых название и форма совпадают с теми, что мы ввели в форму «Препараты»

If a > 0 Then ' Если такие записи есть, то выводим сообщение, что такой препарат уже есть

MsgBox ("Такой препарат уже есть")

Me.Название = "" ' Очищаем поле «Название»

End If

Форма «Клиенты»:

Используется для добавления в базу нового клиента.

Форма «Просроченные_репараты»:

Позволяет просмотреть информацию о просроченных препаратах и, если Вы - нечестный человек, немного подправить срок годности просроченных препаратов.

Форма «Сотрудники»:

Используется для добавления нового сотрудника. Для добавления фото необходимо щёлкнуть правой кнопкой мыши по области, указанной на скриншоте рамкой, выбрать пункт «Добавить объект…», установить переключатель в режим «Создать из файла», поставить галочку «Связь», с помощью кнопки «Обзор…» выбрать фотографию и нажать на кнопку «ОК».

Форма «Группы»:

Позволяет добавить новую группу.

Форма «Торговые_названия»:

Позволяет добавить новое торговое название. Используя торговое название и лекарственную форму можно добавить новый препарат.

Форма «Лекарственные_формы»:

Позволяет добавить новые лекарственные формы. Используя торговое название и лекарственную форму можно добавить новый препарат.

Форма «Поставщики»:

Используется для добавления нового поставщика. Доступна только директору.

Сводная таблица «Сводная_таблица_по_заказам»:

Показывает статистическую информацию о кол-ве проданных препаратов клиентам.

Диаграмма «Диаграмма_по_количеству_и_фамилиям»:

Показывает статистическую информацию о кол-ве проданных препаратов клиентам.

Форма «Казино»:

В казино директор может играть в различные игры на деньги из баланса аптеки.

Форма «БМ»:

Одна из игр в казино. Правила: Компьютер случайным образом выбирает число. Вы делаете ставку и выбираете с помощью кнопок: больше или меньше будет следующее число. Если Вы угадали, то получаете выигрыш = Ваша ставка * 1.5

Форма «Сейф»:

Одна из игр в казино. Правила: Сейф с 4-значным кодом. Игроку предлагается возможность отгадать комбинацию неповторяющихся цифр не более чем за 5 попыток путем логических умозаключений. После каждой попытки игрок получает ответ в виде двух цифр: первая говорит о том, сколько цифр угадано, а вторая - сколько из угаданных на своем месте. Если игрок за 5 попыток отгадал код - он выиграл. Выигрыш: ставка * 3

Форма «Сапёр»:

Одна из игр в казино. Правила: Минное поле 7x7, 11 мин. Разминировать!

Игрок имеет возможность открыть любую ячейку, щелкнув по ней левой кнопкой мыши. Если открываемая ячейка содержит мину, Вы проиграли. Если мины нет, в ячейке появится цифра, которая указывает, сколько мин находится в восьми смежных с ней ячейках.

Выигрыш за полностью разминированное поле равен ставка * 5

Код на VBA с комментариями см. в Приложении 3.

Все формы защищены от ввода данных, нарушающих целостность БД.

5. Реализация информационных запросов

Запросы - служат для извлечения данных из таблиц и предоставления их пользователю в удобном виде. С помощью запросов выполняются такие операции, как отбор данных, их сортировку и фильтрацию. С помощью запросов можно выполнять преобразования данных по заданному алгоритму, выполнять автоматическое наполнения таблиц данными, импортированными из других источников, выполнять простейшие вычисления в таблицах и многое другое.

Запрос 1 (Список_препаратов_в_наличии). Выводим препараты в наличии (сортировка по названию по алфавиту):

На языке SQL:

SELECT Поставки.Код_поставки, Препараты.Название, Препараты.Название_формы, Поставки.Цена_реализации, Поставки.Количество, Поставки.Годен_до FROM Торговые_названия INNER JOIN ((Лекарственные_формы INNER JOIN Препараты ON Лекарственные_формы.Название_формы = Препараты.Название_формы) INNER JOIN Поставки ON Препараты.Код_препарата = Поставки.Код_препарата) ON Торговые_названия.Название = Препараты.Название ORDER BY Препараты.Название;

Результат выполнения запроса:

Запрос 2 (Запрос_по_названию_препарата). Выводим список препаратов в наличии по названию:

Результат выполнения запроса (при вводе буквы «Л»):

На языке SQL:

SELECT Препараты.Название, Препараты.Название_формы, Поставки.Цена_реализации, Поставки.Количество, Поставки.Годен_до FROM Препараты INNER JOIN Поставки ON Препараты.Код_препарата = Поставки.Код_препарата WHERE (((Препараты.Название) Like [Введите название] & "*") AND ((Поставки.Количество)>0) AND ((Поставки.Годен_до)>=Date()));

Запрос 3 (Повысить_зарплату). Увеличиваем зарплату в 2 раза сотрудникам, продавшим препараты на сумму более Х рублей:

На языке SQL:

UPDATE Сотрудники SET Сотрудники.Зарплата = [Сотрудники].[Зарплата]*2 WHERE Сотрудники.Код_сотрудника IN (SELECT Заказы.Код_сотрудника FROM Поставки INNER JOIN (Заказы INNER JOIN Заказано ON Заказы.Код_заказа = Заказано.Код_заказа) ON Поставки.Код_поставки = Заказано.Код_поставки GROUP BY Заказы.Код_сотрудника HAVING SUM([Поставки].[Цена_реализации]*[Заказано].[Количество])>[Введите параметр])

Запрос 4 (ДР_сотрудников_ в_следующ_мес). Выводим ФИО сотрудников, у которых в следующем месяце день рождения:

Результат выполнения запроса:

На языке SQL:

SELECT Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество, Сотрудники.Дата_рождения FROM Сотрудники WHERE ((Month((Сотрудники.Дата_рождения))=Month(Date())+1));

Запрос 5 (Количество_просроченных_препаратов). Выводим количество просроченных препаратов на складе:

Результат выполнения запроса:

На языке SQL:

SELECT Count([Поставки].[Годен_до]) AS [Кол-во просроченных товаров]

FROM (Лекарственные_формы INNER JOIN Препараты ON Лекарственные_формы.Название_формы = Препараты.Название_формы) INNER JOIN Поставки ON Препараты.Код_препарата = Поставки.Код_препарата

WHERE (((Поставки.Годен_до)<Date()));

Запрос 6 (Добавляем_год_к_просроченным). Увеличиваем просроченным препаратам срок годности на год:

На языке SQL:

UPDATE (Лекарственные_формы INNER JOIN Препараты ON Лекарственные_формы.Название_формы = Препараты.Название_формы) INNER JOIN Поставки ON Препараты.Код_препарата = Поставки.Код_препарата SET Поставки.Годен_до = [Годен_До]+365 WHERE (((Поставки.Годен_до)<Date()));

Запрос 7 (Сотрудники_без_заказов). Выводим ФИО сотрудников, не продавших ни одного препарата:

Результат выполнения запроса:

На языке SQL:

SELECT Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Отчество FROM Сотрудники LEFT JOIN Заказы ON Сотрудники.Код_сотрудника = Заказы.Код_сотрудника WHERE (((Заказы.Код_сотрудника) Is Null));

Запрос 8 (Клиенты_без_заказов). Удаляем клиентов, не сделавших ни одного заказа:

На языке SQL:

DELETE Клиенты.Код_клиента FROM Клиенты WHERE (((Клиенты.Код_клиента) Not In (SELECT Код_клиента FROM Заказы)));

Запрос 9 (3_самых_покупаемых_препарата). Выводим 3 самых покупаемых препарата:

Результат выполнения запроса:

На языке SQL:

SELECT TOP 3 Препараты.Название, Препараты.Название_формы, Заказано.Количество FROM (Лекарственные_формы INNER JOIN Препараты ON Лекарственные_формы.Название_формы = Препараты.Название_формы) INNER JOIN (Поставки INNER JOIN (Заказы INNER JOIN Заказано ON Заказы.Код_заказа = Заказано.Код_заказа) ON Поставки.Код_поставки = Заказано.Код_поставки) ON Препараты.Код_препарата = Поставки.Код_препарата ORDER BY Заказано.Количество DESC;

Запрос 10 (Выручка_за_период). Выводим выручку за период, вводимый пользователем:

Результат выполнения запроса:

На языке SQL:

SELECT Sum(Поставки!Цена_реализации*Заказано!Количество) AS СуммаВыручки FROM Поставки INNER JOIN (Заказы INNER JOIN Заказано ON Заказы.Код_заказа = Заказано.Код_заказа) ON Поставки.Код_поставки = Заказано.Код_поставки WHERE (((Заказы.Дата_размещения) Between [Введите нижнюю границу даты в коротком формате] And [Введите верхнюю границу даты в коротком формате]));

Запрос 11 (Клиенты-заказы_перекрестный). Выводим в виде таблицы кто сколько купил препаратов и вычисляем общее количество:

Результат выполнения запроса:

На языке SQL:

TRANSFORM Sum([Клиенты-заказы].Количество) AS [Sum-Количество] SELECT [Клиенты-заказы].Фамилия, [Клиенты-заказы].Имя, [Клиенты-заказы].Отчество, Sum([Клиенты-заказы].Количество) AS [Итоговое значение Количество] FROM [Клиенты-заказы] GROUP BY [Клиенты-заказы].Фамилия, [Клиенты-заказы].Имя, [Клиенты-заказы].Отчество PIVOT [Клиенты-заказы].Название;

Запрос 12 (ФИО_клиента_за_день_Х). Выводим фамилию, имя и отчество (инициалами) клиентов, обслуженных в день Х:

Результат выполнения запроса:

На языке SQL:

SELECT DISTINCT Фамилия & "" & Left(Имя,1) & ". " & Left(Отчество,1) & "." AS Клиент, Заказы.Дата_размещения

FROM Клиенты INNER JOIN Заказы ON Клиенты.Код_клиента = Заказы.Код_клиента WHERE (((Заказы.Дата_размещения)=[Введите дату]));

Запрос 13 (Особые_условия_для_поставщиков). Выводим «да» напротив имени поставщика, если в аптеке есть более Х поставок от него:

Результат выполнения запроса (при вводе значения «10»):

На языке SQL:

SELECT Поставщики.Название, Sum(Поставки.Количество) AS [Sum-Количество], IIf([Sum-Количество]>[Введите количество],"да","нет") AS [Особые условия] FROM Поставщики INNER JOIN Поставки ON Поставщики.Код_поставщика=Поставки.Код_поставщика GROUP BY Поставщики.Название;

Запрос 14 (Ср_сумма_заказа_по_дням). Вычислим среднюю сумму заказа по дням:

Результат выполнения запроса:

На языке SQL:

SELECT Заказы.Дата_размещения, Avg([Поставки]![Цена_реализации]*[Заказано]![Количество]) AS Средняя_сумма_заказа FROM Поставки INNER JOIN (Заказы INNER JOIN Заказано ON Заказы.Код_заказа = Заказано.Код_заказа) ON Поставки.Код_поставки = Заказано.Код_поставки GROUP BY Заказы.Дата_размещения;

6. Создание отчётов

база данное отчёт информационный

Отчеты по своим свойствам и структуре во многом похожи на формы, но предназначены только для вывода данных. В связи с этим отчеты отличаются тем, что в них приняты специальные меры для группирования выводимых данных и для вывода специальных элементов оформления, характерных для печатных документов.

Отчёты создаются на основе запросов. Пример отчёта по запросу «Топ_3_препаратов»:

Приложение 1.

Код проверки правильности пароля (форма «Логин»):

Dim rs As Recordset ' Объявляем переменную типа Recordset для хранения результата выполнения запроса

Dim strSQL As String ' Переменная строкового типа

Dim strSQL2 As String

Dim a As Integer ' Переменная целочисленного типа

Dim b As Variant ' Переменная неопределённого типа

a = Поле0 ' Присваиваем переменной а значение поля «Код»

b = Поле2 ' Присваиваем переменно b значение поля «Пароль»

strSQL = "SELECT Пароль FROM Сотрудники WHERE Код_сотрудника=" & a & "" ' Запрос на получение пароля по коду сотрудника

Set rs = CurrentDb.OpenRecordset(strSQL) ' Присваиваем переменной результат выполнения запроса

If rs!пароль = b Then ' Проверяем, если пароль, полученный запросом, не совпадает с введённым в поле «Пароль», то выдаём сообщение «Неверный пароль», а если совпадает, то выполняем запрос на обновление таблицы «Буфер» (устанавливаем введённый код), открываем форму «Сотрудникам», фокусируемся на неё, закрываем формы «Главная» и «Логин»

strSQL2 = "UPDATE Буфер SET Куки = " & a & " WHERE Код = 1"

CurrentDb.Execute (strSQL2)

DoCmd.OpenForm "Сотрудникам"

DoCmd.Close acForm, "Главная"

DoCmd.Close acForm, "Логин"

Forms![Сотрудникам].SetFocus

Else

MsgBox ("Неверный пароль!")

End If

Приложение 2.

Код обновления кол-ва препаратов на складе и вычисления скидки при нажатии на кнопку «Подтвердить заказ»:

Me.ЗаказаноПодч.Form.Recalc ' Пересчитываем значения в вычисляемых элементах управления формы для предотвращения возникновения ошибок при подсчёте суммы по заказу

Dim strSQL As String

Dim a As Integer

Dim b As Integer

strSQL = "UPDATE Поставки INNER JOIN Заказано ON Поставки.Код_Поставки=Заказано.Код_поставки SET Поставки.Количество = Поставки.Количество-Заказано.Количество WHERE Заказано.Код_заказа= " & Me.Код_заказа & "" ' Запрос на обновление: вычитаем количество заказанных препаратов со склада

CurrentDb.Execute (strSQL) ' Выполняем запрос

a = Me.ЗаказаноПодч.Form![Поле14] ' Присваиваем переменной а значение суммы по заказу

Select Case a ' Вычисляем скидку в зависимости от суммы заказа (1% при сумме заказа от 1000 р. до 2000 р., 2 % при сумме заказа от 2000 р. до 3000 р. и т.д. до 5% и более 5000 р. соответственно) используя оператор проверки условий Select Case, поскольку в этом случае код меньше по объёму

Case 1000 To 2000 b = 1

Case 2000 To 3000 b = 2

Case 3000 To 4000 b = 3

Case 4000 To 5000 b = 4

Case Is >= 5000 b = 5

End Select

Me.Скидка = b ' Вводим значение скидки в поле «Скидка»

Me.Поле19 = a - a * b / 100 ' В поле «Итого» записываем сумму заказа с учётом скидки

Me.Refresh

Me.ЗаказаноПодч.Form.AllowAdditions = False ' Запрещаем добавление в форму уже сформированного заказа

Me.ЗаказаноПодч.Form.AllowDeletions = False ' Запрещаем удаление

Me.ЗаказаноПодч.Form.AllowEdits = False ' Запрещаем изменение

Me.Кнопка18.Visible = True ' Делаем кнопку «Новый заказ» видимой

Me.Кнопка18.SetFocus ' Фокусируемся на ней

Me.Кнопка17.Visible = False ' Делаем кнопку «Подтвердить заказ» невидимой

Приложение 3.

Реализация игры «Сапёр» на VBA:

Код, выполняющийся при начале игры:

Dim a, b, c, d, e, f, g, h, i, j, l, m, n, o, p, q, r, s, t, v, u, w ' Переменные для хранения координат

Dim k, z As Double ' Переменные для хранения суммы ставки и выигрыша

Dim strSQL, strSQL2, strSQL3, strSQL4, strSQL5, strSQL6, strSQL7, strSQL8, strSQL9, strSQL10, strSQL11, strSQLbalance As String ' Переменные для хранения запросов на SQL

Randomize ' Запускаем генератор случайных величин

If IsNull(Поле8) Then ' Проверяем, сделал ли юзер ставку

MsgBox ("Сначала сделайте ставку!")

Else

k = Поле5 ' Баланс

z = Поле8

If k < z Then

MsgBox ("У Вас не хватает денег!") ' Проверяем, хватает ли денег на игру

Else

Поле8.Locked = True ' Запрещаем изменение ставки во время игры

a = Int((7 * Rnd()) + 1) ' X1 ' Начинаем генерацию неповторяющихся координат мин

b = Int((7 * Rnd()) + 1) ' Y1

Do

c = Int((7 * Rnd()) + 1) ' X2

d = Int((7 * Rnd()) + 1) ' Y2

Loop Until (c <> a) Or (d <> b)

Do

e = Int((7 * Rnd()) + 1) ' X3

f = Int((7 * Rnd()) + 1) ' Y3

Loop Until ((e <> a) Or (f <> b)) And ((e <> c) Or (f <> d))

Do

g = Int((7 * Rnd()) + 1) ' X4

h = Int((7 * Rnd()) + 1) ' Y4

Loop Until ((g <> a) Or (h <> b)) And ((g <> c) Or (h <> d)) And ((g <> e) Or (h <> f))

Do

i = Int((7 * Rnd()) + 1) ' X5

j = Int((7 * Rnd()) + 1) ' Y5

Loop Until ((i <> a) Or (j <> b)) And ((i <> c) Or (j <> d)) And ((i <> e) Or (j <> f)) And ((i <> g) Or (j <> h))

Do

l = Int((7 * Rnd()) + 1) ' X6

m = Int((7 * Rnd()) + 1) ' Y6

Loop Until ((l <> a) Or (m <> b)) And ((l <> c) Or (m <> d)) And ((l <> e) Or (m <> f)) And ((l <> g) Or (m <> h)) And ((l <> i) Or (m <> j))

Do

n = Int((7 * Rnd()) + 1) ' X7

o = Int((7 * Rnd()) + 1) ' Y7

Loop Until ((n <> a) Or (o <> b)) And ((n <> c) Or (o <> d)) And ((n <> e) Or (o <> f)) And ((n <> g) Or (o <> h)) And ((n <> i) Or (o <> j)) And ((n <> l) Or (o <> m))

Do

p = Int((7 * Rnd()) + 1) ' X8

q = Int((7 * Rnd()) + 1) ' Y8

Loop Until ((p <> a) Or (q <> b)) And ((p <> c) Or (q <> d)) And ((p <> e) Or (q <> f)) And ((p <> g) Or (q <> h)) And ((p <> i) Or (q <> j)) And ((p <> l) Or (q <> m)) And ((p <> n) Or (q <> o))

Do

r = Int((7 * Rnd()) + 1) ' X9

s = Int((7 * Rnd()) + 1) ' Y9

Loop Until ((r <> a) Or (s <> b)) And ((r <> c) Or (s <> d)) And ((r <> e) Or (s <> f)) And ((r <> g) Or (s <> h)) And ((r <> i) Or (s <> j)) And ((r <> l) Or (s <> m)) And ((r <> n) Or (s <> o)) And ((r <> p) Or (s <> q))

Do

t = Int((7 * Rnd()) + 1) ' X10

v = Int((7 * Rnd()) + 1) ' Y10

Loop Until ((t <> a) Or (v <> b)) And ((t <> c) Or (v <> d)) And ((t <> e) Or (v <> f)) And ((t <> g) Or (v <> h)) And ((t <> i) Or (v <> j)) And ((t <> l) Or (v <> m)) And ((t <> n) Or (v <> o)) And ((t <> p) Or (v <> q)) And ((t <> r) Or (v <> s))

Do

u = Int((7 * Rnd()) + 1) ' X11

w = Int((7 * Rnd()) + 1) ' Y11

Loop Until ((u <> a) Or (w <> b)) And ((u <> c) Or (w <> d)) And ((u <> e) Or (w <> f)) And ((u <> g) Or (w <> h)) And ((u <> i) Or (w <> j)) And ((u <> l) Or (w <> m)) And ((u <> n) Or (w <> o)) And ((u <> p) Or (w <> q)) And ((u <> r) Or (w <> s)) And ((u <> t) Or (w <> w))

strSQL = "UPDATE Сапёр SET X =" & a & ", Y =" & b & " WHERE Мина = 1" ' Заносим в таблицу получившиеся координаты

CurrentDb.Execute (strSQL)

strSQL2 = "UPDATE Сапёр SET X =" & c & ", Y =" & d & " WHERE Мина = 2"

CurrentDb.Execute (strSQL2)

strSQL3 = "UPDATE Сапёр SET X =" & e & ", Y =" & f & " WHERE Мина = 3"

CurrentDb.Execute (strSQL3)

strSQL4 = "UPDATE Сапёр SET X =" & g & ", Y =" & h & " WHERE Мина = 4"

CurrentDb.Execute (strSQL4)

strSQL5 = "UPDATE Сапёр SET X =" & i & ", Y =" & j & " WHERE Мина = 5"

CurrentDb.Execute (strSQL5)

strSQL6 = "UPDATE Сапёр SET X =" & l & ", Y =" & m & " WHERE Мина = 6"

CurrentDb.Execute (strSQL6)

strSQL7 = "UPDATE Сапёр SET X =" & n & ", Y =" & o & " WHERE Мина = 7"

CurrentDb.Execute (strSQL7)

strSQL8 = "UPDATE Сапёр SET X =" & p & ", Y =" & q & " WHERE Мина = 8"

CurrentDb.Execute (strSQL8)

strSQL9 = "UPDATE Сапёр SET X =" & r & ", Y =" & s & " WHERE Мина = 9"

CurrentDb.Execute (strSQL9)

strSQL10 = "UPDATE Сапёр SET X =" & t & ", Y =" & v & " WHERE Мина = 10"

CurrentDb.Execute (strSQL10)

strSQL11 = "UPDATE Сапёр SET X =" & u & ", Y =" & w & " WHERE Мина = 11"

CurrentDb.Execute (strSQL11)

MsgBox ("Ваша ставка принята, игра началась!")

Поле7 = "49" ' Устанавливаем количество неоткрытых клеток

z = Поле8

strSQLbalance = "UPDATE Директор SET Баланс = Баланс -" & z & "" ' Запрос на вычет ставки из баланса

CurrentDb.Execute (strSQLbalance)

Forms![Сапёр]![Поле5].Requery ' Обновляем баланс на форме «Сапёр»

Forms![Директору]![Поле8].Requery ' … и на форме «Директору»

End If

End If

Код, выполняющийся при нажатии на поле:

If IsNull(Поле8) Then

MsgBox ("Сначала сделайте ставку!") ' Проверяем, сделана ли ставка

Else

If IsNull(Поле7) Then

MsgBox ("Нажмите 'Начать игру'!") ' Проверяем, начата ли игра

Else

Dim x, y, stavka As Integer

Dim strSQL, button As String

Dim rs As Recordset

button = Me.ActiveControl.Name ' Получаем в переменную имя текущей кнопки

' ==============

x = 1 ' X координата текущей кнопки

y = 7 ' Y координата текущей кнопки

' ==============

strSQL = "SELECT Count(*) As kol FROM Сапёр WHERE X =" & x & " AND Y =" & y & ""

Set rs = CurrentDb.OpenRecordset(strSQL)

If rs!kol > 0 Then ' Проверяем наличие в поле бомбы

Me(button).Caption = "Х"

stavka = Поле8

MsgBox ("Мина! Вы проиграли " & stavka & " рублей!")

DoCmd.Close acForm, "Сапёр" ' Перезапускаем форму

DoCmd.OpenForm "Сапёр"

Forms![Сапёр].SetFocus

Else

Dim n, a1, a2, a3, a4, a5, a6, a7, a8 As Integer

Dim strSQL1, strSQL2, strSQL3, strSQL4, strSQL5, strSQL6, strSQL7, strSQL8 As String

Dim rs1, rs2, rs3, rs5, rs6, rs7, rs8 As Recordset

' Начинаем считать количество мин вокруг

strSQL1 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & "-1 AND Y=" & y & "+1"

Set rs1 = CurrentDb.OpenRecordset(strSQL1)

strSQL2 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & " AND Y=" & y & "+1"

Set rs2 = CurrentDb.OpenRecordset(strSQL2)

strSQL3 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & "+1 AND Y=" & y & "+1"

Set rs3 = CurrentDb.OpenRecordset(strSQL3)

strSQL4 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & "-1 AND Y=" & y & ""

Set rs4 = CurrentDb.OpenRecordset(strSQL4)

strSQL5 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & "+1 AND Y=" & y & ""

Set rs5 = CurrentDb.OpenRecordset(strSQL5)

strSQL6 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & "-1 AND Y=" & y & "-1"

Set rs6 = CurrentDb.OpenRecordset(strSQL6)

strSQL7 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & " AND Y=" & y & "-1"

Set rs7 = CurrentDb.OpenRecordset(strSQL7)

strSQL8 = "SELECT Count(*) As kol FROM Сапёр WHERE X=" & x & "+1 AND Y=" & y & "-1"

Set rs8 = CurrentDb.OpenRecordset(strSQL8)

n = rs1!kol + rs2!kol + rs3!kol + rs4!kol + rs5!kol + rs6!kol + rs7!kol + rs8!kol ' складываем количество мин вокруг

' Заканчиваем считать количество мин вокруг

Me(button).Caption = n ' Выводим на кнопку количество мин

Поле7 = Поле7 - 1 ' Стало одним открытым полем больше

Me.Кнопка12.SetFocus ' Убираем фокус с кнопки

Me(button).Enabled = False ' Блокируем её

If Поле7 <= 11 Then ' Проверяем выигрышную ситуацию

stavka = Поле8

stavka = stavka * 5 ' Сумма выигрыша = ставка * 5

MsgBox ("Поздравляем! Вы разминировали поле!")

strSQL = "UPDATE Директор SET Баланс = Баланс +" & stavka & "" ' Пополняем баланс на сумму выигрыша

CurrentDb.Execute (strSQL)

Forms![Сапёр]![Поле5].Requery ' Обновляем баланс на формах

Forms![Директору]![Поле8].Requery

DoCmd.Close acForm, "Сапёр" ' Перезапускаем форму

DoCmd.OpenForm "Сапёр"

Forms![Сапёр].SetFocus

End If

End If

End If

End If

Литература

1. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений /Под ред. проф. А.Д. Хомоненко. - СПб: КОРОНА-принт, 2000.

2. Т. Тиори, Дж. Фрай. Проектирование структур баз данных, т. 1. - М.: Мир. 1985.

3. Ульман Дж. Основы систем баз данных. - М.: Финансы и статистика, 1983.

4. Коннолли Т., Бегг К., Страчан Л. Базы данных: проектирование, реализация и сопровождение. Теория и практика. 2-е изд.: Пер. с англ. - М.: Издательский дом «Вильяме», 2001.

5. Дейт К.Дж. Введение в системы баз данных.: Пер. с англ. - К.: Диалектика, 1998.

6. Диго С.М. Проектирование и использование баз данных. - VI: Финансы и статистика, 1995.

7. Наго М.. Катаяма Т., Уэмура С. Структуры и базы данных: Пер. с япон. - М.: Мир, 1986.

Размещено на Allbest.ru


Подобные документы

  • Изучение работы с реляционной СУБД "Access", основные этапы проектирования базы данных: создание таблицы в режиме конструктора, заполнение ее данными, проектирование связей между ними. Создание форм и запросов, выбор сортировки, заполнение отчетов.

    контрольная работа [4,5 M], добавлен 17.01.2011

  • Анализ предметной области. Проектирование концептуальной модели. Разработка логической структуры базы данных. Выделение информационных объектов. Создание глобальной схемы связей. Поддержка целостности данных. Структура и назначение существующих форм.

    курсовая работа [1,4 M], добавлен 23.09.2016

  • Таблицы и логические структуры базы данных аптеки готовых лекарственных форм. Проектирование таблиц, детальное описание полей подсистем, заполнение таблиц информацией. Разработка запросов, создание форм. Формирование отчетов, инструкция пользователю.

    курсовая работа [3,4 M], добавлен 29.04.2010

  • Формирование основных таблиц базы данных деканата и устанавливание к ним ключей. Заполнение баз необходимыми сведениями. Формулировка схем данных форм и запросов. Настройка некоторых запросов по своим свойствам. Создание форм через "мастера форм".

    контрольная работа [1,0 M], добавлен 07.01.2011

  • Общая характеристика и состав информационных запросов к проектируемой базе данных, требования к ней и внутренняя структура, принципы нормализации и разработка логической модели. Создание таблиц и связей между ними. Язык структурированных запросов.

    курсовая работа [985,6 K], добавлен 22.05.2014

  • Особенности технологий создания и работы с базами данных. Реализация структуры базы данных в MS Visio и MS SQL Server. Виды манипуляций над данными, создание сложных запросов. Суть и характеристика прав пользователей, разработка клиентских приложений.

    учебное пособие [2,2 M], добавлен 16.05.2013

  • Создание таблиц базы данных с помощью MS Access "Страны Азии". Форма базы данных и запросы к выборкам данных. Модификация структуры таблиц, создания связей между главными таблицами, редактирование данных и проектирование форм для реальной базы данных.

    контрольная работа [723,9 K], добавлен 25.11.2012

  • Среды создания баз данных. Установка программного продукта MS Access 2000, построение реляционной базы данных, поддержка языка XML. ER-диаграмма (схема "сущность-связь"). Заполнение форм, создание таблиц. Действия для создания и редактирования списка.

    курсовая работа [954,9 K], добавлен 22.12.2010

  • Компоненты реляционной базы данных Microsoft Access. Создание структуры таблиц и определение связей между ними. Проектирование форм для сводных таблиц и запросов с помощью конструктора окон. Разработка и создание автоотчетов и запросов на выборку данных.

    реферат [3,3 M], добавлен 29.01.2011

  • Разновидности систем управления базами данных. Анализ предметной области. Разработка структуры и ведение базы данных. Структурированный язык запросов SQL. Организация выбора информации из базы данных. Общие принципы проектирования экранных форм, макросов.

    курсовая работа [3,1 M], добавлен 26.02.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.