Автоматизация учета коллекционных монет
Государственное
бюджетное образовательное учреждение среднего профессионального образования
Тольяттинский
политехнический техникум
(ГГОУ
СПО ТПТ)
Учебно-производственное
отделение № 4
Специальность
230105
«Программное
обеспечение вычислительной техники и автоматизированных систем»
Отчет
по учебной практике по дисциплине: «Технология разработки программных
продуктов» на тему: «Автоматизация учета коллекционных монет»
Студент группы В-31
С.В. Кокалин
Руководитель практики
Н.П. Савельева
Тольятти,
2012
Государственное
бюджетное образовательное учреждение среднего профессионального образования
Тольяттинский
политехнический техникум
(ГГОУ
СПО ТПТ)
УТВЕРЖДАЮ:
Методист УПО № 4_____________ Л. Г. Светличная
“ 31 ” мая 2012 г.
ЗАДАНИЕ НА УЧЕБНУЮ ПРАКТИКУ
Студенту Кокалину Сергею Владимировичу
Тема:
Автоматизация учета коллекционных монет
Краткое описание:
Имея сведения о коллекционных монетах и их
владельцах, автоматизировать обработку информации в клубе коллекционеров . В
результате работы программы необходимо рассчитать возраст каждой монеты, найти
монеты заданного коллекционера, сведения о монетах заданной валюты, сведения о
владельцах заданной монеты, самую дорогостоящую монету, провести количественный
анализ по монетам.
Содержание отчета по практике
1.
Постановка
задачи. Функции, выполняемые программой. Описание входных и выходных данных
2.
Контрольный
пример
3.
Проектирование
базы данных
4.
Результаты
тестирования программы, анализ полученных результатов.
5.
Список
используемых источников.
6.
Приложение.
Тексты программ.
Руководитель практики ______________________
(Н.П. Савельева)
РЕФЕРАТ
Отчет по учебной практике: 58 c., 52 рис., 1
табл., 3 источник, 3 приложения
учет МОНЕТ и КОЛЛЕКЦИОНЕРОВ в КЛУБЕ, расчет
ВОЗРАСТА КАЖДОЙ МОНЕТЫ, ПОИСК ПО МОНЕТАМ, ПОИСК ПО КОЛЛЕКЦИЯМ, ПОИСК ПО
КОЛЛЕКЦИОНЕРАМ, ПОИСК САМОЙ ДОРОГОЙ МОНЕТЫ, реляционная база данных,система
управления базами данных
Приложение _Collection
предназначено для ведения учета коллекционных монет, коллекционеров и их
коллекций. Использование программы позволит производить учёт, накопление и
корректировку коллекций. Хранение данных о коллекционных монетах в виде
реляционной базы данных позволит быстро осуществлять просмотр и поиск нужной
информации, а при необходимости формирование отчетов для вывода на печать.
Содержание
Введение
1. Общий раздел
1.1 Описание предметной области
.2 Проектирование структуры базы
данных
.3 Технология обработки данных
.4 Разработка данных контрольного
примера
2. Специальный раздел
2.1 Структура данных
.2 Описание объектов приложения
.3 Инструкции по работе с программой
2.3.1 Техническое обеспечение задачи
.3.2 Порядок установки и запуска
программы
.3.3 Ввод и изменение исходных
данных
.3.4 Получение выходных документов
2.4 Тестирование программы
Заключение
Список используемых источников
Приложение А Данные контрольного
примера
Приложение Б Результаты тестирования
программы
Приложение В Тексты программ, форм,
отчетов, меню
Введение
Коллекционеры монет часто начинают собирать,
сохраняя обычные монеты регулярного обращения, которые они нашли по тем или
иным причинам интересными. Это могут быть монеты, оставшиеся после поездки за
границу или интересная монета, каким-либо образом, оказавшаяся в руках
человека. Иногда коллекции переходят по наследству от коллекционера к будущему
коллекционеру. Со временем, если интерес к собиранию монет не пропадает, это
превращается в хобби. У некоторых людей увлечение коллекционированием монет
может перерасти в интерес к изучению определённой страны, её культуры и
истории.
Большинство коллекционеров со временем приходят
к концентрированию внимания на более узком направлении. Поэтому многие
коллекционеры собирают монеты определенных стран, исторических периодов,
тематики или монеты со специфическими свойствами (например, монеты с ошибками,
монеты всех стран мира ХХ-ХХІ веков).
Компьютерные технологии уже давно стали
неотъемлемой частью современного человека. Они позволяют не только хранить, но
обрабатывать информацию при помощи специальных программ с удобным интерфейсом.
Поэтому актуальной становится проблема автоматизации этого процесса.
Среди современных технологий хранения данных
наиболее распространены реляционные базы данных, так как они имеет простую
структуру (состоят из взаимосвязанных двумерных таблиц), высокую скорость
обработки данных. Для создания приложений имеется большой выбор систем
управления базами данных, включающих в себя множество полезных функций по
работе с базами данных и средства разработки форм ввода, программ поиска и
печати данных.
Таким образом, необходимо автоматизировать учет
коллекционных монет, а именно, спроектировать структуру реляционной базы данных
средствами СУБД Microsoft
Access и разработать
приложение с удобным пользовательским интерфейсом для ввода, редактирования,
обработки и вывода данных о монетах и их коллекционеров средствами системы Delphi.
1. Общий раздел
.1 Описание предметной
области
Клуб нумизматов помогает коллекционерам общаться
и обмениваться информацией о монетах. При вступлении в клуб нового
коллекционера его данные заносят в списки участников клуба, а так же записывают
его коллекцию монет. Для анализа деятельности клуба председатель ведёт учёт
коллекций участников клуба, вычисляет возраст монеты, находящаяся в коллекции
участника. Председатель клуба может найти коллекционера по его анкете и монеты,
содержащиеся в его коллекции. Он так же может осуществить поиск по
приглянувшейся ему монете или коллекционеру.
Появилась необходимость автоматизировать учет
монет в коллекциях участников клуба. Приложение должно обеспечивать выполнение
следующих функции:
- Учет, накопление и
корректировку данных о монетах;
- Учет, накопление и
корректировку данных о коллекционерах и их коллекциях;
- Расчёт возраста монеты;
- Формирование полного списка
монет в коллекциях;
- Формирование списка монет, указанного
коллекционера;
- Формирование списка владельцев
указанной монеты;
- Формирование списка самых
дорогих монет среди указанной валюты;
- Анализ популярности монет;
При реализации данной задачи необходимо
учитывать следующие ограничения:
- Монета может выпускаться
только один раз;
- Коллекция может
состоять из разных монет;
- Монеты могут
находиться в разных коллекциях;
- Год выпуска монеты
имеет формат ГГГГ;
1.2 Описание выходной
информации
В результате решения задачи необходимо получить
выходные документы, описанные в таблице 1.1.
Таблица 1.1 - Перечень и описание выходной
информации
Наименование
выходной информации
|
Идентификатор
выходной информации
|
Форма
представления
|
Сроки
выдачи
|
Получатель
информации
|
1
|
2
|
3
|
4
|
5
|
Полный
список монет в коллекциях
|
Вх-001
|
Документ
|
По
требованию
|
Председатель,
участник клуба
|
Список
монет коллекционера
|
Вх-002
|
Документ
|
По
требованию
|
Председатель,
участник клуба
|
Список
коллекционеров монеты
|
Вх-003
|
Документ
|
По
требованию
|
Председатель,
участник клуба
|
Список
самых дорогих монет среди валюты
|
Вх-004
|
Документ
|
По
требованию
|
Председатель,
участник клуба
|
Общее
количество монет
|
Вх-005
|
Документ
|
По
требованию
|
Председатель
|
Формы выходных документов представлены на
рисунках 1.1-1.5
Вх-001
Наименование клуба ___________________ Председатель________________ Полный
список монет в коллекциях
|
|
Монета
|
Год
выпуска
|
Цена
|
Тираж
|
Возраст
монеты
|
Коллекционер
|
Телефон
|
Адрес
|
|
|
|
|
|
|
|
|
|
|
|
Найдено
монет в коллекциях____________
|
Рисунок 1.1 - Форма выходного документа «Полный
список монет в коллекциях»
Вх-002
Наименование клуба ___________________ Председатель________________ Список
монет коллекционера Коллекционер___________________
|
Валюта
Номинал Количество Цена Возраст монеты
|
Найдено
монет в коллекциях____________
|
Рисунок 1.2 - Форма выходного документа «Список
монет коллекционера»
Вх-003
Наименование клуба ___________________ Владелец__________________ Список
коллекционеров Монета___________________
|
Коллекционер
Телефон Адрес Количество
|
Найдено
коллекционеров____________
|
Рисунок 1.3 - Форма выходного документа «Список
владельцев монеты»
Вх-004
Наименование клуба ___________________ Владелец__________________ Список
самых дорогих монет среди валюты Валюта___________________
|
Монета
Цена Коллекционер Адрес
|
Найдено
монет____________
|
Рисунок 1.4 - Форма выходного документа «Список
самых дорогих монет»
Вх-005
Наименование клуба ___________________ Владелец__________________ Общее
количество коллекционных монет
|
Монета
Количество
|
Общее
количество монет____________
|
Рисунок 1.5 - Форма выходного документа «Общее
количество коллекционных монет»
1.3 Описание входной
информации
Входная информация для решения задачи делится на
нормативно-справочную, условно-постоянную, оперативную информацию и запросные
формы.
Перечень и описание входной информации
представлен в таблице 1.2.
Таблица 1.2 - Перечень и описание входной
информации
Наименование
документа
|
Вид
информации
|
Идентификатор
|
Форма
представления
|
1
|
2
|
3
|
4
|
Монета
|
УПИ
|
В-001
|
Документ
|
Описание
коллекции
|
ОУИ
|
В-002
|
Документ
|
Поиск
монет коллекционера
|
Запросная
форма
|
З-001
|
Видеограмма
|
Поиск
коллекционеров монеты
|
Запросная
форма
|
З-002
|
Видеограмма
|
Поиск
самой дорогой монеты среди валюты
|
Запросная
форма
|
З-003
|
Видеограмма
|
Формы выходных документов представлены на
рисунках 1.6-1.10
В-001
Монета ________
|
Валюта____________
Описание__________ __________________ __________________ __________________
|
Номинал_____________
Год выпуска__________ Тираж_______________ Цена_________________
|
Рисунок 1.6 - Форма входного документа «Описание
Монет»
В-002
Коллекционер
|
Номер
коллекционера___
|
Фамилия__________
Имя ____________ Отчество____________
|
Адрес__________
Телефон_________
|
Описание
коллекции Монета Количество _______________________ _______________________
|
Рисунок 1.7 - Форма входного документа
«Коллекция»
З-001
Поиск монет коллекционера Коллекционер_________
|
Рисунок 1.8 - Запросная форма «Поиск монет
коллекционера»
З-002
Поиск коллекционеров монеты Монета______________
|
Рисунок 1.9 - Запросная форма «Поиск коллекционеров
монеты»
З-003
Поиск самой дорогой монеты среди валюты Валюта______________
|
Рисунок 1.10 - Запросная форма «Поиск самой
дорогой монеты среди валюты»
1.4 Описание реквизитов
входной и выходной информации
Информация из входных и выходных документов
должна хранится в базе данных, а данные из запросных форм требуются для
фильтрации хранимых данных по заданным критериям. Перечень и описание
реквизитов входной информации представлены в таблице.1.3.
Таблица 1.3 - Перечень и описание реквизитов
входной и выходной информации
Наименование
реквизита
|
Идентификатор
реквизита
|
Идентификатор
документа
|
Характеристика
реквизита
|
1
|
2
|
3
|
4
|
Монета
|
Монета
|
Вх-001,
Вх-003, Вх-004, Вх-005,В-001,В-002, З-002
|
А(30)
|
Год
выпуска
|
Год
|
Вх-001,
В-001
|
9(4)
|
Цена
|
Цена
|
Вх-001,
Вх-002, Вх-004, В-001
|
9(8)
|
Тираж
|
Тираж
|
Вх-001,В-001
|
9(8)
|
Возраст
|
Возраст
|
Вх-001,
Вх-002
|
9(4)
|
Коллекционер
|
Коллекционер
|
Вх-001,
Вх-003, Вх-004, З-001
|
А(50)
|
Телефон
|
Телефон
|
Вх-001,
Вх-003, В-002
|
А(10)
|
Адрес
|
Адрес
|
Вх-001,
Вх-003, Вх-004, В-002
|
А(100)
|
Валюта
|
Валюта
|
Вх-002,
Вх-004, В-001, З-003
|
А(30)
|
Номинал
|
Номинал
|
Вх-002,
В-001
|
9(10).9(2)
|
Количество
|
Кол
|
Вх-002,
Вх-003, Вх-005, В-002
|
9(4)
|
Описание
|
Описание
|
В-001
|
А(255)
|
Номер
коллекционера
|
Код_коллекционера
|
В-002
|
9(6)
|
ФИО
|
Фамилия,
Имя, Отчество
|
В-001
|
А(30)
|
1.5 Математическое
описание задачи
Для расчёта возраста используется формула 1.1
(1.1)
1.6 Проектирование
структуры базы данных
На основе анализа исходной информации предметной
области проведена группировка реквизитов и выделение информационных объектов
задачи с учётом требований нормализации отношений для построения реляционной
модели данных. Связи между выявленными информационными объектами определяются
реальными отношениями между парами объектов. При их определении учитывались
сведения из описания предметной области. В таблице 1.4 представлено описание
связей между информационными объектами задачи.
Таблица 1.4 - Описание связей между
информационными объектами
Главный
объект
|
Подчинённый
объект
|
Тип
отношений
|
Ключи
связи
|
1
|
2
|
3
|
4
|
Валюта
|
Монета
|
1:М
|
Код_валюты
|
Монета
|
Коллекция
|
1:М
|
Код_монеты
|
Коллекционер
|
Коллекция
|
1:М
|
Код_коллекционера
|
Графическое изображение информационно-логической
модели в канонической форме, наглядно показывающей иерархические отношения
подчинённости информационных объектов, приведено на рисунке 1.11
Рисунок 1.11 - Информационно-логическая модель
данных
На рисунке 1.12 представлена Структура
реляционной базы данных
Рисунок 1.12 - Логическая структура базы данных
1.7 Технология обработки
данных
Решение задачи необходимо проводить по следующим
этапам:
. Ввод данных о валютах через экранную
форму с возможностью корректировки данных;
. Ввод данных о коллекционерах через
экранную форму с возможностью корректировки данных;
. Ввод данных о монетах через экранную
форму с возможностью корректировки данных;
. Ввод данных о коллекциях через экранную
форму с возможностью корректировки данных;
- Формирование
полного списка монет в коллекциях;
- Формирование списка
монет, указанного коллекционера;
- Формирование списка
владельцев указанной монеты;
- Формирование списка
самых дорогих монет среди указанной валюты;
- Анализ популярности
монет;
Общая технология решения задачи представлена на
рисунке 10, а на рисунке 11 представлена функциональная схема организации
приложения.
1.8 Разработка данных
контрольного примера
Для последующего тестирования программы был
разработан контрольный пример средствами MS
EXCEL. Данные
контрольного примера представлены в приложение А.
2. Специальный раздел
.1 Структура данных
Для хранения данных о клубе коллекционеров
средствами СУБД Access
была создана база данных, содержащая 4 таблиц, для каждой из которых был
определен первичный ключ и вспомогательные индексы. Кроме того, для хранения
данных о клубе нумизматов было создана вспомогательная таблица. Описание базы
данных и таблиц представлено на рисунках 2.1-2.5
Рисунок 2.1 - Структура таблицы Коллекция
Рисунок 2.2 - Структура таблицы Коллекционер
Рисунок 2.3 - Структура таблицы Монета
Рисунок 2.4 - Структура таблицы Валюта
Рисунок 2.5 - Схема данных
2.2 Описание объектов
приложения
Для обработки данных о клуба коллекционеров
средствами СУБД FoxPro
были созданы программы, формы ввода данных и критериев поиска, отчеты для
печати, меню. Описание всех объектов приложения представлено в таблице 2.1 и на
рисунке 2.6. На рисунке 2.7 представлена связь объектов приложения в меню.
Таблица 2.1 - Описание объектов приложения
Имя
|
Тип
|
Назначение
|
1
|
2
|
3
|
Dm_collection
|
Модуль
данных
|
Доступ
к информации из БД и связи с отчетами
|
Fm_ob_avtore
|
Форма
|
Просмотр
информации об авторе
|
Fm_collections
|
Форма
|
Просмотр
и редактирование данных о коллекционерах и их коллекциях
|
Fm_valuta
|
Форма
|
Просмотр
и редактирование данных о монетах
|
Fm_o_prog
|
Форма
|
Просмотр
информации о программе
|
Fm_poisk1
|
Форма
|
Fm_poisk3
|
Форма
|
Поиск
владельцев заданной монеты
|
Fm_poisk4
|
Форма
|
Поиск
самых дорогих монет среди валюты
|
Fm_cleardata
|
Форма
|
Очистка
баз данных
|
Fm_settings
|
Форма
|
Просмотр
и редактирование данных о владельце клуба и его названии
|
Fm_main
|
Форма
|
Главная
форма. Начальные установки и запуск меню
|
R_poisk1
|
Отчёт
|
Монеты
коллекционера
|
R_poisk2_00
|
Отчёт
|
Полный
список данных
|
R_poisk2_10
|
Отчёт
|
Полный
список данных с итоговой группировкой по коллекционеру
|
R_poisk2_11
|
Отчёт
|
Полный
список данных с подробной группировкой по коллекционеру
|
R_poisk2_21
|
Отчёт
|
Полный
список данных с итоговой группировкой по монетам
|
R_poisk2_22
|
Отчёт
|
Полный
список данных с подробной группировкой по монетам
|
R_poisk3
|
Отчёт
|
Коллекционеры
монеты
|
R_poisk4
|
Отчёт
|
Самая
дорогая монета среди валюты и её владельцы
|
Help1
|
Справка
|
Фаил
помощи
|
|
|
|
|
Рисунок 2.6 - Объекты приложения и отчёта
2.3 Инструкции по
работе с программой
.3.1 Техническое
обеспечение задачи
Для корректного функционирования программы
необходимо иметь компьютер с следующими характеристиками:
процессор не менее 500 МГЦ
ОЗУ не менее 256 Мб
свободного места на диске не менее 30
Мб
принтер
операционная система Windows
XP, Vista,
Windows 7
программы MS
Access 2010
2.3.2 Порядок установки
и запуска программы
Для установки программы нужно скопировать и
запустить файл установки setup_collection.exe,
1мб и указать путь установки программы.(рисунок …)
Рисунок - Вид окна установки программы
После установки в заданной папке будут
содержаться следующие файлы:
-......................... _Collection.exe
(2мб) - файл запуска программы
- Db.accdb
(2мб) - фаил хранит базу данных
- Reports.rav
- (500кб) - фаил хранящий отчёты
- Help1.chm
- (300кб) - справочный фаил
Для запуска програмы необходимо открыть фаил _collection.exe,
после этого на экране появится диалог открытия базы данных. После правильного
подключения данных будет открыт доступ к основному меню
Для получения справки о программе нажмите на
пункт меню «Справка» или нажмите клавишу F1 на клавиатуре. Программа выдаст
справку
2.3.3 Ввод и изменение
исходных данных
Перед началом работы можно провести очистку
данных. Надо перейти в пункт основного меню «Данные» и выбрать пункт «Очистка
данных». На форме, определить данные для удаления и нажать кнопку «Удалить»
Для ввода и редактирования справочных данных
надо перейти в пункт меню “Справочники” и открыть форму «Валюта»
Данные представлены в виде таблицы, для
перемещения по которой можно использовать полосу прокрутки, а также стрелки в
нижней и верхней панели навигатора. Кроме кнопок перемещения навигатор имеет
кнопку добавления новой записи, удаления, редактирование выбранной записи,
сохранение изменений , отказ от изменений и обновление данных. Закрытие формы
выполняется кнопками окна Х в верхней правой части и кнопкой «Выход». При вводе
и редактировании данных автоматически рассчитывается возраст монеты.
Рисунок … Вид кнопок навигации
Рисунок … Вид кнопки добавления записи
Рисунок … Вид кнопки сохранения изменений
Рисунок … Вид кнопки удаления записи
Для ввода основной информации о коллекциях на
главном меню (рисунок ) надо выбрать пункт «Данные о коллекции». Форма
представлена на рисунке . Она отображает данные в таблице, имеет навигатор и
для удобного ввода поля со списками, в которых нужно просто выбрать подходящее
значение. Использование навигатора аналогично.
2.3.4..... Получение
выходных документов
Для получения других выходных документов
выберите в главном меню пункт «Отчётность», а затем необходимый документ
Данные отчетные документы имеют запросных форм
для предварительного ввода критериев поиска данных, после выполнения поиска
найденные данные можно вывести на печать через окно предварительного просмотра
Для печати найденных данных с помощью кнопки
«Печать» отчет отображается в окне предварительного просмотра.
2.4 Тестирование
программы
Тестирование программы проводилось по данным
контрольного примера, и результаты представлены в Приложении Б. Оно показало,
что программа работает стабильно, так как данные контрольного примера совпадают
с результатами тестирования.
Программа обеспечивает контроль вводимых данные
и защиту от неправильных действий пользователя.
Если при перемещении по данным на формах ввода
указатель попадает на первую или последнюю запись, то кнопки навигатора для
перемещения дальше блокируются.
Для обеспечения безопасности данных при попытке
удаления выдается запрос на подтверждение, представленное на рисунке
Доступ в поля с наименованием «Код» запрещён,
т.к. программа сама проставит коды.
При выполнении поиска для формирования выходных
документов выполняется проверка на количество найденных данных и при их
отсутствии выводится сообщение, а так же производится проверка на выбор
критериев поиска.
На остальных запросных формах проверки
аналогичны.
Заключение
В ходе прохождения практики были решена задача
по автоматизации учёта коллекционных монет. Все необходимые функции
реализованы, то есть программа выполнена в строгом соответствии с заданием и
выполняет поставленную задачу полностью.
Была спроектирована реляционная база данных и
приложение для ее обработки реализации в СУБД MS
Access.
Приложение было протестировано по заранее
разработанному контрольному примеру. Данные контрольного примера полностью
совпадают с результатами работы приложения. Кроме того приложение адекватно
реагирует на критические ситуации и своевременно сообщает о некорректности
данных.
На основании сравнения данных контрольного
примера и результатов тестирования программы можно сделать вывод о том, что
приложение правильно обрабатывает исходные данные. Кроме того, при решении
учтены критические ситуации по отсутствию выходных данных.
К недостаткам программы можно отнести:
- Неполная русификация сообщений и кнопок в
ошибках, а так же при добавлении или удалении записей в составной форме.
- Неудобная справочная система
Отсутствие контроля при удалении полей
Таким образом, приложение работоспособно и
пригодно для использования его в клубе , даже с выявленными недостатками, на
которые просто следует обращать внимание пользователя при работе.
Список используемых
источников
1
Иванова Г.С. Технология программирования: Учебник для вузов.-М.: Изд-во МГТУ
им. Н.Э. Баумана, 2002.-320с.:ил.
Вендров
А.М. Практикум по проектированию программного обеспечения экономических
информационных систем. - М.: Финансы и статистика, 2002.
М.
Фленов. Библия Delphi, издательство: БХВ-Петербург, ISBN 5-94157-456-8; 2005
#"564416.files/image020.jpg">
Страница «Полный список»
Страница полный список с группировкой по
коллекционеру
ПРИЛОЖЕНИЕ Б
Результаты тестирования программы
программа база данное
ПРИЛОЖЕНИЕ В
Текст программ, форм, меню и отчетов
main;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls, Menus, dm , ob_avtore,
Buttons,, ToolWin, ActnMan, ActnCtrls, ComCtrls, ShellAPI;_main = class(TForm):
TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TOpenDialog;: TImage;: TBitBtn;: TLabel;: TMenuItem;:
TImageList;: TToolBar;: TToolButton;: TToolButton;: TToolButton;: TToolButton;:
TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;:
TOpenDialog;FormActivate(Sender: TObject);N4Click(Sender:
TObject);N15Click(Sender: TObject);FormCreate(Sender: TObject);FormCloseQuery(Sender:
TObject; var CanClose: Boolean);N1Click(Sender: TObject);N14Click(Sender:
TObject);BitBtn1Click(Sender: TObject);N24Click(Sender:
TObject);N31Click(Sender: TObject);N22Click(Sender: TObject);N41Click(Sender:
TObject);N2Click(Sender: TObject);N42Click(Sender: TObject);N25Click(Sender:
TObject);N34Click(Sender: TObject);
{ Private declarations }
{ Public declarations };_main:
Tfm_main;:integer;:string;:array[0..254] of char;valuta, moneta, collections,
poisk1, poisk3, poisk4, poisk2, settings,, avtor;
//uses Unit1;
{$R *.dfm}Tfm_main.BitBtn1Click(Sender:
TObject);;;Tfm_main.FormActivate(Sender:
TObject);filename,prov,ds:string;dm_collection.Connectionbd.Connected = false
thenopendialog.Execute = true then:=opendialog.FileName;:='Provider=Microsoft.ACE.OLEDB.12.0;Password="";User
ID=Admin;';:='Data
Source='+filename;_collection.Connectionbd.ConnectionString:=prov+ds;;_collection.Connectionbd.Connected:=true;_collection.t_valuta.Active:=true;_collection.t_moneta.active:=true;_collection.t_kollektioner.active:=true;_collection.t_collection.Active:=true;_collection.t_monetaval.Active:=true;_collection.t_settings.Active:=true;('Неверная
база данных. Пожалуйста выберите
другую.');;(dm_collection.t_settings.active=True) or (opendialog.Execute = false);
{flag:=1;; };;Tfm_main.FormCloseQuery(Sender:
TObject; var CanClose: Boolean);flag = 0 thenMessageDlg('Подтвердите завершение
работы с
программой',mtInformation,[mbYes,mbNo],0)=mrYesCanClose:=trueCanClose:=false;Tfm_main.FormCreate(Sender:
TObject);_collection.Connectionbd.Connected:=false;;Tfm_main.N14Click(Sender:
TObject);_poisk1.showmodal;;Tfm_main.N15Click(Sender:
TObject);_ob_avtore.ShowModal;;Tfm_main.N22Click(Sender:
TObject);_poisk2.showmodal;;Tfm_main.N24Click(Sender: TObject);_poisk3.showmodal;;Tfm_main.N25Click(Sender:
TObject);_o_prog.ShowModal;;Tfm_main.N31Click(Sender:
TObject);_poisk4.showmodal;;Tfm_main.N34Click(Sender:
TObject);(fm_main.Handle,nil,PChar(ExtractFilePath(Application.ExeName)+'help1.chm'),nil,nil,SW_RESTORE);;Tfm_main.N4Click(Sender:
TObject);_valuta.ShowModal;;Tfm_main.N1Click(Sender:
TObject);_collection.showmodal;;Tfm_main.N41Click(Sender:
TObject);_settings.showmodal;;Tfm_main.N2Click(Sender:
TObject);_cleardate.showmodal;;Tfm_main.N42Click(Sender: TObject);.Close;;.ob_avtore;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,
jpeg, ExtCtrls, Buttons;_ob_avtore = class(TForm): TLabel;: TImage;:
TBitBtn;BitBtn1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };_ob_avtore: Tfm_ob_avtore;main;
{$R *.dfm}Tfm_ob_avtore.BitBtn1Click(Sender:
TObject);_ob_avtore.Close;;.
unit dm;, Messages,SysUtils, Classes, DB, ADODB,
Variants, Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls, Menus, RpCon,
RpConDS, RpDefine,, RpBase, RpSystem;_collection = class(TDataModule):
TADOConnection;_valuta: TADOTable;_valuta: TDataSource;_moneta:
TADOTable;_moneta: TDataSource;_kollektioner: TADOTable;_kollektioner:
TDataSource;_collection: TADOTable;_collection: TDataSource;:
TADOQuery;_valutakod_valuta: TIntegerField;_valutavaluta:
TWideStringField;_monetakod_moneta: TIntegerField;_monetakod_valuta:
TIntegerField;_monetanominal: TFloatField;_monetagod:
TIntegerField;_monetatirazh: TIntegerField;_monetaopisanie:
TWideStringField;_monetaprice: TIntegerField;_kollektionerkod_kollek:
TIntegerField;_kollektionerfam: TWideStringField;_kollektionerimy:
TWideStringField;_kollektionerotch: TWideStringField;_kollektionertelefon:
TWideStringField;_kollektioneradres: TWideStringField;_collectionkod_kollek:
TIntegerField;_collectionkod_moneta: TIntegerField;_collectionkol:
TIntegerField;_monetavozrast: TIntegerField;_monetaval: TADOTable;_monetaval:
TDataSource;_monetavalkod_moneta: TIntegerField;_monetavalkod_valuta:
TIntegerField;_monetavalnominal: TFloatField;_monetavalgod:
TIntegerField;_monetavaltirazh: TIntegerField;_monetavalopisanie:
TWideStringField;_monetavalprice: TIntegerField;_monetavalvozrast:
TIntegerField;_monetavalmoneta: TStringField;_monetaname:
TStringField;_collectionmo: TStringField;_monetamoneta:
TStringField;_kollektionerfio: TStringField;_q: TDataSource;_calc:
TADOQuery;_q_calc: TDataSource;_dop: TADOQuery;: TRvProject;:
TRvSystem;_poisk1: TRvDataSetConnection;_poisk3: TRvDataSetConnection;_poisk4:
TRvDataSetConnection;_poisk2_00: TRvDataSetConnection;_poisk2_10:
TRvDataSetConnection;_poisk2_11: TRvDataSetConnection;_poisk2_20:
TRvDataSetConnection;_poisk2_21: TRvDataSetConnection;_settings:
TDataSource;_settings: TADOTable;_settings:
TRvDataSetConnection;t_valutaBeforeDelete(DataSet: TDataSet);t_monetaCalcFields(DataSet:
TDataSet);t_monetavalCalcFields(DataSet:
TDataSet);t_kollektionerBeforeDelete(DataSet:
TDataSet);t_monetaBeforeDelete(DataSet:
TDataSet);t_kollektionerCalcFields(DataSet:
TDataSet);t_collectionAfterInsert(DataSet: TDataSet);t_collectionBeforeInsert(DataSet:
TDataSet);t_collectionAfterPost(DataSet:
TDataSet);t_collectionAfterDelete(DataSet:
TDataSet);t_valutaBeforeInsert(DataSet: TDataSet);t_valutaAfterInsert(DataSet:
TDataSet);t_monetaAfterInsert(DataSet: TDataSet);t_monetaBeforeInsert(DataSet:
TDataSet);t_monetavalBeforeInsert(DataSet:
TDataSet);t_monetavalAfterInsert(DataSet:
TDataSet);t_kollektionerBeforeInsert(DataSet:
TDataSet);t_kollektionerAfterInsert(DataSet: TDataSet);
{ Private declarations }
{ Public declarations };_collection:
Tdm_collection;_val,kod_kollek,kod_moneta,i:integer;valuta,collections;
{$R
*.dfm}Tdm_collection.t_collectionAfterDelete(DataSet:
TDataSet);kol:integer;fm_collection.dbedit2.text<>''
then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего
монет у
коллекционера:'+inttostr(kol);;;Tdm_collection.t_collectionAfterInsert(DataSet:
TDataSet);kol:integer;fm_collection.dbedit2.text<>''
then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE
kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего
монет у коллекционера:'+inttostr(kol);;;Tdm_collection.t_collectionAfterPost(DataSet:
TDataSet);kol:integer;fm_collection.dbedit2.text<>''
then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE
kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего
монет у
коллекционера:'+inttostr(kol);;;Tdm_collection.t_collectionBeforeInsert(DataSet:
TDataSet);kol:integer;fm_collection.dbedit2.text<>''
then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE
kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего
монет у
коллекционера:'+inttostr(kol);;;Tdm_collection.t_kollektionerAfterInsert(DataSet:
TDataSet);_kollektionerkod_kollek.Value:=kod_kollek;;Tdm_collection.t_kollektionerBeforeDelete(DataSet:
TDataSet);i,prov:integer;:=t_kollektionerkod_kollek.Value;.SQL.Text:='SELECT *
FROM t_collection WHERE kod_kollek='+inttostr(prov);.Open;q.RecordCount>0
thenmessagedlg ('В таблице коллекций у данного коллекционера имеются монеты. Удалить
коллекционера и его коллекцию? ', mtConfirmation, [mbyes,mbno],0) = mrno
Then;;messagedlg (' Удалить коллекционера ? ', mtConfirmation, [mbyes,mbno],0)
= mrno then;;;Tdm_collection.t_kollektionerBeforeInsert(DataSet:
TDataSet);:=1;_kollektioner.First;i=t_kollektionerkod_kollek.value
do:=i+1;_kollektioner.Next;;_kollek:=i;;Tdm_collection.t_kollektionerCalcFields(DataSet:
TDataSet);_kollektionerfio.value := t_kollektionerfam.value+'
'+t_kollektionerimy.value+' '+t_kollektionerotch.value;;Tdm_collection.t_monetaAfterInsert(DataSet:
TDataSet);_monetakod_moneta.value:=kod_moneta;;Tdm_collection.t_monetaBeforeDelete(DataSet:
TDataSet);i,prov:integer;messagedlg (' Удалить монету? ', mtConfirmation,
[mbyes,mbno],0) = mrno then:=t_monetakod_moneta.Value;.SQL.Text:='SELECT * FROM
t_collection WHERE kod_moneta='+inttostr(prov);.Open;q.RecordCount>0 then
// messagedlg('Удаление невозможно. Данная
монета состоит в коллекциях.');;;;Tdm_collection.t_monetaBeforeInsert(DataSet:
TDataSet);:=1;_moneta.First;i=t_monetakod_moneta.value
do:=i+1;_moneta.Next;;_moneta:=i;;Tdm_collection.t_monetaCalcFields(DataSet:
TDataSet);Year, Month, Day:
word;(now(),year,month,day);_monetavozrast.value:=year -
t_monetagod.value;_monetamoneta.value:=trim(t_monetaname.value)+' '+trim(varToStr(t_monetanominal.Value));;Tdm_collection.t_monetavalAfterInsert(DataSet:
TDataSet);_monetavalkod_moneta.value:=kod_moneta;;Tdm_collection.t_monetavalBeforeInsert(DataSet:
TDataSet);kol,i:integer;.SQL.Text:='SELECT * FROM t_moneta';.Open;:=1;I := 1 to
q.RecordCount do.SQL.Text:='SELECT * FROM t_moneta WHERE
kod_moneta='+inttostr(i);.Open;q.RecordCount = 0
then_moneta:=i;;;;_moneta:=i;;Tdm_collection.t_monetavalCalcFields(DataSet:
TDataSet);Year, Month, Day: word;(now(),year,month,day);_monetavalvozrast.value:=year
- t_monetavalgod.value;
//t_monetavalmoneta.Value:=trim(t_monetavalname.value)+'
'+trim(varToStr(t_monetavalnominal.value));;Tdm_collection.t_valutaBeforeDelete(DataSet:
TDataSet);i,prov:integer;:=t_valutakod_valuta.Value;.SQL.Text:='SELECT * FROM t_moneta
WHERE kod_valuta='+inttostr(prov);.Open;q.RecordCount>0 thenmessagedlg ('В
таблице монета имеются монеты этой валюты. Удалить валюту и монеты? ',
mtConfirmation, [mbyes,mbno],0) = mrno Then;;messagedlg (' Удалить валюту ? ',
mtConfirmation, [mbyes,mbno],0) = mrno
then;;;Tdm_collection.t_valutaBeforeInsert(DataSet:
TDataSet);:=1;_valuta.First;i=t_valutakod_valuta.value
do:=i+1;_valuta.Next;;_val:=i;;Tdm_collection.t_valutaAfterInsert(DataSet:
TDataSet);_valutakod_valuta.Value:=kod_val;;.valuta;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, Grids, DBGrids, dm, StdCtrls,
ExtCtrls, DBCtrls, Buttons;_valuta = class(TForm): TDBGrid;: TDBNavigator;:
TBitBtn;: TDBGrid;: TDBNavigator;: TLabel;btn_backClick(Sender:
TObject);BitBtn1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };_valuta:
Tfm_valuta;main;
{$R *.dfm}Tfm_valuta.BitBtn1Click(Sender:
TObject);.Close;;Tfm_valuta.btn_backClick(Sender:
TObject);_valuta.close;;.collections;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, StdCtrls, Buttons, dm, Mask, DBCtrls, ExtCtrls,
Grids, DBGrids;_collection = class(TForm): TBitBtn;: TDBNavigator;: TDBEdit;:
TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TDBGrid;: TDBNavigator;_itog: TLabel;:
TLabel;BitBtn1Click(Sender: TObject);DBNavigator1Click(Sender: TObject; Button:
TNavigateBtn);FormActivate(Sender: TObject);
{ Private declarations }
{ Public declarations };_collection:
Tfm_collection;
{$R *.dfm}Tfm_collection.BitBtn1Click(Sender:
TObject);.Close;;Tfm_collection.DBNavigator1Click(Sender: TObject;:
TNavigateBtn);kol:integer;dbedit1.text<>''
then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE
kod_kollek='+dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_itog.Caption:='Всего
монет у коллекционера:'+inttostr(kol);;;Tfm_collection.FormActivate(Sender:
TObject);kol:integer;dbedit1.text<>'' then_collection.q.SQL.text:='SELECT
* FROM t_collection WHERE kod_kollek='+dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_itog.Caption:='Всего
монет у коллекционера:'+inttostr(kol);;;.poisk1;, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,, dm, StdCtrls, DBCtrls, Buttons, Grids,
DBGrids, ExtCtrls;_poisk1 = class(TForm): TLabel;: TBitBtn;_koll:
TDBLookupListBox;_find: TBitBtn;_print: TBitBtn;: TDBGrid;_kol: TLabel;_summa:
TLabel;_cancel: TBitBtn;: TLabel;_sort: TRadioGroup;BitBtn1Click(Sender:
TObject);btn_findClick(Sender: TObject);FormCreate(Sender: TObject);Btn_cancelClick(Sender:
TObject);rg_sortClick(Sender: TObject);btn_printClick(Sender:
TObject);zag();FormActivate(Sender: TObject);FormDeactivate(Sender: TObject);
{ Private declarations }
{ Public declarations };_poisk1:
Tfm_poisk1;:string;main;
{$R
*.dfm}Tfm_poisk1.zag();.DBGrid1.Columns[0].Title.Caption:='Валюта';.DBGrid1.Columns[0].Width:=150;.DBGrid1.columns[0].Alignment:=tacenter;.DBGrid1.Columns[1].Title.Caption:='Номинал';.DBGrid1.Columns[1].Width:=50;.DBGrid1.columns[1].Alignment:=tacenter;.DBGrid1.Columns[2].Title.Caption:='Количество';.DBGrid1.Columns[2].Width:=70;.DBGrid1.columns[2].Alignment:=tacenter;.DBGrid1.Columns[3].Title.Caption:='Цена';.DBGrid1.Columns[3].Width:=50;.DBGrid1.columns[3].Alignment:=tacenter;.DBGrid1.Columns[4].Title.Caption:='Возраст';.DBGrid1.Columns[4].Width:=50;.DBGrid1.columns[4].Alignment:=tacenter;;Tfm_poisk1.BitBtn1Click(Sender:
TObject);.close;;Tfm_poisk1.btn_findClick(Sender: TObject);:='SELECT
t_valuta.valuta, t_moneta.nominal, t_collection.kol , t_moneta.price ,'+
' Year(Date())- god AS vozrast FROM t_valuta
INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON
t_kollekti'+
'oner.kod_kollek = t_collection.kod_kollek) ON
t_moneta.kod_moneta = t_collection.kod_moneta) ON t_va'+
'luta.kod_valuta =
t_moneta.kod_valuta';lb_koll.KeyValue<=0 then // Если не выбран
коллекционер('Вы не выбрали коллекционера',mtInformation,[mbOk],0):=global+'
WHERE
t_collection.kod_kollek='+inttostr(lb_koll.KeyValue);_collection.Q.SQL.Text:=global;_collection.Q.Open;;dm_collection.Q.RecordCount=0
then//Если не найдены данные('Монет у коллекционера не
найдено',mtInformation,[mbOk],0);// Если
найдено_print.enabled:=true;_kol.Caption:='Количество типов
монет:'+inttostr(dm_collection.Q.RecordCount);_collection.Q_calc.SQL.text:='SELECT
sum(kol) as summa FROM t_collection WHERE
kod_kollek='+inttostr(lb_koll.KeyValue);_collection.q_calc.Open;_summa.caption:='Всего
монет:'+dm_collection.Q_calc.FieldByName('summa').AsString;;;;Tfm_poisk1.Btn_cancelClick(Sender:
TObject);:='SELECT t_valuta.valuta , t_moneta.nominal , t_collection.kol ,
t_moneta.price ,'+
' Year(Date())- god AS vozrast FROM t_valuta
INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON
t_kollekti'+
'oner.kod_kollek = t_collection.kod_kollek) ON
t_moneta.kod_moneta = t_collection.kod_moneta) ON t_va'+
'luta.kod_valuta =
t_moneta.kod_valuta';_collection.Q.SQL.Text:=global;_collection.Q.Open;_kol.Caption:='';_summa.Caption:='';_print.Enabled:=false;_sort.ItemIndex:=-1;_koll.KeyValue:=-1;;;Tfm_poisk1.FormActivate(Sender:
TObject);:='SELECT t_valuta.valuta , t_moneta.nominal , t_collection.kol ,
t_moneta.price ,'+
' Year(Date())- god AS vozrast FROM t_valuta
INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON
t_kollekti'+
'oner.kod_kollek = t_collection.kod_kollek) ON
t_moneta.kod_moneta = t_collection.kod_moneta) ON t_va'+
'luta.kod_valuta =
t_moneta.kod_valuta';_collection.Q.SQL.Text:=global;_collection.Q.Open;;_print.Enabled:=false;_sort.ItemIndex:=-1;_koll.KeyValue:=-1;;Tfm_poisk1.FormCreate(Sender:
TObject);_print.Enabled:=false;
{ };Tfm_poisk1.rg_sortClick(Sender:
TObject);sort:string;rg_sort.ItemIndex of
: sort:=' ORDER BY t_valuta.valuta ASC';
: sort:=' ORDER BY t_moneta.nominal ASC';
: sort:=' ORDER BY t_collection.kol ASC';
: sort:=' ORDER BY t_moneta.price ASC';
: sort:=' ORDER BY Year(Date())- god
ASC';;_collection.Q.SQL.Text:=global+sort;_collection.Q.Open;;;Tfm_poisk1.btn_printClick(Sender:
TObject);txt,filename:string;;:=lb_koll.SelectedItem;_collection.Reports.SetParam('poisk1',txt);_collection.Reports.ExecuteReport('r_poisk1');('Неправильный
фаил отчётов. Пожалуйста укажите путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;Tfm_poisk1.FormDeactivate(Sender:
TObject);_collection.Q.SQL.Text:=global;_collection.Q.Open;;;.poisk3;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, dm, DBCtrls,
StdCtrls, Grids, DBGrids, Buttons, ExtCtrls;_poisk3 = class(TForm):
TLabel;_mon: TDBLookupListBox;: TLabel;_find: TBitBtn;_print: TBitBtn;_cancel:
TBitBtn;: TDBGrid;_kol: TLabel;_sort: TRadioGroup;:
TBitBtn;btn_findClick(Sender: TObject);FormActivate(Sender:
TObject);Btn_cancelClick(Sender: TObject);rg_sortClick(Sender:
TObject);BitBtn1Click(Sender: TObject);zag();btn_printClick(Sender: TObject);
{ Private declarations }
{ Public declarations };_poisk3:
Tfm_poisk3;:string;main;
{$R
*.dfm}Tfm_poisk3.zag();.DBGrid1.Columns[0].Title.Caption:='Фамилия';.DBGrid1.Columns[0].Width:=100;.DBGrid1.columns[0].Alignment:=tacenter;.DBGrid1.Columns[1].Title.Caption:='Имя';.DBGrid1.Columns[1].Width:=100;.DBGrid1.columns[1].Alignment:=tacenter;.DBGrid1.Columns[2].Title.Caption:='Отчество';.DBGrid1.Columns[2].Width:=100;.DBGrid1.columns[2].Alignment:=tacenter;.DBGrid1.Columns[3].Title.Caption:='Телфон';.DBGrid1.Columns[3].Width:=100;.DBGrid1.columns[3].Alignment:=tacenter;.DBGrid1.Columns[4].Title.Caption:='Адрес';.DBGrid1.Columns[4].Width:=100;.DBGrid1.columns[4].Alignment:=tacenter;.DBGrid1.Columns[5].Title.Caption:='Количество';.DBGrid1.Columns[5].Width:=100;.DBGrid1.columns[5].Alignment:=tacenter;;Tfm_poisk3.Btn_cancelClick(Sender:
TObject);:='SELECT t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch,
t_kollektioner.telefon, '+
't_kollektioner.adres, t_collection.kol '+
'FROM t_kollektioner INNER JOIN t_collection ON
t_kollektioner.kod_kollek =
t_collection.kod_kollek';_collection.Q.SQL.Text:=global;_collection.q.open;_kol.Caption:='';_print.Enabled:=false;_mon.KeyValue:=-1;_sort.ItemIndex:=-1;();;Tfm_poisk3.btn_findClick(Sender:
TObject);sort:string;lb_mon.KeyValue<=0 then // Если не выбран
коллекционер('Вы не выбрали монету',mtInformation,[mbOk],0);:='SELECT
t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch,
t_kollektioner.telefon, '+
't_kollektioner.adres, t_collection.kol '+
'FROM t_kollektioner INNER JOIN t_collection ON
t_kollektioner.kod_kollek =
t_collection.kod_kollek';_collection.Q.SQL.Text:=global;:=global+' WHERE
t_collection.kod_moneta='+inttostr(lb_mon.KeyValue);rg_sort.ItemIndex of
: sort:='';
: sort:=' ORDER BY t_kollektioner.fam ASC ';
: sort:=' ORDER BY t_kollektioner.telefon ASC ';
: sort:=' ORDER BY t_kollektioner.adres ASC ';
: sort:=' ORDER BY t_collection.kol ASC
';;_collection.Q.SQL.Text:=global+sort;_collection.Q.Open;();dm_collection.Q.RecordCount=0
then//Если не найдены данные('У данной монеты нет
коллекционеров',mtInformation,[mbOk],0);// Если
найдено_print.Enabled:=true;_kol.Caption:='Количество
коллекционеров:'+inttostr(dm_collection.Q.RecordCount);;;;Tfm_poisk3.FormActivate(Sender:
TObject);:='SELECT t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch,
t_kollektioner.telefon, '+
't_kollektioner.adres, t_collection.kol '+
'FROM t_kollektioner INNER JOIN t_collection ON
t_kollektioner.kod_kollek =
t_collection.kod_kollek';_collection.Q.SQL.Text:=global;_collection.q.open;();_kol.Caption:='';_print.Enabled:=false;;Tfm_poisk3.rg_sortClick(Sender:
TObject);sort:string;_collection.Q.SQL.Text:=global;rg_sort.ItemIndex of
: sort:=' ORDER BY t_kollektioner.fam ASC ';
: sort:=' ORDER BY t_kollektioner.telefon ASC ';
: sort:=' ORDER BY t_kollektioner.adres ASC ';
: sort:=' ORDER BY t_collection.kol ASC
';;_collection.Q.SQL.Text:=global+sort;_collection.Q.Open;();;Tfm_poisk3.BitBtn1Click(Sender:
TObject);.Close;;Tfm_poisk3.btn_printClick(Sender:
TObject);txt,filename:string;:=lb_mon.SelectedItem;_collection.Reports.SetParam('poisk3',txt);_collection.Reports.ExecuteReport('r_poisk3');('Неправильный
фаил отчётов. Пожалуйста укажите путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;.poisk4;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, DBCtrls, Grids, DBGrids,
StdCtrls, dm, Buttons;_poisk4 = class(TForm): TLabel;: TDBGrid;: TDBGrid;_val:
TDBLookupListBox;: TLabel;: TLabel;: TBitBtn;_print:
TBitBtn;lb_valClick(Sender: TObject);FormActivate(Sender:
TObject);BitBtn1Click(Sender: TObject);zag();zag2();btn_printClick(Sender:
TObject);
{ Private declarations }
{ Public declarations };_poisk4:
Tfm_poisk4;:string;main;
{$R
*.dfm}Tfm_poisk4.zag();i:integer;.DBGrid2.Columns[0].Title.Caption:='Валюта';.DBGrid2.Columns[0].Width:=150;.DBGrid2.columns[0].Alignment:=tacenter;.DBGrid2.Columns[1].Title.Caption:='Номинал';.DBGrid2.Columns[1].Width:=50;.DBGrid2.columns[1].Alignment:=tacenter;.DBGrid2.Columns[2].Title.Caption:='Цена';.DBGrid2.Columns[2].Width:=50;.DBGrid2.columns[2].Alignment:=tacenter;.DBGrid2.Columns[3].Title.Caption:='Фамилия';.DBGrid2.Columns[3].Width:=100;.DBGrid2.columns[3].Alignment:=tacenter;.DBGrid2.Columns[4].Title.Caption:='Имя';.DBGrid2.Columns[4].Width:=100;.DBGrid2.columns[4].Alignment:=tacenter;.DBGrid2.Columns[5].Title.Caption:='Отчество';.DBGrid2.Columns[5].Width:=100;.DBGrid2.columns[5].Alignment:=tacenter;.DBGrid2.Columns[6].Title.Caption:='Адрес';.DBGrid2.Columns[6].Width:=100;.DBGrid2.columns[6].Alignment:=tacenter;;Tfm_poisk4.zag2();i:integer;.DBGrid1.Columns[0].Title.Caption:='Валюта';.DBGrid1.Columns[0].Width:=150;.DBGrid1.columns[0].Alignment:=tacenter;.DBGrid1.Columns[1].Title.Caption:='Номинал';.DBGrid1.Columns[1].Width:=50;.DBGrid1.columns[1].Alignment:=tacenter;.DBGrid1.Columns[2].Title.Caption:='Цена';.DBGrid1.Columns[2].Width:=50;.DBGrid1.columns[2].Alignment:=tacenter;.DBGrid1.Columns[3].Title.Caption:='Фамилия';.DBGrid1.Columns[3].Width:=100;.DBGrid1.columns[3].Alignment:=tacenter;.DBGrid1.Columns[4].Title.Caption:='Имя';.DBGrid1.Columns[4].Width:=100;.DBGrid1.columns[4].Alignment:=tacenter;.DBGrid1.Columns[5].Title.Caption:='Отчество';.DBGrid1.Columns[5].Width:=100;.DBGrid1.columns[5].Alignment:=tacenter;.DBGrid1.Columns[6].Title.Caption:='Адрес';.DBGrid1.Columns[6].Width:=100;.DBGrid1.columns[6].Alignment:=tacenter;;Tfm_poisk4.btn_printClick(Sender:
TObject);txt,filename:string;:=lb_val.SelectedItem;_collection.Reports.SetParam('poisk4',txt);_collection.Reports.ExecuteReport('r_poisk4');('Неправильный
фаил отчётов. Пожалуйста укажите путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;Tfm_poisk4.FormActivate(Sender:
TObject);sql:string;_print.Enabled:=false;:='SELECT t_valuta.valuta,
t_moneta.nominal, t_moneta.price, t_kollektioner.fam, t_kollektioner.imy,
t_kollektioner.otch, t_kollektioner.adres '+
'FROM t_valuta INNER JOIN (t_moneta INNER JOIN
(t_kollektioner INNER JOIN t_collection ON t_kollektioner.kod_kollek =
t_collection.kod_kollek)'+
' ON t_moneta.kod_moneta =
t_collection.kod_moneta) ON t_valuta.kod_valuta = t_moneta.kod_valuta ORDER BY
t_moneta.price
DESC';_collection.Q.SQL.Text:=sql;_collection.q.Open;;;Tfm_poisk4.lb_valClick(Sender:
TObject);kol:integer;:='SELECT t_valuta.valuta, t_moneta.nominal,
t_moneta.price,'+
' t_kollektioner.fam, t_kollektioner.imy,
t_kollektioner.otch, t_kollektioner.adres '+
' FROM t_valuta INNER JOIN (t_moneta INNER JOIN
(t_kollektioner INNER JOIN t_collection '+
' ON t_kollektioner.kod_kollek =
t_collection.kod_kollek)'+
' ON t_moneta.kod_moneta =
t_collection.kod_moneta) ON t_valuta.kod_valuta = t_moneta.kod_valuta'+
' WHERE t_moneta.price=(SELECT Max(price) '+
' FROM t_moneta '+
' WHERE
kod_valuta='+inttostr(lb_val.KeyValue)+') ORDER BY t_moneta.price
DESC';_collection.Q_calc.SQL.Text:=global;_collection.Q_calc.Open;;:=dm_collection.q_calc.RecordCount;kol>0
then.Caption:='Количество найденных
монет:'+inttostr(kol);.Visible:=true;_print.Enabled:=true;.Caption:='Монет не
найдено';.Visible:=true;;;Tfm_poisk4.BitBtn1Click(Sender:
TObject);.Close;;.poisk2;, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids,dm;_poisk2 =
class(TForm): TDBGrid;_group: TRadioGroup;_vid: TRadioGroup;: TBitBtn;:
TBitBtn;: TLabel;: TLabel;: TLabel;FormActivate(Sender:
TObject);rg_groupClick(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender:
TObject);zag();FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };_poisk2:
Tfm_poisk2;,sql,sql2:string;:boolean;main;
{$R
*.dfm}Tfm_poisk2.zag();.DBGrid2.Columns[0].Title.Caption:='Фамилия';.DBGrid2.Columns[1].Title.Caption:='Имя';.DBGrid2.Columns[2].Title.Caption:='Отчество';.DBGrid2.Columns[3].Title.Caption:='Валюта';.DBGrid2.Columns[4].Title.Caption:='Номинал';.DBGrid2.Columns[5].Title.Caption:='Количество';;Tfm_poisk2.BitBtn2Click(Sender:
TObject);txt,filename:string;rg_group.ItemIndex of
:rg_vid.ItemIndex of
:_collection.Reports.ExecuteReport('r_poisk2_00');
// запуск без группировки, итоговый('Неправильный фаил отчётов. Пожалуйста
укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute
= true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;
:_collection.Reports.ExecuteReport('r_poisk2_00');
// запуск без группировки, подробный('Неправильный фаил отчётов. Пожалуйста
укажите путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;;;
:rg_vid.ItemIndex of
:_collection.Reports.ExecuteReport('r_poisk2_10');
// запуск по коллекционеру, итоговый('Неправильный фаил отчётов. Пожалуйста
укажите путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;
:_collection.q_calc.SQL.Text:='SELECT
t_kollektioner.fam, t_moneta.nominal, t_valuta.valuta, '+
' t_collection.kol, t_moneta.god, t_moneta.tirazh,
t_moneta.opisanie, t_moneta.price, t_kollektioner.imy, '+
' t_kollektioner.otch, t_kollektioner.telefon,
t_kollektioner.adres, '+
' Year(Date())- god as vozrast FROM (t_valuta
INNER JOIN t_moneta ON t_valuta.kod_valuta = t_moneta.kod_valuta) INNER JOIN
(t_kollektioner '+
' INNER JOIN t_collection ON
t_kollektioner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta =
'+
' t_collection.kod_moneta ORDER BY
t_kollektioner.kod_kollek';_collection.q_calc.Open;_collection.Reports.ExecuteReport('r_poisk2_11');
// запуск по коллекционеру, подробный('Неправильный фаил отчётов. Пожалуйста
укажите путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;;;
:rg_vid.ItemIndex of
:_collection.Reports.ExecuteReport('r_poisk2_20');
// запуск по монете, итоговый('Неправильный фаил отчётов. Пожалуйста укажите
путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;
:_collection.q_calc.SQL.Text:='SELECT
t_moneta.kod_moneta, t_valuta.kod_valuta AS t_valuta_kod_valuta,'+
' t_valuta.valuta, t_moneta.kod_moneta AS
t_moneta_kod_moneta, t_moneta.kod_valuta AS'+
' t_moneta_kod_valuta, t_moneta.nominal,
t_moneta.god, t_moneta.tirazh, t_moneta.opisanie,'+
' t_moneta.price, t_kollektioner.kod_kollek AS
t_kollektioner_kod_kollek, t_kollektioner.fam,'+
' t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.telefon,
t_kollektioner.adres,'+
' t_collection.kod_kollek AS
t_collection_kod_kollek, t_collection.kod_moneta AS t_collection_kod_moneta,'+
' t_collection.kol FROM (t_valuta INNER JOIN
t_moneta ON t_valuta.[kod_valuta] = t_moneta.[kod_valuta])'+
' INNER JOIN (t_kollektioner INNER JOIN
t_collection ON t_kollektioner.[kod_kollek] = t_collection.[kod_kollek])'+
' ON t_moneta.[kod_moneta] =
t_collection.[kod_moneta] GROUP BY t_valuta.kod_valuta, t_valuta.valuta,'+
' t_moneta.kod_moneta, t_moneta.kod_valuta,
t_moneta.nominal, t_moneta.god, t_moneta.tirazh,'+
' t_moneta.opisanie, t_moneta.price,
t_kollektioner.kod_kollek, t_kollektioner.fam, t_kollektioner.imy,'+
' t_kollektioner.otch, t_kollektioner.telefon,
t_kollektioner.adres, t_collection.kod_kollek,'+
' t_collection.kod_moneta, t_collection.kol'+
' ORDER BY t_moneta.kod_moneta
ASC';_collection.q_calc.Open;_collection.Reports.ExecuteReport('r_poisk2_21');
// запуск по монете, подробный('Неправильный фаил отчётов. Пожалуйста укажите
путь к корректному
фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true
then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav')
or (fm_main.OpenDialogRep.Execute = false);;;;;;Tfm_poisk2.FormActivate(Sender:
TObject);flag=true then:=false;_group.ItemIndex:=0;:='SELECT fam ,imy ,otch ,
valuta, nominal , kol '+
' FROM t_collection, t_valuta, t_kollektioner,
t_moneta'+
' WHERE
(t_valuta.kod_valuta=t_moneta.kod_valuta) and
(t_moneta.kod_moneta=t_collection.kod_moneta) and'+
'
(t_kollektioner.kod_kollek=t_collection.kod_kollek) ORDER BY
fam';_collection.q.SQL.Text:=global;_collection.Q.open;;;;Tfm_poisk2.rg_groupClick(Sender:
TObject);rg_group.ItemIndex of
::='SELECT fam ,imy ,otch , valuta , nominal ,
kol '+
' FROM t_collection, t_valuta, t_kollektioner,
t_moneta'+
' WHERE
(t_valuta.kod_valuta=t_moneta.kod_valuta) and
(t_moneta.kod_moneta=t_collection.kod_moneta) and'+
' (t_kollektioner.kod_kollek=t_collection.kod_kollek)
ORDER BY fam';_collection.Q.SQL.Text:=global;_collection.Q.Open;;;
::='SELECT fam , imy , otch ,
Sum(t_collection.kol) ,'+
' Sum(t_moneta.price*t_collection.kol) FROM
t_moneta INNER JOIN (t_kollektioner'+
' INNER JOIN t_collection ON
t_kollektioner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta ='+
' t_collection.kod_moneta GROUP BY
t_kollektioner.fam, t_kollektioner.imy,
t_kollektioner.otch';_collection.Q.SQL.Text:=global;_collection.Q.Open;.Columns[0].Title.Caption:='Фамилия';.Columns[1].Title.Caption:='Имя';.Columns[2].Title.Caption:='Отчество';.Columns[3].Title.Caption:='Всего
монет';.Columns[4].Title.Caption:='Общая стоймость';;
::='SELECT valuta , nominal ,
Sum(t_collection.kol) '+
' FROM t_valuta INNER JOIN (t_moneta INNER JOIN
t_collection ON t_moneta.kod_moneta = '+
' t_collection.kod_moneta) ON
t_valuta.kod_valuta = t_moneta.kod_valuta'+
' GROUP BY t_valuta.valuta,
t_moneta.nominal';_collection.Q.SQL.Text:=global;_collection.Q.Open;.Columns[0].Title.Caption:='Валюта';.Columns[1].Title.Caption:='Номинал';.Columns[2].Title.Caption:='Сумма
монет';;;;Tfm_poisk2.BitBtn1Click(Sender:
TObject);.Close;;Tfm_poisk2.FormCreate(Sender: TObject);:=true;;.
unit settings;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, dm, Mask,
DBCtrls, Buttons, ExtCtrls;
type_settings = class(TForm)
Label1: TLabel;: TLabel;: TBitBtn;
DBEdit1: TDBEdit;: TDBEdit;:
TDBNavigator;: TLabel;BitBtn1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };_settings:
Tfm_settings;
{$R
*.dfm}Tfm_settings.BitBtn1Click(Sender: TObject);.close;;.
unit cleardata;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons,
ExtCtrls,dm;_cleardate = class(TForm): TLabel;: TLabel;: TPanel;: TCheckBox;:
TPanel;: TCheckBox;: TCheckBox;: TCheckBox;: TCheckBox;: TBitBtn;: TBitBtn;:
TLabel;BitBtn1Click(Sender: TObject);CheckBox5Click(Sender:
TObject);CheckBox1Click(Sender: TObject);CheckBox2Click(Sender: TObject);CheckBox3Click(Sender:
TObject);BitBtn2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };_cleardate:
Tfm_cleardate;
{$R
*.dfm}Tfm_cleardate.BitBtn1Click(Sender:
TObject);.Close;;Tfm_cleardate.CheckBox5Click(Sender: TObject);checkbox5.Checked=true
then.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;;;Tfm_cleardate.CheckBox1Click(Sender:
TObject);checkbox1.Checked=true then.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;;;Tfm_cleardate.CheckBox2Click(Sender:
TObject);CheckBox2.Checked=true
then.Checked:=true.Checked:=false;;Tfm_cleardate.CheckBox3Click(Sender:
TObject);checkbox3.Checked=true
then.Checked:=true.Checked:=false;;Tfm_cleardate.BitBtn2Click(Sender:
TObject);(checkbox1.Checked=true) or (checkbox5.Checked=true)
thenmessagedlg('Вы действительно хотите удалить все записи из базы
данных?',mtConfirmation,[mbYes,mbNo],0)=mrYes
then_collection.Q.SQL.text:='DELETE FROM
t_valuta';_collection.q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM
t_kollektioner';_collection.q.ExecSQL;_collection.q.sql.text:='DELETE FROM
t_collection';_collection.q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM
t_moneta';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('База
данных очищена',mtInformation,[mbOk],0);;;checkbox2.Checked=true
thenmessagedlg('Вы действительно хотите удалить коллекционеров и их коллекции?',mtConfirmation,[mbYes,mbNo],0)=mrYes
then_collection.q.SQL.Text:='DELETE FROM
t_kollektioner';_collection.Q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM
t_collection';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('Коллекционеры
и их коллекции удалены',mtInformation,[mbOk],0);;;checkbox3.Checked=true
thenmessagedlg('Вы действительно хотите удалить монеты и
коллекции?',mtConfirmation,[mbYes,mbNo],0)=mrYes
then_collection.q.SQL.Text:='DELETE FROM
t_moneta';_collection.Q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM
t_collection;';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('Монеты
и коллекции удалены',mtInformation,[mbOk],0);;;checkbox4.Checked=true
thenmessagedlg('Вы действительно хотите удалить
коллекции?',mtConfirmation,[mbYes,mbNo],0)=mrYes
then_collection.q.SQL.Text:='DELETE FROM
t_collection';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('Kоллекции
удалены',mtInformation,[mbOk],0);;;;
end.avtor;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, StdCtrls, jpeg,
Buttons;_o_prog = class(TForm): TImage;: TLabel;: TPanel;: TLabel;:
TBitBtn;BitBtn1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };_o_prog:
Tfm_o_prog;
{$R
*.dfm}Tfm_o_prog.BitBtn1Click(Sender: TObject);.close;;.