Бакалавр
Дипломные и курсовые на заказ

Разработка базы данных для администрации спортивного комплекса «Маяк»

ДипломнаяПомощь в написанииУзнать стоимостьмоей работы

Данная курсовая работа является актуальной и отвечает предъявленым к ней требованиям. Была разработана и написана на языке программирования высокого уровня Borland Delphi 7.0 с использованием баз данных, программное обеспечение для автоматизированного рабочего места администратора спортивного комплекса «Маяк», позволяющая добавлять, редактировать, удалять, выполнять прикладные задачи… Читать ещё >

Разработка базы данных для администрации спортивного комплекса «Маяк» (реферат, курсовая, диплом, контрольная)

  • Введение
  • 1. Системный анализ предметной области
  • 2. Выделение сущностей и связей между ними
  • 2.1 Преобразование ER-диаграммы в схему отношений
  • 2.2 Приведение схемы предварительных отношений к НФБК
  • 3. Создание таблиц БД средствами Borland Delphi 7 Database desktop
  • 4. Разработка алгоритмов работы программы
  • 5. Разработка приложения пользователя БД
  • Заключение
  • Список использованной литературы
  • Приложения

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

1. База данных хранится и обрабатывается в вычислительной системе. Таким образом, любые внекомпьютерные хранилища информации (архивы, библиотеки и т. п.) базами данных не являются.

2. Данные в базе данных хорошо структурированы (систематизированы). Под структурированностью в данном случае понимается явное выделение составных частей (элементов) и связей между ними.

3. Структура базы данных обеспечивает эффективный поиск и обработку данных. Эффективность здесь главным образом определяется тем, как соотносятся гибкость и мощность возможностей (поиска и обработки) с затратами усилий и ресурсов.

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

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

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

Разрабатываемая БД обеспечивает автоматизацию процессов составления, ведения и распространения информации об расписании занятий в спортивном комплексе «Маяк». Составлением и поддержанием расписания в адекватном состоянии занимается администрация спорткомплекса. Потребителями информации из БД являются посетители, занимающиеся в спорткомплексе, инструктора и лица ответственные за помещения, в которых проводятся спортивные занятия.

Входная информация поступает в БД виде:

данных о посетителях и инструкторах;

стоимости посещения занятий;

данные о помещениях, в которых проводятся занятия;

планов проведения занятий.

На выходе пользователи системы получают информацию в виде:

расписаний работы инструкторов;

расписаний занятий групп;

данных о количестве посетителей в группах;

данных о количестве посещений занятий для любого посетителя.

Главным параметром любого посетителя является уникальный номер, который делает его индивидуальным. Кроме того, любой посетитель характеризуется следующими характеристиками:

ФИО посетителя;

дата рождения;

адрес;

телефон;

организация;

весовая категория.

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

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

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

Занятия в группах проводят инструктора, каждый из которых содержит следующие сведения:

индивидуальный номер;

ФИО инструктора;

стаж;

специализация;

образование;

квалификация.

Каждая группа проводит свои занятия в спортивных залах. Каждый зал содержит следующие сведения:

название зала;

инвентарь;

вместимость.

В БД присутствуют следующие ограничения на информацию:

в одно и тоже время один посетитель не может заниматься в разных группах;

в одно и тоже время один инструктор не может проводить занятия в разных группах;

у любого абонемента может быть только один владелец.

В результате БД должна обеспечивать решение следующих основных прикладных задач:

формирование статистики по группам (количество человек);

формирование статистики по популярности видов спорта;

расчет прибыли, количества проданных абонементов и количества посещений за определенный период;

форсирование выручки, количества проданных абонементов и количества посещений за определенный период (график);

расчет зарплаты инструкторов;

формирование выходных документов:

1. статистический отчет по группам;

2. статистический отчет по популярности видов спорта;

3. отчет по зарплате инструкторов:

4. абонемент.

2. Выделение сущностей и связей между ними

На основе проведенного анализа предметной области можно выделить следующие сущности:

" Посетитель" ;

" Инструктор" ;

" Группа" ;

" Абонемент" ;

" Зал" ;

" Расписание" ;

" Посещение" .

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

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

Сущность «Группа» характеризуется атрибутами «ID группы», «Название группы». Ключом этой сущности является атрибут «ID группы» .

Сущность «Абонемент» характеризуется атрибутами «№ абонемента», «Кол-во посещений», «Цена». Ключом этой сущности является атрибут «№ абонемента», так как у каждого абонемента может быть только один неповторяющийся номер.

Сущность «Зал» характеризуется атрибутами «Название зала», «Инвентарь» и «Вместимость». Ключом этой сущности является атрибут «Название зала» .

Сущность «Расписание» характеризуется атрибутами, «Шифр расписания», «День недели» и «Время занятия». Ключом этой сущности является атрибут «Шифр расписания» .

Сущность «Посещение» характеризуется атрибутами «Код посещения», «Дата посещения» и «Время». Ключом этой сущности является атрибут «Код посещения» .

Анализ характера логического взаимодействия объектов предметной области позволяет сделать вывод о том, что, между сущностями «Посетитель» и «Абонемент» существует связь «Имеется» степени 1: М. Это объясняется тем, что каждый посетитель может иметь несколько абонементов. Со стороны сущности «Посетитель» связь имеет обязательный класс принадлежности. Со стороны сущности «Абонемент» класс принадлежности является обязательным, потому что абонемент обязательно должен быть продан посетителю.

Сущности «Инструктор» и «Группа» объединены связью «Тренирует». Степень этой связи — 1: М, так как инструктор может тренировать несколько групп. Со стороны сущности «Группа» связь имеет обязательный класс принадлежности, потому что группа не может тренироваться без инструктора. Со стороны сущности «Инструктор» класс принадлежности необязательный, потому что не исключена ситуация, когда принятый на работу инструктор еще не тренирует ни одну группу.

Сущности «Посетители» и «Группа» объединены связью «Посещают» степени М:

1. Это объясняется тем, что одну группу могут посещать несколько посетителей. Класс принадлежности обеих сущностей — обязательный, так как каждый посетитель обязательно посещает хотя бы одну группу, и не существует групп, в которых нет посетителей.

Сущности «Группа» и «Зал» объединены связью «Занимаются» степени М:

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

Сущности «Группа» и «Расписание» объединены связью «Занимаются по» степени 1: М. Со стороны сущности «Группа» класс принадлежности обязательный, потому что группа не может заниматься в любое другое время, кроме указанного в расписании. Со стороны сущности «Расписание» класс принадлежности обязательный, потому что расписание не может составляться без опоры на определенную группу.

Сущности «Посещение» и «Абонемент» объединены связью «Заносится» степени М:

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

Рисунок 2 — ER — диаграмма

2.1 Преобразование ER-диаграммы в схему отношений

Для преобразования полученной ER-диаграммы в схему предварительных отношений необходимо воспользоваться существующими правилами преобразования.

В соответствии с ними связь «Имеется» между сущностями «Посетитель» и «Абонемент» должна породить два отношения — по одному на каждое из связываемых отношений с добавлением ключа сущности «Посетитель» в отношение соответствующее сущности «Абонемент» в качестве ключа связи. Это объясняется тем, что данная связь имеет степень 1: М и обязательный класс принадлежности со стороны многосвязной сущности «Абонемент». Таким образом, преобразование связи «имеется» даст два отношения, представленные на рисунке 3.1.

Рисунок 2.1 — Схема отношений после преобразования связи «Имеется»

Связь «Посещают» между сущностями «Посетители» и «Группа» имеет степень М: 1 и обязательный класс принадлежности со стороны сущности «Посетители». Поэтому для ее преобразования достаточно будет сформировать отношение R3, соответствующее сущности «Группа», и добавить его ключ в отношение R1 уже полученное из многосвязной сущности «Посетители» .

Рисунок 2.2 — Схема отношений после преобразования связи «Посещают»

Аналогично по правилу 3 преобразуется связь «Тренирует» между сущностями «Инструктор» и «Группа». В соответствии с ним в схему добавляется отношение R4 соответствующее сущности «Инструктор», и его ключ добавляется в отношение R3.

Рисунок 2.3 — Схема отношений после преобразования связи «Тренирует»

Связь «Занимаются», «Занимаются по» и «Заносится» между сущностями «Зал» и «Группа», «Группа» и «Расписание», «Посещение» и «Абонемент» также как и во всех предыдущих случаях преобразуется по правилу 3, так как показано на рисунке 3.4.

Рисунок 2.4 — Схема предварительных отношений

2.2 Приведение схемы предварительных отношений к НФБК

По определению отношение находится в НФБК тогда и только тогда, когда любой его детерминант является возможным ключом.

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

Т.о. все отношения схемы приведенной на рисунке 2.4 удовлетворяют требованиям НФБК и являются полностью нормализованными.

3. Создание таблиц БД средствами Borland Delphi 7 Database desktop

В соответствии со схемой данных, представленной в приложении В.1, создаются семь таблиц.

Создаётся таблица R1 с полями: R17 и R18 — целочисленные типы, R12, R13, R14, R15, R16 — строковые типы размером 20 символов, R11* - тип счётчик.

Рисунок 1 — Таблица R1

Создаётся таблица R2 с полями: R21*-является переменной типом счётчик, R22, R23, R24-являются целочисленными данными. Для возможности подчинения одной таблицы другой, определяются вторичные индексы. Для чего в свойствах данной таблицы выбирается раздел — Secondary Indexes и определяются вторичные индексы из списка атрибутов.

Рисунок 2 — Таблица R2

Создаётся таблица R3 с полями: R31*-является переменной типа счётчик, R32, R34 — являются строковыми типами длиной 20 символов, R33-является переменной целого типа. Для возможности подчинения одной таблицы другой, определяются вторичные индексы. Для чего в свойствах данной таблицы выбирается раздел — Secondary Indexes и определяются вторичные индексы из списка атрибутов.

Рисунок 3 — Таблица R3

Создаётся таблица R4 с полями: R41*-является типом счётчик, R43-является переменной целочисленного типа, R42, R44, R45, R46-переменные строкового типа размером 20 символов. Для возможности подчинения одной таблицы другой, определяются вторичные индексы. Для возможности сортировки записей таблиц по не ключевым атрибутам, определяются вторичные индексы. Для чего в свойствах данной таблицы выбирается раздел — Secondary Indexes и определяются вторичные индексы из списка атрибутов. Каждому атрибуту таблицы присвоен вторичный индекс, так планируется делать сортировку, по любому из полей данной таблицы.

Рисунок 4 — Таблица R4

Создаётся таблица R5 с полем: R51* и R53-являются строковыми переменными размером 20 символов, R52-переменная целочисленного типа. Для возможности подчинения одной таблицы другой, определяются вторичные индексы. Для чего в свойствах данной таблицы выбирается раздел — Secondary Indexes и определяются вторичные индексы из списка атрибутов.

Рисунок 5 — Таблица R5

Создаётся таблица R6 с полями: R61*-является типом счётчик, R64 — является целым типом, R62, R63-являются строковыми типами размером 20 символов. Для возможности подчинения одной таблицы другой определяются вторичные индексы. Для чего в свойствах данной таблицы выбирается раздел — Secondary Indexes и определяются вторичные индексы из списка атрибутов.

Рисунок 6 — Таблица R6

Создаётся таблица R7 с полями: R71*-является типом счётчик, R74 — является целым типом, R72, R73-являются строковыми типами размером 20 символов. Для возможности подчинения одной таблицы другой, определяются вторичные индексы. Для чего в свойствах данной таблицы выбирается раздел — Secondary Indexes и определяются вторичные индексы из списка атрибутов.

Рисунок 7 — Таблица R7

Свяжем между собой таблицы, для этого в Paradox выбираем пункт меню Referential Integrity, где будут создаваться связи между таблицами.

Создадим связь между таблицами R1 и R3.

Рисунок 8 — Связь таблицы R1 и R3

Создадим связь между таблицами R2 и R1.

Рисунок 9 — Связь таблицы R2 и R1

Создадим связь между таблицами R3 и R4.

Рисунок 10 — Связь таблицы R3 и R4

Создадим связь между таблицами R3 и R5.

Рисунок 11 — Связь таблицы R3 и R5

Создадим связь между таблицами R6 и R3.

Рисунок 12 — Связь таблицы R6 и R3

Создадим связь между таблицами R7 и R2.

Рисунок 13 — Связь таблицы R7 и R2

После создания связей им присваиваются имена, для таблицы R1, была создана одна связь, поэтому, таблица будет содержать одно имя связи.

Рисунок 14 — Связи таблицы R1

Для таблицы R2, была создана одна связь, поэтому, таблица будет содержать одно имя связи.

Рисунок 15 — Связь таблицы R2

Для таблицы R3, были созданы две связи, поэтому, таблица будет содержать два имени связи.

Рисунок 16 — Связь таблицы R3

Для таблицы R6, была создана одна связь, поэтому, таблица будет содержать одно имя связи.

Рисунок 17 — Связь таблицы R6

Для таблицы R7, была создана одна связь, поэтому, таблица будет содержать одно имя связи.

Рисунок 18 — Связь таблицы R7

На этом этап создания таблиц с помощью утилиты Borland Delphi 7 Database desktop заканчивается.

4. Разработка алгоритмов работы программы

После запуска программы происходит подключение модулей (блок 1). Вход в БД происходит через главную форму (блок 2).

Если нажата кнопка «Добавить» (блок 3), то выполняется соответственно выбор таблицы и добавление записи (блоки 4,5).

Если нажата кнопка «Изменить» (блок 6), то выполняется соответственно выбор таблицы, выбор записи и добавление записи (блоки 7,8,9).

Если нажата кнопка «Удалить» (блок 10), то выполняется соответственно выбор таблицы, выбор записи и удаление записи (блоки 11, 12, 13).

Если нажата кнопка «Сохранить» (блок 14), то выполняется сохранение записи (блоки 15).

Если нажата кнопка «Инструкторы» (блок 16), то откроется новая форма и может выполнятся добавление (блок 17), изменение (блок 20), удаление (блок 24), сохранение (блок 28), поиск (блок 30), сортировка (блок 32), фильтрация (блок 34) записей.

Если нажата кнопка «Залы» (блок 36), то откроется новая форма и может выполнятся добавление (блок 37), изменение (блок 39), удаление (блок 42), сохранение (блок 45) записей.

Если нажата кнопка «Отчет» (блок 47), то откроется новая форма и можно выбрать кнопки:

1. «Группы» (блок 48) — откроется новая форма, при нажатии на кнопку «Отчет» (блок 53), программа сформирует отчет по группам (блок 54).

2. «Виды спорта» (блок 49) — откроется новая форма, при нажатии на кнопку «Отчет» (блок 55), программа сформирует отчет по группам (блок 56).

3. «Прибыль» (блок 50) — откроется новая форма, при определении промежутка времени (блок 57), программа посчитает прибыль, количество проданных абонементов, количество посещений за определенный период (блок 59).

4. «Статистика» — откроется новая форма, при определении промежутка времени (блок 60), и нажатия кнопки «Показать» (блок 61), программа сформирует выручку, количество проданных абонементов, количество посещений за определенный период в виде графика. При нажатии на кнопку «Печать» (блок 63), программа распечатает статистический отчет.

5. «Зарплата» — откроется новая форма, при вводе исходных данных (блок 65), и нажатия кнопки «Рассчитать» (блок 66), программа произведет расчет зарплаты инструкторов (блок 67). При нажатии на кнопку «Отчет» (блок 68), программа сформирует отчет по зарплатам инструкторов.

Если нажата кнопка «Оформить абонемент» (блок 70), программа оформит абонемент для посетителя (блок 71).

Блок-схема данных процессов представлена в Приложении А.

5. Разработка приложения пользователя БД

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

Для семи таблиц базы данных на форму помещаются семь не визуальных компонентов DataSource и семь TTable В свойстве DataSet компонента DataSource указывается имя компонента, с которым связан источник данных (т.е. Table1, Table2, Table3, Table4, Table5, Table6 и Table7 соответственно для DataSource1, DataSource2, DataSource3, DataSource4, DataSource5, DataSource6, DataSource7). В свойстве DatabaseName компонентов TTable задаётся имя псевдонима BDE (для данной БД — «lr3»). В свойстве TableName компонента TTable — имя созданной в Database Desktop таблицы (Table1 — R1, Table2 — R2, Table3 — R3, Table4 — R4, Table5 — R5, Table6 — R6, Table7 — R7), а в свойстве Active выставляется в значение «true» .

Затем на Form1 (главная форма) помещаются визуальные компоненты DBGrid и DBNavigator по пять штук каждого, при этом в свойстве DataSource указывается имя источника данных, который связан с нужной таблицей. После этого данные таблицы будут отображаться в элементе DBGrid. Навигация по данному элементу производится с помощью элемента DBNavigator, который так же имеет основное свойство DataSource. Такие же элементы, по одному элементу на каждую форму, кидаем на две другие формы Form3, Form4, Для того чтобы подчинить таблицу, необходимо выделить не визуальный компонент подчиненной таблицы (TTable) и в свойстве MasterSource указать компонент DataSource главной таблицы. В поле MasterFields устанавливается параметры, по которым эти две таблицы связаны.

То есть для таблиц Table2 и Table1 в поле MasterSource указывается DataSource1, а в качестве MasterFields — поле «N_p». Для таблиц Table1 и Table3 в поле MasterSource указывается DataSource3, а в качестве MasterFields — поле «R31». Для таблиц Table1 и Table2 в поле MasterSource указывается DataSource1, а в качестве MasterFields — поле «R11». Для таблиц Table3 и Table6 в поле MasterSource указывается DataSource3, а в качестве MasterFields — поле «R31». Для таблиц Table2 и Table7 в поле MasterSource указывается DataSource2, а в качестве MasterFields — поле «R21».

В компоненте TTable3 в редакторе полей Fields Editor создается новое поле типа Lookup. По команде контекстного меню New Field появляется диалоговое окно, в котором указываются следующие значения:

— в поле Name — имя нового поля («bb»);

— в поле Type — тип данных, которые будут в этом поле (String);

— в поле Field Type — значение Lookup;

— в раскрывающемся списке KeyFields — ключ связи (R33);

— в раскрывающемся списке Dataset — связываемый набор данных (Table4);

— в раскрывающемся списке Lookup Keys — ключ связи в связанном наборе данных (R41);

— в раскрывающемся списке Result Field — поле, подставляемое из связанного набора (R42).

Рисунок 5 — Окно NewField для поля «bb»

В компоненте TTable3 в редакторе полей Fields Editor создается новое поле типа Lookup. По команде контекстного меню New Field появляется диалоговое окно, в котором указываются следующие значения:

— в поле Name — имя нового поля («kk»);

— в поле Type — тип данных, которые будут в этом поле (String);

— в поле Field Type — значение Lookup;

— в раскрывающемся списке KeyFields — ключ связи (R34);

— в раскрывающемся списке Dataset — связываемый набор данных (Table5);

— в раскрывающемся списке Lookup Keys — ключ связи в связанном наборе данных (R51);

— в раскрывающемся списке Result Field — поле, подставляемое из связанного набора (R51).

Рисунок 5.1 — Окно NewField для поля «kk»

Результат главной формы с заполненными полями информацией представлен на рисунке 5.2.

Рисунок 5.2 — Главная форма

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

Чтобы связать формы в Implementation пишется uses Unit3, Unit4, Unit5, Unit17 для главной формы, для второй uses Unit1, Unit4. Для четветрой формы uses Unit6, Unit7, Unit1, Unit10, Unit11, Unit12, Unit3, Unit4, Unit8, Unit9, Unit16.

На вторую форму (Инструкторы) добавляются компоненты DBGrid1, DBNavigator1, ComboBox1, ComboBox2, ComboBox3, Edit1, DBEdit1, DBEdit2, DBEdit3, DBEdit4, DBEdit5, Button1, Button2, Button3, Button4, Button5, Button6 и 9 компонентов Label.

В свойствах DBGrid1 в строке DataSource указывается dm. DataSource4. В свойстве DataSource6 в строке DataSet указывается Table4.

В свойствах DBNavigator1 в строке DataSource указывается dm. DataSource4. В свойстве DataSource6 в строке DataSet указывается Table4.

Для таблицы инструкторы добавление, изменение, удаление, сохранение, переход к следующей записи и переход к предыдущей записи осуществляется с помощью с помощью шести компонентов Button. В событиях данных кнопок прописываются команды Insert, Edit, Delete, Post, Next и Prior соответственно с указанием требуемой таблицы (например, для перехода на следующую запись таблицы поезда, задаётся команда Table4. Next).

Поиск в таблице инструкторов по любому из выбранных полей осуществляется при выборе соответствующего пункта меню, по индексированному полю, но с применением метода Locate. В качестве столбца для поиска, можно выбрать любой столбец таблицы инструкторов, при поиске имена столбцов будут такие как в компоненте Table4, в качестве ключа поиска строка из Edit1, а в качестве параметра поиска — loPartialKey (совпадение при частичном совпадении первых символов ключа с образцом).

Рисунок 5.3 — Поиск по таблице инструкторы

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

Рисунок 5.4 — Сортировка в таблице инструкторы

Для фильтрации таблицы по какому-либо условию необходимо изменить свойство Filtered объекта Table со значения False на True. Для осуществления фильтрации таблицы «инструкторы» необходимо ввести в поле информационное информацию, а затем выбрать пункт меню, каждый пункт меню показывает, что при выборе его, фильтрация произойдёт по соответствующему полю.

Рисунок 5.5 — Фильтрация по таблице инструкторы

Описанная форма показана на рисунке 5.11

Рисунок 5.6 — Инструкторы

На третью форму (Залы) добавляются компоненты DBGrid1 и DBNavigator1.

В свойствах DBGrid1 в строке DataSource указывается dm. DataSource5. В свойстве DataSource5 в строке DataSet указывается Table5.

В свойствах DBNavigator1 в строке DataSource указывается dm. DataSource5. В свойстве DataSource5 в строке DataSet указывается Table5.

На четвертую форму (Отчеты) добавляются компоненты Button1 (Группы), Button2 (Виды спорта), Button3 (Прибыль), Button4 (Статистика), Button5 (Зарплата).

Для кнопки Button1 прописываем код — form6. show, для получения отчета по группам. На шестую форму добавляются компоненты DBGrid1 и Button1 (Отчет). В свойствах DBGrid1 в строке DataSource указывается dm. DataSource9. В свойстве DataSource9 в строке DataSet указывается Query1. Для компонента Query1 в свойстве DatabaseName указывается daulet. Для того, чтобы осуществить доступ к необходимой таблице создается SQL — запрос. В строке SQL пишется запрос, который представлен на рисунке 5.7 Activate меняем с false на true.

Рисунок 5.7 — SQL — запрос Query1

Кнопка Button1 (Отчет) для вывода статистического отчета по группам прописываем код — form9. QuickRep1. Preview. На девятую форму добавляется компонент QuickRep1. В QuickRep1 в свойствах DataSet указывается dm. Query1.

Два раза нажав на QuickRep1 открывается Report Setting. Ставим галочки на Title, Column Header, Detail Band. Добавляется QRLabel (Отчет) на Title и QRLabel2 (Название группы), QRLabel3 (Количество человек в группе) для Column Header. Добавляются 2 штуки QRDBText на Detail Band.

Во всех QRDBText свойствах DataSet указывается dm. Query1.

В QRDBText1 свойствах DataField указывается — r32, в QRDBText2 — tt.

Готовый шаблон отчёта представлен на рисунке 5.8.

Рисунок 5.8 — Отчет по группам

Для кнопки Button2 прописываем код — form8. show, для получения отчета по видам спорта. На восьмую форму добавляются компоненты DBGrid1 и Button1 (Отчет). В свойствах DBGrid1 в строке DataSource указывается dm. DataSource13. В свойстве DataSource9 в строке DataSet указывается Query5. Для компонента Query5 в свойстве DatabaseName указывается daulet. Для того, чтобы осуществить доступ к необходимой таблице создается SQL — запрос. В строке SQL пишется запрос, который представлен на рисунке 5.9 Activate меняем с false на true.

Рисунок 5.9 — SQL — запрос Query5

Кнопка Button1 (Отчет) для вывода статистического отчета по видам спорта прописываем код — form13. QuickRep1. Preview. На тринадцатую форму добавляется компонент QuickRep1. В QuickRep1 в свойствах DataSet указывается dm. Query5.

Два раза нажав на QuickRep1 открывается Report Setting. Ставим галочки на Title, Column Header, Detail Band. Добавляется QRLabel2 (Отчет) на Title и QRLabel1 (Вид спорта), QRLabel3 (Популярность) для Column Header. Добавляются 2 штуки QRDBText на Detail Band.

Во всех QRDBText свойствах DataSet указывается dm. Query5.

В QRDBText1 свойствах DataField указывается — r44, в QRDBText2 — tt.

Готовый шаблон отчёта представлен на рисунке 5.10.

Рисунок 5.10 — Отчет по видам спорта

Для кнопки Button3 прописываем код — form11. show, для получения расчета прибыли за определенный период. На одинадцатую форму добавляются компоненты GroupBox1, BitBtn1, DateTimePicker1, DateTimePicker2, три компонента DBEdit, пять компонентов Label.

В DateTimePicker1, DateTimePicker2 указывается интервал времени, по которому необходимо провести подсчеты.

Нажатие кнопки BitBtn (применить) рассчитывает прибыль, количество проданных абонементов, количество посещений за определенный период.

Для компонента DBEdit1 (Прибыль за период) в свойстве DataSource указывается DataSource11. В свойстве DataSource11 в строке DataSet указывается Query3. В свойстве DataField указывается SUM OF r23. Для компонента Query3 в свойстве DatabaseName указывается daulet. Для того, чтобы осуществить доступ к необходимой таблице создается SQL — запрос. В строке SQL пишется запрос, который представлен на рисунке 5.11. Activate меняем с false на true.

Рисунок 5.11 — SQL — запрос Query3

Для компонента DBEdit2 (Количество абонементов за период) меняем свойство DataField на COUNT (*).

Для компонента DBEdit3 (Количество посещений за период) в свойстве DataSource указывается DataSource11. В свойстве DataSource12 в строке DataSet указывается Query4. В свойстве DataField указывается COUNT (*). Для компонента Query4 в свойстве DatabaseName указывается daulet. Для того, чтобы осуществить доступ к необходимой таблице создается SQL — запрос. В строке SQL пишется запрос, который представлен на рисунке 5.12. Activate меняем с false на true.

Рисунок 5.12 — SQL — запрос Query4

Для кнопки Button4 прописываем код — form15. show, для получения статистики выручки, количества проданных абонементов, кол-ва посещений за определенный период. На пятнадцатую форму добавляются компоненты Button1, Button2,20 штук Label, 36 штук DBEdit, Edit1, 3 штуки Chart, PrinterSetupDialog1.

Код для кнопки Button1 (Показать) представлен в приложении Б.

Для получения статистики кол-ва проданных абонементов за январь, в свойство DataSource компонента DBEdit1 указывается dm. DataSource15. В свойстве DataSource15 в строке DataSet указывается Query7. В свойстве DataField указывается COUNT (*). Для компонента Query7 в свойстве DatabaseName указывается daulet. Для того, чтобы осуществить доступ к необходимой таблице создается SQL — запрос. В строке SQL пишется запрос, который представлен на рисунке 5.13. Activate меняем с false на true.

Рисунок 5.13 — SQL — запрос Query7

Для получения статистики кол-ва проданных абонементов за оставшиеся месяцы, в компонентах DBEdit2-DBEdit12 меняется свойство DataSource на dm. DataSource16-dm. DataSource26. В свойстве dm. DataSource16 — dm. DataSource26 в строке DataSet указывается Query8-Query18.

Для получения статистики выручки от продажи абонементов за год, в свойство DataSource компонентов DBEdit13-DBEdit24 указывается dm. DataSource15-dm. DataSource26. В свойстве dm. DataSource15 — dm. DataSource26 в строке DataSet указывается Query7-Query18. В свойстве DataField указывается SUM OF r23.

Для получения статистики количества посещений за год, в свойство DataSource компонентов DBEdit25-DBEdit36 указывается dm. DataSource30-dm. DataSource41. В свойстве dm. DataSource30 — dm. DataSource41 в строке DataSet указывается Query22-Query33. В свойстве DataField указывается COUNT (*).

Рисунок 5.14 — SQL — запрос Query22

Кнопка Button2 (Печать) предназначена для печати полученных статистических данных. Код кнопки представлен в приложении Б.

Для кнопки Button5 (Зарплата) прописываем код — form7. show, для получения отчета по зарплате инструкторов. На седьмую форму добавляются компоненты DBGrid1, Button1 (Отчет), Button2 (Посчитать), 7 штук Edit, 7 штук Label.

В свойствах DBGrid1 в строке DataSource указывается dm. DataSource10. В свойстве dm. DataSource10 в строке DataSet указывается Query2. Для компонента Query2 в свойстве DatabaseName указывается daulet. Для того, чтобы осуществить доступ к необходимой таблице создается SQL — запрос. В строке SQL пишется запрос, который представлен на рисунке 5.15. Activate меняем с false на true.

Рисунок 5.15 — SQL — запрос Query2

Кнопка Button1 (Отчет) для вывода отчета по зарплатам инструкторов прописываем код — form10. QuickRep1. Preview. На десятую форму добавляется компонент QuickRep1. В QuickRep1 в свойствах DataSet указывается dm. Query2.

Два раза нажав на QuickRep1 открывается Report Setting. Ставим галочки на Title, Column Header, Detail Band. Добавляется QRLabel1 (Отчет) на Title и QRLabel2 (Инструкторы), QRLabel3 (Количество человек в группе), QRLabel4 (Зарплата) для Column Header. Добавляются 3 штуки QRDBText на Detail Band.

Во всех QRDBText свойствах DataSet указывается dm. Query2.

В QRDBText1 свойствах DataField указывается — r44, в QRDBText2 — tt, в QRDBText3 — zarp.

Готовый шаблон отчёта представлен на рисунке 5.16.

Рисунок 5.16 — Отчет по зарплатам инструкторов

Нажатие кнопки «Оформить абонемент» (form17. QuickRep1. Preview) формирует абонемент для посетителя. На семнадцатую форму добавляется компонент QuickRep1.

Два раза нажав на QuickRep1 открывается Report Setting. Ставим галочки на Detail Band. Добавляется QRLabel7 (Абонемент СК «Маяк»), QRLabel3 (№ абонемента), QRLabel2 (ФИО клиента), QRLabel4 (Организация), QRLabel5 (Тренер), QRLabel6 (Вид спорта).

Для QRDBText1 В свойстве DataSet устанавливаем dm. Table2, DataField — r21. Для QRDBText2 в свойстве DataSet устанавливаем dm. Table1, DataField — r12. Для QRDBText3 в свойстве DataSet устанавливаем dm. Table1, DataField — r16. Для QRDBText4 в свойстве DataSet устанавливаем dm. Table3, DataField — bb. Для QRDBText4 в свойстве DataSet устанавливаем dm. Table3, DataField — ll.

Добавляем на QuickRep1 компонент QRSubDetail1. В cвойстве Master устанавливаем QuickRep1. Помещаем на QRSubDetail1 компонент QRDBText6, в свойствах которого DataSet-dm. Table7, DataField — r72.

Готовый шаблон отчёта представлен на рисунке 5.17.

Рисунок 5.17 — Оформление абонемента

Заключение

Данная курсовая работа является актуальной и отвечает предъявленым к ней требованиям. Была разработана и написана на языке программирования высокого уровня Borland Delphi 7.0 с использованием баз данных, программное обеспечение для автоматизированного рабочего места администратора спортивного комплекса «Маяк», позволяющая добавлять, редактировать, удалять, выполнять прикладные задачи: формирование статистики по группам и видам спорта, расчет прибыли, количества проданных абонементов, количества посещений за определенный период, формирование статистики выручки, количества проданных абонементов, количества посещений за год в виде графика, расчет зарплаты инструкторов, оформления абонементов.

1. Delphi 7. Учебный курс. / Бобровский С. И. — СПб.: Питер, 2008. — 736 с.: ил.

2. Работа с базами данных в Delphi. / Гофман В. Э., Хомоненко А. Д. — СПб.: БХВ — Петербург, 2000. — 656с.: ил.

3. Базы данных: модели, разработки, реализация / Т. С. Карпова. — СПб.: Питер, 2002.

4. Базы данных: Учебник для ВУЗов / Под ред. проф.А. Д. Хомоненко. — СПб. КОРОНА принт, 2004

Приложение Б

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, unit2;

type

TForm1 = class (TForm)

DBGrid2: TDBGrid;

DBNavigator2: TDBNavigator;

DBGrid3: TDBGrid;

DBNavigator3: TDBNavigator;

DBGrid4: TDBGrid;

DBNavigator4: TDBNavigator;

Button1: TButton;

Button2: TButton;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

DBGrid5: TDBGrid;

DBNavigator5: TDBNavigator;

Button3: TButton;

Button4: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit3, Unit4, Unit5, Unit17;

{$R *. dfm}

procedure TForm1. Button1Click (Sender: TObject);

begin

form3. show;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

form4. show;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

form5. show;

end;

procedure TForm1. Button4Click (Sender: TObject);

begin

form17. QuickRep1. Preview;

end;

end.

Продолжение приложения Б

unit Unit2;

interface

uses

SysUtils, Classes, DB, DBTables;

type

Tdm = class (TDataModule)

DataSource1: TDataSource;

DataSource2: TDataSource;

DataSource3: TDataSource;

DataSource4: TDataSource;

DataSource5: TDataSource;

DataSource6: TDataSource;

DataSource7: TDataSource;

Table1: TTable;

Table2: TTable;

Table3: TTable;

Table4: TTable;

Table5: TTable;

Table6: TTable;

Table7: TTable;

Table4R41: TAutoIncField;

Table4R42: TStringField;

Table4R43: TIntegerField;

Table4R44: TStringField;

Table4R45: TStringField;

Table4R46: TStringField;

Table2R21: TAutoIncField;

Table2R22: TIntegerField;

Table2R23: TIntegerField;

Table2R24: TIntegerField;

Table3R31: TAutoIncField;

Table3R32: TStringField;

Table3R33: TIntegerField;

Table3R34: TStringField;

Table3bb: TStringField;

DataSource8: TDataSource;

Table8: TTable;

Table3kk: TStringField;

DataSource9: TDataSource;

DataSource10: TDataSource;

DataSource11: TDataSource;

Query1: TQuery;

Query2: TQuery;

Query3: TQuery;

Query4: TQuery;

Query5: TQuery;

Query6: TQuery;

DataSource12: TDataSource;

DataSource13: TDataSource;

DataSource14: TDataSource;

Query2r42: TStringField;

Query2tt: TIntegerField;

Query2zarp: TFloatField;

Query4COUNT: TIntegerField;

Table2R25: TDateField;

Продолжение приложения Б

Query7: TQuery;

DataSource16: TDataSource;

Query8: TQuery;

DataSource17: TDataSource;

Query9: TQuery;

DataSource18: TDataSource;

Query10: TQuery;

DataSource19: TDataSource;

Query11: TQuery;

DataSource20: TDataSource;

Query12: TQuery;

DataSource21: TDataSource;

Query13: TQuery;

DataSource22: TDataSource;

Query14: TQuery;

DataSource23: TDataSource;

Query15: TQuery;

DataSource24: TDataSource;

Query16: TQuery;

DataSource25: TDataSource;

Query17: TQuery;

DataSource26: TDataSource;

Query18: TQuery;

Query7COUNT: TIntegerField;

Query7SUMOFr23: TFloatField;

DataSource27: TDataSource;

Query19: TQuery;

DataSource28: TDataSource;

Query20: TQuery;

DataSource29: TDataSource;

Query21: TQuery;

Query21R21: TIntegerField;

Query22: TQuery;

IntegerField1: TIntegerField;

DataSource30: TDataSource;

Query23: TQuery;

IntegerField2: TIntegerField;

DataSource31: TDataSource;

Query24: TQuery;

IntegerField3: TIntegerField;

DataSource32: TDataSource;

Query25: TQuery;

IntegerField4: TIntegerField;

DataSource33: TDataSource;

Query26: TQuery;

IntegerField5: TIntegerField;

DataSource34: TDataSource;

Query27: TQuery;

IntegerField6: TIntegerField;

DataSource35: TDataSource;

Query28: TQuery;

IntegerField7: TIntegerField;

DataSource36: TDataSource;

Query29: TQuery;

IntegerField8: TIntegerField;

DataSource37: TDataSource;

Query30: TQuery;

IntegerField9: TIntegerField;

DataSource38: TDataSource;

Продолжение приложения Б

Query31: TQuery;

IntegerField10: TIntegerField;

DataSource39: TDataSource;

Query32: TQuery;

IntegerField11: TIntegerField;

DataSource40: TDataSource;

Query33: TQuery;

IntegerField12: TIntegerField;

DataSource41: TDataSource;

DataSource42: TDataSource;

Query34: TQuery;

IntegerField13: TIntegerField;

Query34r41: TIntegerField;

Query34R42: TStringField;

Query34R43: TIntegerField;

Query34R44: TStringField;

Query34R45: TStringField;

Query34R46: TStringField;

Query34r31: TIntegerField;

Query34R32: TStringField;

Query34r33: TIntegerField;

Query34R34: TStringField;

Query34r11: TIntegerField;

Query34R12: TStringField;

Query34R13: TStringField;

Query34R14: TStringField;

Query34R15: TStringField;

Query34R16: TStringField;

Query34R17: TIntegerField;

Query34r18: TIntegerField;

Query34R22: TIntegerField;

Query34R23: TIntegerField;

Query34r24: TIntegerField;

Query34R25: TDateField;

Table3ll: TStringField;

procedure Query2CalcFields (DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

dm: Tdm;

z, a, b, c: integer;

r: real;

implementation

uses Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit3, Unit4, Unit5, Unit6, Unit8, Unit9, unit7;

{$R *. dfm}

procedure Tdm. Query2CalcFields (DataSet: TDataSet);

begin

try

a: =strtoint (form7. Edit1. Text);

except

end;

if (query2 ['tt']

Продолжение приложения Б

try

r: =strtofloat (form7. Edit2. Text);

except

end;

end;

try

b: =strtoint (form7. Edit3. Text);

except

end;

if (query2 ['tt'] =b) then begin

try

r: =strtofloat (form7. Edit4. Text);

except

end;

end;

try

c: =strtoint (form7. Edit5. Text);

except

end;

if (query2 ['tt'] >c) then begin

try

r: =strtofloat (form7. Edit6. Text);

except

end;

end;

try

z: =strtoint (form7. Edit7. Text);

except

end;

query2 ['zarp']: = z*r;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, unit2, Mask, db;

type

TForm3 = class (TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Продолжение приложения Б

Label5: TLabel;

DBEdit1: TDBEdit;

Label6: TLabel;

DBEdit2: TDBEdit;

Label7: TLabel;

DBEdit3: TDBEdit;

Label8: TLabel;

DBEdit4: TDBEdit;

Label9: TLabel;

DBEdit5: TDBEdit;

procedure ComboBox2Change (Sender: TObject);

procedure ComboBox1Change (Sender: TObject);

procedure ComboBox3Change (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1, Unit4;

{$R *. dfm}

procedure TForm3. comboBox2Change (Sender: TObject);

begin

if ComboBox2. ItemIndex = 5 then dm. Table4. Filter: ='';

if ComboBox2. ItemIndex = 0 then dm. Table4. Filter: ='R42='''+edit1. text+'*''';

if ComboBox2. ItemIndex = 1 then dm. Table4. Filter: ='R43='+edit1. text;

if ComboBox2. ItemIndex = 2 then dm. Table4. Filter: ='R44='''+edit1. text+'*''';

if ComboBox2. ItemIndex = 3 then dm. Table4. Filter: ='R45='''+edit1. text+'*''';

if ComboBox2. ItemIndex = 4 then dm. Table4. Filter: ='R46='''+edit1. text+'*''';

end;

procedure TForm3. comboBox1Change (Sender: TObject);

begin

case ComboBox1. ItemIndex of

0: dm. Table4. IndexName: = 't1';

1: dm. Table4. IndexName: = 't2';

2: dm. Table4. IndexName: = 't3';

3: dm. Table4. IndexName: = 't4';

4: dm. Table4. IndexName: = 't5';

5: dm. Table4. IndexName: = '';

end;

end;

procedure TForm3. comboBox3Change (Sender: TObject);

begin

case ComboBox3. ItemIndex of

Продолжение приложения Б

0: dm. Table4. Locate ('R42', Edit1. Text, [loCaseInsensitive, loPartialKey]);

1: dm. Table4. Locate ('R43', strtoint (Edit1. Text), [loCaseInsensitive, loPartialKey]);

2: dm. Table4. Locate ('R44', Edit1. Text, [loCaseInsensitive, loPartialKey]);

3: dm. Table4. Locate ('R45', Edit1. Text, [loCaseInsensitive, loPartialKey]);

4: dm. Table4. Locate ('R46', Edit1. Text, [loCaseInsensitive, loPartialKey]);

end;

end;

procedure TForm3. Button1Click (Sender: TObject);

begin

dm. Table4. Insert;

end;

procedure TForm3. Button2Click (Sender: TObject);

begin

dm. Table4. Edit;

end;

procedure TForm3. Button3Click (Sender: TObject);

begin

dm. Table4. Delete;

end;

procedure TForm3. Button4Click (Sender: TObject);

begin

dm. Table4. Post;

end;

procedure TForm3. Button5Click (Sender: TObject);

begin

dm. Table4. Prior;

end;

procedure TForm3. Button6Click (Sender: TObject);

begin

dm. Table4. Next;

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, unit2, StdCtrls;

type

TForm4 = class (TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *. dfm}

end.

Продолжение приложения Б

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, unit2, unit15;

type

TForm5 = class (TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button5: TButton;

Button6: TButton;

procedure Button1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit6, Unit7, Unit1, Unit10, Unit11, Unit12, Unit3, Unit4, Unit8, Unit9, Unit16;

{$R *. dfm}

procedure TForm5. Button1Click (Sender: TObject);

begin

form6. Show;

dm. Query1. Active: =false;

dm. Query1. Active: =true;

end;

procedure TForm5. Button3Click (Sender: TObject);

begin

form7. show;

dm. Query2. Active: =false;

dm. Query2. Active: =true;

end;

procedure TForm5. Button2Click (Sender: TObject);

begin

form11. show;

end;

procedure TForm5. Button5Click (Sender: TObject);

begin

dm. Query5. Active: =false;

dm. Query5. Active: =true;

Продолжение приложения Б

form8. Show;

end;

procedure TForm5. Button6Click (Sender: TObject);

begin

if (form15. dbedit13. Text='') then form15. dbedit13. Text: ='0';

if (form15. dbedit14. Text='') then form15. dbedit14. Text: ='0';

if (form15. dbedit15. Text='') then form15. dbedit15. Text: ='0';

if (form15. dbedit16. Text='') then form15. dbedit16. Text: ='0';

if (form15. dbedit17. Text='') then form15. dbedit17. Text: ='0';

if (form15. dbedit18. Text='') then form15. dbedit18. Text: ='0';

if (form15. dbedit19. Text='') then form15. dbedit19. Text: ='0';

if (form15. dbedit20. Text='') then form15. dbedit20. Text: ='0';

if (form15. dbedit21. Text='') then form15. dbedit21. Text: ='0';

if (form15. dbedit22. Text='') then form15. dbedit22. Text: ='0';

if (form15. dbedit23. Text='') then form15. dbedit23. Text: ='0';

if (form15. dbedit24. Text='') then form15. dbedit24. Text: ='0';

form15. show;

end;

procedure TForm5. Button7Click (Sender: TObject);

begin

dm. Query20. Active: =false;

form16. show;

dm. Query20. Active: =true;

end;

end.

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit2, unit9, StdCtrls, Grids, DBGrids;

type

TForm6 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

{$R *. dfm}

procedure TForm6. Button1Click (Sender: TObject);

begin

form9. QuickRep1. Preview;

end;

end.

Продолжение приложения Б

unit Unit7;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Unit2, unit10, StdCtrls, Grids, DBGrids;

type

TForm7 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Button2: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

{$R *. dfm}

procedure TForm7. Button1Click (Sender: TObject);

begin

form10. QuickRep1. Preview;

end;

procedure TForm7. Button2Click (Sender: TObject);

begin

dm. query2. Active: =false;

dm. query2. Active: =true;

end;

end.

unit Unit8;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit2, unit13, StdCtrls, Grids, DBGrids;

type

TForm8 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

{$R *. dfm}

procedure TForm8. Button1Click (Sender: TObject);

begin

form13. QuickRep1. Preview;

end;

end.

unit Unit9;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit2, QRCtrls, QuickRpt, ExtCtrls;

type

TForm9 = class (TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

TitleBand1: TQRBand;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form9: TForm9;

implementation

{$R *. dfm}

end.

unit Unit10;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit2, QRCtrls, QuickRpt, ExtCtrls;

type

TForm10 = class (TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

TitleBand1: TQRBand;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRLabel4: TQRLabel;

Продолжение приложения Б

QRDBText3: TQRDBText;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form10: TForm10;

implementation

{$R *. dfm}

end.

unit Unit11;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ComCtrls, Unit2, Grids, DBGrids, Mask,

DBCtrls;

type

TForm11 = class (TForm)

GroupBox1: TGroupBox;

Label3: TLabel;

Label4: TLabel;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

BitBtn1: TBitBtn;

DBEdit1: TDBEdit;

Label1: TLabel;

DBEdit2: TDBEdit;

Label2: TLabel;

DBEdit3: TDBEdit;

Label5: TLabel;

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form11: TForm11;

implementation

{$R *. dfm}

procedure TForm11. BitBtn1Click (Sender: TObject);

begin

dm. Query3. Active: =false;

dm. Query3. SQL [2]: ='where r25>='+Chr (39) +DateToStr (DateTimePicker1. Date) +Chr (39) +'and r25<='+Chr (39) +DateToStr (DateTimePicker2. Date) +Chr (39);

dm. Query3. Active: =true;

dm. Query4. Active: =false;

dm. Query4. SQL [2]: ='where r72>='+Chr (39) +DateToStr (DateTimePicker1. Date) +Chr (39) +'and r72<='+Chr (39) +DateToStr (DateTimePicker2. Date) +Chr (39);

dm. Query4. Active: =true;

end;

end.

Продолжение приложения Б

unit Unit13;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit2, QRCtrls, QuickRpt, ExtCtrls;

type

TForm13 = class (TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

TitleBand1: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form13: TForm13;

implementation

{$R *. dfm}

end.

unit Unit14;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QuickRpt, QRCtrls, ExtCtrls;

type

TForm14 = class (TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

TitleBand1: TQRBand;

QRImage1: TQRImage;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form14: TForm14;

implementation

{$R *. dfm}

end.

unit Unit15;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Mask,

DBCtrls, unit2;

type

TForm15 = class (TForm)

Chart1: TChart;

Series1: TBarSeries;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBEdit5: TDBEdit;

DBEdit6: TDBEdit;

DBEdit7: TDBEdit;

DBEdit8: TDBEdit;

DBEdit9: TDBEdit;

DBEdit10: TDBEdit;

DBEdit11: TDBEdit;

DBEdit12: TDBEdit;

DBEdit13: TDBEdit;

DBEdit14: TDBEdit;

DBEdit15: TDBEdit;

DBEdit16: TDBEdit;

DBEdit17: TDBEdit;

DBEdit18: TDBEdit;

DBEdit19: TDBEdit;

DBEdit20: TDBEdit;

DBEdit21: TDBEdit;

DBEdit22: TDBEdit;

DBEdit23: TDBEdit;

DBEdit24: TDBEdit;

Edit1: TEdit;

Label14: TLabel;

Button1: TButton;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Series2: TBarSeries;

Chart2: TChart;

BarSeries1: TBarSeries;

BarSeries2: TBarSeries;

Button2: TButton;

Chart3: TChart;

BarSeries3: TBarSeries;

BarSeries4: TBarSeries;

Label19: TLabel;

Label20: TLabel;

DBEdit25: TDBEdit;

DBEdit26: TDBEdit;

DBEdit27: TDBEdit;

DBEdit28: TDBEdit;

DBEdit29: TDBEdit;

DBEdit30: TDBEdit;

DBEdit31: TDBEdit;

DBEdit32: TDBEdit;

DBEdit33: TDBEdit;

DBEdit34: TDBEdit;

DBEdit35: TDBEdit;

DBEdit36: TDBEdit;

PrinterSetupDialog1: TPrinterSetupDialog;

PrintDialog1: TPrintDialog;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form15: TForm15;

implementation

uses Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *. dfm}

procedure TForm15. Button1Click (Sender: TObject);

begin

dm. Query7. Active: =false;

dm. Query8. Active: =false;

dm. Query9. Active: =false;

dm. Query10. Active: =false;

dm. Query11. Active: =false;

dm. Query12. Active: =false;

dm. Query13. Active: =false;

dm. Query14. Active: =false;

dm. Query15. Active: =false;

dm. Query16. Active: =false;

dm. Query17. Active: =false;

dm. Query18. Active: =false;

dm. Query22. Active: =false;

dm. Query23. Active: =false;

dm. Query24. Active: =false;

dm. Query25. Active: =false;

dm. Query26. Active: =false;

dm. Query27. Active: =false;

Продолжение приложения Б

dm. Query28. Active: =false;

dm. Query29. Active: =false;

dm. Query30. Active: =false;

dm. Query31. Active: =false;

dm. Query32. Active: =false;

dm. Query33. Active: =false;

dm. Query7. SQL [2]: ='where (r25>='+Chr (39) +'01.01. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.02. '+edit1. Text+Chr (39) +') ';

dm. Query8. SQL [2]: ='where (r25>='+Chr (39) +'01.02. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.03. '+edit1. Text+Chr (39) +') ';

dm. Query9. SQL [2]: ='where (r25>='+Chr (39) +'01.03. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.04. '+edit1. Text+Chr (39) +') ';

dm. Query10. SQL [2]: ='where (r25>='+Chr (39) +'01.04. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.05. '+edit1. Text+Chr (39) +') ';

dm. Query11. SQL [2]: ='where (r25>='+Chr (39) +'01.05. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.06. '+edit1. Text+Chr (39) +') ';

dm. Query12. SQL [2]: ='where (r25>='+Chr (39) +'01.06. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.07. '+edit1. Text+Chr (39) +') ';

dm. Query13. SQL [2]: ='where (r25>='+Chr (39) +'01.07. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.08. '+edit1. Text+Chr (39) +') ';

dm. Query14. SQL [2]: ='where (r25>='+Chr (39) +'01.08. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.09. '+edit1. Text+Chr (39) +') ';

dm. Query15. SQL [2]: ='where (r25>='+Chr (39) +'01.09. '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.10 '+edit1. Text+Chr (39) +') ';

dm. Query16. SQL [2]: ='where (r25>='+Chr (39) +'01.10 '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.11 '+edit1. Text+Chr (39) +') ';

dm. Query17. SQL [2]: ='where (r25>='+Chr (39) +'01.11 '+edit1. Text+Chr (39) +') and (r25<'+Chr (39) +'01.12 '+edit1. Text+Chr (39) +') ';

dm. Query18. SQL [2]: ='where (r25>='+Chr (39) +'01.12 '+edit1. Text+Chr (39) +') and (r25<='+Chr (39) +'31.12 '+edit1. Text+Chr (39) +') ';

dm. Query22. SQL [2]: ='where (r72>='+Chr (39) +'01.01. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.02. '+edit1. Text+Chr (39) +') ';

dm. Query23. SQL [2]: ='where (r72>='+Chr (39) +'01.02. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.03. '+edit1. Text+Chr (39) +') ';

dm. Query24. SQL [2]: ='where (r72>='+Chr (39) +'01.03. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.04. '+edit1. Text+Chr (39) +') ';

dm. Query25. SQL [2]: ='where (r72>='+Chr (39) +'01.04. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.05. '+edit1. Text+Chr (39) +') ';

dm. Query26. SQL [2]: ='where (r72>='+Chr (39) +'01.05. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.06. '+edit1. Text+Chr (39) +') ';

dm. Query27. SQL [2]: ='where (r72>='+Chr (39) +'01.06. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.07. '+edit1. Text+Chr (39) +') ';

dm. Query28. SQL [2]: ='where (r72>='+Chr (39) +'01.07. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.08. '+edit1. Text+Chr (39) +') ';

dm. Query29. SQL [2]: ='where (r72>='+Chr (39) +'01.08. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.09. '+edit1. Text+Chr (39) +') ';

dm. Query30. SQL [2]: ='where (r72>='+Chr (39) +'01.09. '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.10 '+edit1. Text+Chr (39) +') ';

dm. Query31. SQL [2]: ='where (r72>='+Chr (39) +'01.10 '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.11 '+edit1. Text+Chr (39) +') ';

dm. Query32. SQL [2]: ='where (r72>='+Chr (39) +'01.11 '+edit1. Text+Chr (39) +') and (r72<'+Chr (39) +'01.12 '+edit1. Text+Chr (39) +') ';

dm. Query33. SQL [2]: ='where (r72>='+Chr (39) +'01.12 '+edit1. Text+Chr (39) +') and (r72<='+Chr (39) +'31.12 '+edit1. Text+Chr (39) +') ';

dm. Query7. Active: =true;

dm. Query8. Active: =true;

Продолжение приложения Б

dm. Query9. Active: =true;

dm. Query10. Active: =true;

dm. Query11. Active: =true;

dm. Query12. Active: =true;

dm. Query13. Active: =true;

dm. Query14. Active: =true;

dm. Query15. Active: =true;

dm. Query16. Active: =true;

dm. Query17. Active: =true;

dm. Query18. Active: =true;

dm. Query22. Active: =true;

dm. Query23. Active: =true;

dm. Query24. Active: =true;

dm. Query25. Active: =true;

dm. Query26. Active: =true;

dm. Query27. Active: =true;

dm. Query28. Active: =true;

dm. Query29. Active: =true;

dm. Query30. Active: =true;

dm. Query31. Active: =true;

dm. Query32. Active: =true;

dm. Query33. Active: =true;

if (dbedit13. Text='') then dbedit13. Text: ='0';

if (dbedit14. Text='') then dbedit14. Text: ='0';

if (dbedit15. Text='') then dbedit15. Text: ='0';

if (dbedit16. Text='') then dbedit16. Text: ='0';

if (dbedit17. Text='') then dbedit17. Text: ='0';

if (dbedit18. Text='') then dbedit18. Text: ='0';

if (dbedit19. Text='') then dbedit19. Text: ='0';

if (dbedit20. Text='') then dbedit20. Text: ='0';

if (dbedit21. Text='') then dbedit21. Text: ='0';

if (dbedit22. Text='') then dbedit22. Text: ='0';

if (dbedit23. Text='') then dbedit23. Text: ='0';

if (dbedit24. Text='') then dbedit24. Text: ='0';

series1. Clear;

Series1. AddXY (1,StrToint (dbedit1. Text),'', clGreen);

Series1. AddXY (2,StrToint (dbedit2. Text),'', clGreen);

Series1. AddXY (3,StrToint (dbedit3. Text),'', clGreen);

Series1. AddXY (4,StrToint (dbedit4. Text),'', clGreen);

Series1. AddXY (5,StrToint (dbedit5. Text),'', clGreen);

Series1. AddXY (6,StrToint (dbedit6. Text),'', clGreen);

Series1. AddXY (7,StrToint (dbedit7. Text),'', clGreen);

Series1. AddXY (8,StrToint (dbedit8. Text),'', clGreen);

Series1. AddXY (9,StrToint (dbedit9. Text),'', clGreen);

Series1. AddXY (10,StrToint (dbedit10. Text),'', clGreen);

Series1. AddXY (11,StrToint (dbedit11. Text),'', clGreen);

Series1. AddXY (12,StrToint (dbedit12. Text),'', clGreen);

barseries2. Clear;

barseries2. AddXY (1,StrToint (dbedit13. Text),'', clGreen);

barseries2. AddXY (2,StrToint (dbedit14. Text),'', clGreen);

barseries2. AddXY (3,StrToint (dbedit15. Text),'', clGreen);

barseries2. AddXY (4,StrToint (dbedit16. Text),'', clGreen);

barseries2. AddXY (5,StrToint (dbedit17. Text),'', clGreen);

barseries2. AddXY (6,StrToint (dbedit18. Text),'', clGreen);

barseries2. AddXY (7,StrToint (dbedit19. Text),'', clGreen);

barseries2. AddXY (8,StrToint (dbedit20. Text),'', clGreen);

barseries2. AddXY (9,StrToint (dbedit21. Text),'', clGreen);

barseries2. AddXY (10,StrToint (dbedit22. Text),'', clGreen);

barseries2. AddXY (11,StrToint (dbedit23. Text),'', clGreen);

barseries2. AddXY (12,StrToint (dbedit24. Text),'', clGreen);

barseries3. Clear;

barseries3. AddXY (1,StrToint (dbedit25. Text),'', clGreen);

barseries3. AddXY (2,StrToint (dbedit26. Text),'', clGreen);

barseries3. AddXY (3,StrToint (dbedit27. Text),'', clGreen);

barseries3. AddXY (4,StrToint (dbedit28. Text),'', clGreen);

barseries3. AddXY (5,StrToint (dbedit29. Text),'', clGreen);

barseries3. AddXY (6,StrToint (dbedit30. Text),'', clGreen);

barseries3. AddXY (7,StrToint (dbedit31. Text),'', clGreen);

barseries3. AddXY (8,StrToint (dbedit32. Text),'', clGreen);

barseries3. AddXY (9,StrToint (dbedit33. Text),'', clGreen);

barseries3. AddXY (10,StrToint (dbedit34. Text),'', clGreen);

barseries3. AddXY (11,StrToint (dbedit35. Text),'', clGreen);

barseries3. AddXY (12,StrToint (dbedit36. Text),'', clGreen);

end;

procedure TForm15. Button2Click (Sender: TObject);

begin

PrinterSetupDialog1. Execute;

Form15. PrintScale: = poPrintToFit;

Form15. Print;

end;

end.

unit Unit16;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, unit2, DBCtrls, StdCtrls, Mask, Grids, DBGrids;

type

TForm16 = class (TForm)

DBLookupComboBox1: TDBLookupComboBox;

Button1: TButton;

DBLookupComboBox2: TDBLookupComboBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

DBGrid1: TDBGrid;

Button2: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

Label16: TLabel;

Label17: TLabel;

Button3: TButton;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

Label15: TLabel;

Label18: TLabel;

Label19: TLabel;

DBEdit5: TDBEdit;

Label20: TLabel;

PrinterSetupDialog1: TPrinterSetupDialog;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form16: TForm16;

s: string;

implementation

{$R *. dfm}

procedure TForm16. Button1Click (Sender: TObject);

begin

dm. Query21. Active: =false;

dm. Query21. SQL [3]: ='where r12='+Chr (39) +DBLookupComboBox1. KeyValue+Chr (39);

dm. Query21. Active: =true;

end;

procedure TForm16. Button2Click (Sender: TObject);

begin

edit1. Text: ='';

edit2. Text: ='';

edit3. Text: ='';

edit4. Text: ='';

edit5. Text: ='';

edit6. Text: ='';

edit7. Text: ='';

edit8. Text: ='';

edit9. Text: ='';

edit10. Text: ='';

edit11. Text: ='';

edit12. Text: ='';

dm. Query19. Active: =false;

s: =DBLookupComboBox2. KeyValue;

dm. Query19. SQL [5]: ='where r12='+Chr (39) +DBLookupComboBox1. KeyValue+Chr (39) +' and r21='+s;

Продолжение приложения Б

dm. Query19. Active: =true;

dm. Query34. Active: =false;

dm. Query34. SQL [7]: ='where r12='+Chr (39) +DBLookupComboBox1. KeyValue+Chr (39) +' and r21='+s;

dm. Query34. Active: =true;

try edit1. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit2. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit3. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit4. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit5. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit6. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit7. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit8. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit9. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit10. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit11. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

try edit12. Text: =dbgrid1. DataSource. DataSet. Fields. AsString; except; end;

end;

procedure TForm16. Button3Click (Sender: TObject);

begin

PrinterSetupDialog1. Execute;

Form16. PrintScale: = poPrintToFit;

Form16. Print;

end;

end.

unit Unit17;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QRCtrls, QuickRpt, ExtCtrls;

type

TForm17 = class (TForm)

QuickRep1: TQuickRep;

v: TQRBand;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRLabel6: TQRLabel;

QRDBText5: TQRDBText;

QRLabel7: TQRLabel;

QRLabel1: TQRLabel;

QRSubDetail1: TQRSubDetail;

QRDBText6: TQRDBText;

QRShape1: TQRShape;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form17: TForm17;

implementation

{$R *. dfm}

end.

Показать весь текст
Заполнить форму текущей работой