Разработка приложения для работы с базой данных
Рисунок 13 — Добавление данных Далее произведено редактирование последней добавленной функции, так как умышлено у нее было сделано не правильное описание. Для этого выбрана эта запись в таблице и нажата кнопка «Редактировать» и введено правильное описание «Слияние строк» вместо «СИяние строк» (рисунок 14). В данной работе для создания приложения выбрана среда Delphi, так как она является… Читать ещё >
Разработка приложения для работы с базой данных (реферат, курсовая, диплом, контрольная)
1. Теоритические аспекты баз данных и СУБД
1.1 Классификация баз данных
1.2 Классификация СУБД
2. Выбор СУБД и разработка базы данных
2.1 Выбор СУБД для создания базы данных в сети
2.2 Создание базы данных
3. Разработка приложения для работы с базой данных
3.1 Список требований
3.2 Разработка приложения
3.3 Тестирование программы
Заключение
Приложение. Исходный код программы
Базы данных же хранят информацию о большом числе объектов различных типов. При этом имеется возможность быстрого и удобного поиска данных в базе, что выгодно отличает базы данных от файлов. В принципе хранение информации об однотипных объектах можно организовать и в обычном текстовом файле, однако при большом количестве объектов быстродействие при использовании обычного файла по сравнению с базой данных будет существенно ниже. К тому же при использовании файлов возможны проблемы при одновременном доступе нескольких пользователей к файлу.
Актуальность темы
работы, связанной со справочником по функциям языков программирования базам данных, в настоящее время очень высока. Использование таких справочников используется как преподавателями, так и студентами. Быстрый доступ и получение конкретной информации по функциям упрощает обучение и затраты времени на поиск необходимой функции и языка. Актуальность работы также обусловлена необходимостью и сложностью выбора системы управления базы данных (СУБД).
Цель производственной практики заключается в проектировании и создании «Справочника по современным языкам программирования» состоит в обобщении информации для выбора конкретной СУБД в сети и разработки приложения по работе с базой данных.
Для достижения поставленной цели в данной работе решается ряд задач:
— выбора конкретной СУБД;
— проектирования БД;
— разработка БД и интерфейса;
Глава 1. Теоретические аспекты баз данных и СУБД
Перед тем как изучать любой объект весьма целесообразно дать его определение. В данной работе сделана попытка дать обобщенное и наиболее полное определение термину «База данных», на основании информации из нескольких источников.
Под базой данных понимается совокупность данных, которая хранится строго определенным образом в соответствии со схемой данных [8], и характеризующая объекты конкретной предметной области.
Из выше сказанного определения ясно, что база данных имеет строго определённую структуру, и в тоже время эта структура позволяет характеризовать множество объектов из конкретной предметной области.
Однако сами по себе базы данных, как правило, не статичны, а подвержены постоянным изменениям, так как меняются и сами объекты реального мира, характеристики которых хранятся в базе данных. Поэтому базой данных необходимо постоянно управлять. К тому же необходимы средства, предоставляющие возможности удобного и быстрого манипулирования данными из базы.
Система управления базой данных — совокупность языковых и программных средств, предоставляющих возможности по созданию и модификации базы данных.
Таким образом, база данных, по сути, является лишь своеобразным хранилищем, работа с которым осуществляется через СУБД. Общая схема взаимодействия пользователя с базой данных представлена на рисунке 1.
Рисунок 1 — Общая схема работы с базой данных
Как видно из схемы, представленной выше на рисунке 1, пользователь работает с базой данных не напрямую через СУБД, а через приложение, которое в свою очередь использует возможности СУБД, это во многом связано с наличием прикладных задач, имеющих собственные конкретные особенности, в то время как функции, предоставляемые конкретной СУБД, универсальны для всех приложений.
Иными словами, СУБД с точки зрения приложения предоставляет универсальный программный интерфейс, для взаимодействия с базой данных.
А конкретные задачи пользователей, как правило, решаются на уровне приложения, в том числе и с использованием возможностей СУБД.
На рисунке 2 представлено примерное распределение функций между приложением, СУБД и самой базой данных.
Рисунок 2 — Распределение функций при работе с базой данных
Кратко описав, общую схему работы с базами данных, с целью более углублённого рассмотрения данного вопроса можно перейти к их классификации.
1.1 Классификация баз данных
база данные управление доступ
Базы данных можно классифицировать по нескольким признакам. Одним из самых очевидных признаков классификации является структура или модель, хранящихся в базе данных.
По модели данных базы данных делят на следующие виды:
— иерархические;
— сетевые;
— реляционные;
— объектно-ориентированные.
Иерархическая модель графически может быть представлена в виде дерева, возможный вид которого изображен на рисунке 3.
Рисунок 3 — Графическое представление иерархической модели данных
Основными особенностями иерархической модели являются следующие:
— все элементы имеют не более одного родителя;
— родителей нет только у корневого элемента первого уровня;
— никакой объект данной модели (кроме корневого) не может существовать без своего родителя, иными словами при удалении элемента, удаляются и все его потомки.
Основным достоинством данной модели является упорядоченность и однозначность.
Однако в данной модели достаточно трудоемко организуется добавление и удаление новых элементов, так как надо пройти весь путь от корневого элемента, до необходимого уровня.
Наглядным примером иерархической организации данных может служить реестр операционной системы Windows, вид которого представлен на рисунке 4.
Рисунок 4 — Реестр Windows
Сетевая модель данных, по сути, является видоизмененной иерархической моделью, в которой один потомок может иметь множество родителей. Данное свойство позволяет организовывать практически любые связи между объектами.
Графическое изображение сетевой модели представлено ниже на рисунке 5.
Рисунок 5 — Сетевая модель данных
Данная модель предполагает возможность наличия любых связей, все могут быть родителями и потомками.
Однако, управлять такой моделью крайне не просто, так как возможно наличие множества связей. И чем больше число объектов в такой модели, тем сложнее ее структура.
Большого практического применения как сетевая, так и иерархическая модели данных в итоге не нашли.
Реляционная модель предполагает представление данных в виде таблиц или отношений. Данная модель была предложена Коддом в семидесятых годах прошлого столетия, и именно она активно используется и в настоящее время.
Таблицы (отношения) в реляционной модели имеют следующую структуру:
— столбцы в таблицы содержат характеристики объекта;
— каждая строка описывает конкретный экземпляр объекта.
Столбцы, так же называют полями, а строки записями. Столбец, содержащий уникальную характеристику объекта, называется ключевым полем.
Пример реляционной базы «Туристы» представлен на рисунке 6.
Рисунок 6 — Пример реляционной базы данных
К достоинствам реляционной модели можно отнести следующие особенности:
— наглядность и удобство работы;
— существует математический аппарат, так называемая алгебра отношений;
— гибкость, над таблицами можно производить операции склеивания и разрезания;
— возможность использования мощного языка манипулирования данными SQL;
— возможность организовывать связи между таблицами по одинаковым полям, таким образом, организовывая описание различных объектов, в рамках одной базы данных, что позволяет использовать преимущества сетевой модели.
Объектно-ориентированные базы данных используют описание объектов через их атрибуты, методы и классы. Данные базы тесно связаны с понятием объектноориентированного программирования. Одним из важных особенностей данных баз является наследование потомками свойств и методов родителей.
Еще одним способом классификации баз данных является их размещение относительно конечного пользователя:
— локальная база данных, которая расположена на том же компьютере, где и работает пользователь;
— удаленная или сетевая, расположена на одном из серверов в сети, соответственно с ней может вестись работа нескольких пользователей с разных компьютеров.
Последняя классификация во многом связана с особенностями используемой СУБД. Поэтому далее целесообразно более подробно рассмотреть СУБД.
1.2 Классификация СУБД
Две классификации, приведённые ранее в предыдущем пункте для баз данных, справедливы так же и для СУБД, поэтому подробно на них останавливаться не имеет большого практического смысла. Ниже приведена классификация характерная именно для СУБД.
По способу доступа к базе данных СУБД делятся на следующие классы:
— файл — серверные СУБД;
— клиент-серверные СУБД;
— встраиваемые СУБД.
При файл-серверной архитектуре СУБД хранит локальную копию файлов базы данных на рабочих станциях, и периодически происходит синхронизация копии с файл сервером (рисунок 7).
Рисунок 7 — Работа файл-серверной СУБД
К достоинствам файл серверной модели относится низкая загрузка файл-сервера.
Данная модель имеет много недостатков, таких как низкая надежность и производительность при работе большого числа пользователей, затрудненность управления.
Все запросы пользователя выполняются на локальной машине, там находится копия СУБД.
К наиболее распространенным файл-серверным СУБД относятся Paradox, FoxPro, Access, dBase.
В серьезных больших системах файл-серверные СУБД на данный момент практически не используются.
Во многом для устранения большого числа недостатков файл-серверной архитектуры используются клиент-серверные СУБД.
В клиент-серверной СУБД все запросы к базе данных выполняются на сервере, СУБД так же располагается только там (Рисунок 8).
.
Рисунок 8 — Работа клиент-серверной СУБД
Достоинства клиент-серверной СУБД: высокая надежность и безопасность, централизованное управление, небольшая нагрузка на локальную сеть.
К наиболее распространенным клиент-серверным СУБД относятся Interbase (FireBird), Oracle, MySQL, MS SQL Server.
Встраиваемые СУБД, по сути, не являются самостоятельными СУБД и используются в качестве составной части какого-либо программного продукта, который использует внутреннюю базу данных. Встраиваемые СУБД фактически являются подключаемыми библиотеками.
К наиболее распространенным встраиваемым СУБД относятся Firebird Embedded, Microsoft SQL Server Compact.
В следующей главе будет произведен выбор конкретной СУБД оптимальной для разработки базы данных, работающей по сети.
Глава 2. Выбор СУБД и разработка базы данных справочника по языкам программирования
2.1 Выбор СУБД для создания базы данных в сети
По результатам рассмотренной ранее классификации СУБД можно сделать вывод о том, что файл-серверные СУБД больше удобны для локального использования, и не очень удобны для использования в сети в силу целого ряда недостатков, обозначенного ранее.
Встраиваемые СУБД используются, как правило, как части каких-либо программных продуктов, основное назначение которых не связано с работой с базами данных. Зачастую, база данных используется здесь в служебных целях самого приложения.
Наиболее подходят и предназначены для работы в сети клиент-серверные СУБД.
Наиболее востребованными коммерческими клиент-серверными СУБД являются Oracle [11], и MS SQL Server.
Первым, критерием, по которому можно сравнить две данные СУБД, является то, на каких платформах они работают. MS SQL Server работает только на Windows, Oracle работает и на Windows и на Unix-подобных системах и при этом обладает хорошей переносимостью.
СУБД Oracle также обладает большим набором функций по работе через Интернет с помощью языка Java.
Основные недостатки СУБД Oracle: сложность администрирования и высокая цена, по сравнению с MS SQL Server.
По остальным же характеристикам, таким как быстродействие, число пользователей, работающих с базой данных, работа с большими базами данными Oracle превосходит MS SQL Server.
Однако для баз данных среднего размера и при не очень большом числе пользователей, эти преимущества могут быть и не так важны, поэтому для систем баз данных среднего размера может быть выбран и MS SQL Server, тем более что он гораздо дешевле Oracle.
MS SQL Server стоит примерно 1000 $, а сервер Oracle стоит около 5000 $.
Однако для совсем не больших компаний или же в учебных целях нет большого практического смысла покупать дорогие СУБД, если существуют бесплатные СУБД, дающие возможность работы с базой данных по сети.
Для создания базы данных в сети в данной работе выбран сервер Firebird (выросший из InterBase 6.0), так как он является свободно-распространяемой (бесплатной) и кроссплатформенной (Windows, Unix) системой управления базой данных, поддерживающей язык SQL.
Язык SQL является мощным инструментом позволяющим создавать (CREATE) и удалять (DROP) таблицы базы данных, делать выборку данных (SELECT), добавлять (INSERT), удалять (DELETE), редактировать (UPDATE) данные таблиц [17].
К основным достоинствам Firebird, непосредственно повлиявшим на выбор ее в данной работе в качестве СУБД, можно отнести:
— кроссплатформенность и удобный переход от одной операционной системы к другой, перенос баз с одного сервера на другой происходит путем восстановления в новой операционной системе резервной копии базы, которая была создана в исходной операционной системе;
— бесплатность;
— низкуя требовательность к аппаратной платформе, можно использовать в качестве платформы для сервера обычный персональный компьютер;
— высокую производительность;
— мощную языковую поддержку хранимых процедур и триггеров;
— возможность резервного копирования «на лету» (не нужно останавливать сервер);
— возможность использования больших баз данных, объемом до нескольких Тбайт.
— наличие большого числа средств администрирования и разработки, в том числе IBExpert, который, забегая вперед, будет использоваться в данной работе для создания базы данных на сервере Firebird;
— большое число программных способов доступа к базе данных из различных языков и сред программирования (компоненты для Delphi, драйверы для PHP, Python, провайдер данных .NET, классы для ADO, ODBC).
Последнее достоинство фактически дает возможность выбора почти любой среды разработки, для создания приложения по работе с базой данной Firebird.
В данной работе для создания приложения выбрана среда Delphi, так как она является визуальной средой разработки и в ней наиболее хорошо проработаны компоненты для связи c Firebird, в том числе и по той причине, что предшественник сервера Firebird СУБД InterBase разработан той же фирмой (Borland), что и Delphi 7.
К основным достоинствам Delphi можно отнести следующие [21]:
— быстрая разработка приложения (визуальная среда разработки);
— один из самых быстрых компиляторов;
— достаточно высокая производительность приложений и их не большие требования к ресурсам компьютера;
— возможность создания собственных компонентов и встраивания их в среду;
— наличие большого числа компонент и способов для работы с различными базами данных, что очень важно именно для данной работы.
2.2 Проектирование и создание базы данных
Из определения базы данных следует, что она отражает в себе характеристики объектов какой-либо предметной области. Поэтому необходимо сначала определиться с предметной областью.
В данной работе взята предметная область, связанная с функциями языков программирования. Разрабатывается учебно-справочная информационная система по функциям языков программирования, которая предназначена для быстрого и удобного получения пользователем максимально точной информации по интересующим его функциям языков программирования.
Важным отличием данной системы от справки по конкретному языку программирования является включение функций из различных языков программирования, что позволяет получить всю нужную информацию в одном источнике, не затрачивая много времени на поиск необходимой информации.
Существенным достоинством разрабатываемой учебно-справочной информационной системы является возможность постоянного пополнения и расширения базы данных новыми функциями языков программирования.
Для разрабатываемой базы данных достаточно одной таблицы со следующими полями:
— название функции (Name);
— параметры функции и возвращаемое значение (PARAMETR);
— язык программирования, в котором данная функция работает (LANG);
— краткое описание работы рассматриваемой функции (DESCRIPT).
Для того чтобы обеспечить однозначную идентификацию записей в таблице базы данных вводится дополнительное поле числовое поле ID, которое должно иметь свойство уникальности и будет играть роль первичного ключа в базе. В таблице 1 представлено подробное описание полей таблицы.
Таблица 1 — Описание структуры разрабатываемой базы данных
Первичный ключ | Название | Тип | Описание | |
Да | ID | Целый | Идентификатор, автоинкрементное поле | |
NAME | Текстовый | Название | ||
PARAMETR | Текстовый | Параметры | ||
LANG | Текстовый | Язык | ||
DESCRIPT | Текстовый | Описание | ||
Далее необходимо создать базу данных и таблицу с данными полями на сервере Firebird. В данной работе это делается через средство IBExpert.
На рисунке 9 представлена база данных, созданная по описанной выше структуре в среде IBExpert с использованием системы управления базы данных Firebird.
Рисунок 9 — База данных по функциям языков программирования Для реализации автоинкрементного поля ID создан триггер, представленный на рисунке 10.
Рисунок 10 — Триггер После своего создания база данных сохранена в файле base. fdb на сервере.
После этого можно приступать к разработке приложения для работы с созданной базой данных.
Глава 3. РАРЗРАБОТКА ПРОГРАММНОГО ПРИЛОЖЕНИЯ (клиента) ДЛЯ РАБОТЫ С БАЗОЙ ДАННЫХ
3.1 Список требований Разрабатываемое приложение должно выполнять следующие функции:
— ввод функций языков программирования;
— просмотр функций языков программирования;
— редактирование функций языков программирования;
— удаление функций языков программирования;
— наличие ини-файла, в котором указывается путь к подключаемой базе данных и имя ее таблицы, чтобы иметь возможность прописать в нем сетевой путь к базе данных.
На рисунке 11 представлена структура файла config.ini.
Рисунок 11 — Структура файла config.ini.
Для реализации выше описанных требований в среде Delphi было разработано приложение.
3.2 Разработка приложения Для создания приложения в среде Delphi создан проект, исходный код которого представлен в приложении к данной работе.
Для работы с созданной базой данных на форме были использованы следующие компоненты.
Таблица 2 — Компоненты и их свойства
Компонент | Свойство | Значение | |
IBDatabase1 — для связи с БД | LoginPrompt | False — не спрашивать пароль и имя пользователя | |
PARAMS | user_name=sysdba — имя пользователя по умолчанию | ||
password=masterkey — пароль по умолчанию | |||
IBQuery1 — набор данных | DataBase | IBDatabase1 — загружает данные из БД указанной подключённой в IBDatabase1 | |
Transaction | IBTransaction1 — транзакции через IBTransaction1 | ||
IBTransaction1 — - транзакции | DefaultDataBase | IBDatabase1 — БД по умолчанию | |
ReadCommit | ReadCommitted | ||
DataSource1 — источник данных, для связи визуальных компонент и набора данных | DataSet | IBQuery1 — источник данных | |
DBGrid1 — сетка для отображения данных пользователю | DataSource | DataSource1 — источник данных | |
База данных подключается к компоненту IBDatabase автоматически на этапе запуска программы, считывая путь из ини-файла. Это сделано для того, чтобы можно было подключить новую базу данных без изменения программного кода.
BDatabase1.DatabaseName:=IniFile.ReadString ('Base', 'Path', '');
После своего создания программа была тщательно протестирована.
3.3 Описание клиентского приложения Для начала работы с программой необходимо запустить файл SystemProject.exe. На экране появляется окно программы (рисунок 12).
Рисунок 12 — Главное окно программы Добавление новой записи нажатием на кнопку «Добавить»: внизу появляется панель с полями для ввода (рисунок 13).
Рисунок 13 — Добавление данных Далее произведено редактирование последней добавленной функции, так как умышлено у нее было сделано не правильное описание. Для этого выбрана эта запись в таблице и нажата кнопка «Редактировать» и введено правильное описание «Слияние строк» вместо «СИяние строк» (рисунок 14).
Рисунок 14 — Редактирование данных Затем удалена созданная запись (рисунок 15−16).
Рисунок 15 — Подтверждение удаления данных Рисунок 16 — Запись удалена Далее произведен поиск функции strcat (рисунок 17).
Рисунок 17 — Поиск функции Далее произведен импорт базы данных в Excel, результат представлен на рисунке 18.
Рисунок 18 — Импорт базы данных В итоге все функции работы программы успешно протестированы, программа работает корректно.
Заключение
В ходе выполнения задания по производственной практике подробно рассмотрена и изучена такая актуальная тема как базы данных и системы управления базами данных.
В ходе проведения данной работы было проанализировано большое число литературных источников, касающихся баз данных и систем управления ими. В качестве источников информации использовалась и глобальная сеть Интернет.
В процессе выполнения данной работы были даны подробные определения понятий база данных и система управления базами данных. Произведена классификация баз данных и систем управления базами данных по различным признакам.
В результате выполнения данной работы сформированы рекомендации по выбору оптимальной СУБД для создания базы данных, работающей в сети.
Кроме теоритических вопросов в данной работе также произведена разработка базы данных на тему функций языков программирования, которая способна работать в сети на базе СУБД Firebird. Для создания базы данных была использована среда администрирования IBexpert.
Кроме того в среде Delphi произведена разработка приложения для работы в сети с созданной базой данных.
Таким образом, выполненная работа, носит не только теоритический характер, но ярко выраженную практическую направленность.
В заключение хотелось бы отметить, что в данной работе не был затронут аспект защиты информации в базе данных.
Данный аспект достаточно важен, так как многие базы данных содержат персональные данные, например паспортные данные, которые в соответствии с законодательством в нашей стране подлежат обязательной защите [7]. К тому же в базах данных может содержаться информация, составляющая государственную или же коммерческую тайну.
Однако, тема защиты информации в базах данных достаточно объемна и, по сути, является темой отдельной работы. Такую работу можно выполнить в перспективе.
Задачи же поставленные в рамках данной работы были выполнены в полном объеме.
Список использованной литературы Правовые и нормативные акты
1. Гражданский кодекс Российской Федерации (часть четвертая) от 18.12.2006 N 230-ФЗ (ред. от 23.07.2013) (с изм. и доп., вступающими в силу с 01.09.2013) //Собрание законодательства Российской Федерации.
2 Федеральный закон Российской Федерации от 27 июля 2006 г. N 149-ФЗ «Об информации, информационных технологиях и о защите информации». // «Российская Газета». Федеральный выпуск от 29 июля 2006 г № 4131
3 Федеральный закон Российской Федерации от 6 апреля 2011 г. N 63-ФЗ «Об электронной подписи». // «Российская Газета» — Федеральный выпуск от 8 апреля 2011 г. № 5451
4 Федеральный закон Российской Федерации от 27 июля 2006 г. N 152-ФЗ «О персональных данных». // «Российская Газета». Федеральный выпуск от 29 июля 2006 г. № 4131
5 Федеральный закон Российской Федерации от 29 июля 2004 г. N 98-ФЗ О коммерческой тайне. // «Российская Газета» — Федеральный выпуск от 5 августа 2004 г. № 3543
6 Закон РФ от 21 июля 1993 г. N 5485-I (редакция от 21.12.2013) «О государственной тайне»
7 Постановление Правительства РФ от 1 ноября 2012 г. N 1119 «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных». // «Российская Газета» — Федеральный выпуск от 7 ноября 2012 г. № 5929
8 ГОСТ Р ИСО МЭК ТО 10 032−2007: Эталонная модель управления данными. // Федеральное агентство по техническому регулированию и метрологии, 2007.
Источники на русском языке
9 Зрюмов Е. А., Зрюмова А. Г. Базы данных для инженеров. — Барнаул: АлтГТУ, 2010. — 131 с.
10 Линн Бейли. Изучаем SQL. — Спб.: Питер, 2012. — 572 с.
11 Кевин Луни, Боб Брила. Oracle Database 10g Настольная книга администратора. — М.: Лори, 2009 — 377 с.
12 Макарова Н. В., Волков В. Б. Информатика. — Спб.: Питер, 2011 — 576 с.
13 Петкович Д. Microsoft SQL Server 2008. Руководство для начинающих. — Спб.: БХВ-Петербург, 2009 — 884 с.
14 Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. — Базы данных. Учебник для высших учебных заведений (6-е изд.). — М.: Корона-Век, 2009 — 734 с.
15 Фленов М. Библия Delphi, 2-е издание.- Спб.: БХВ-Петербург, 2009 — 637 с.
Источники на иностранных языках
16 Celko J. Joe Celko’s SQL for Smarties: Advanced SQL Programming 3rd edition. — Morgan Kaufmann, 2010. — 839 p
17 Celko J. Joe Celko’s Trees and Hierarchies in SQL for Smarties PDF Second Edition. — Morgan Kaufmann, 2012. — 278 p.
Электронные ресурсы
18 Delphi 7 Обоснование выбора. [Электронный ресурс]. URL: http://barsicne.narod.ru/publ/delphi7_obosnovanie_vybora/1−1-0−1 (дата обращения 21.07.2014)
19 С. Д. Кузнецов. Объектно-ориентированные базы данных — основные концепции, организация и управление: краткий обзор. [Электронный ресурс]. URL: http://citforum.ru/database/articles/art24.shtml (дата обращения 21.07.2014)
20 Сравнительный анализ СУБД. [Электронный ресурс]. URL: http://orastack.narod.ru/index_file/onebd.html (дата обращения 21.07.2014)
21 Преимущества Delphi для программирования. [Электронный ресурс]. URL: http://www.islamnews.ru/release-98 735.html (дата обращения 21.07.2014)
Приложение Исходный код
unit mainunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IniFiles, DB, IBDatabase, Grids, DBGrids, IBCustomDataSet,
IBQuery, StdCtrls, ExtCtrls, ComObj;
type
TForm1 = class (TForm)
IBDatabase1: TIBDatabase;
IBQuery1: TIBQuery;
IBTransaction1: TIBTransaction;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
ButtonExit: TButton;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ButtonOK: TButton;
IBQuery2: TIBQuery;
IBTransaction2: TIBTransaction;
ButtonEdit: TButton;
Button2: TButton;
ButtonDel: TButton;
RadioGroup1: TRadioGroup;
Edit5: TEdit;
Button3: TButton;
procedure FormCreate (Sender: TObject);
procedure ButtonExitClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure Button1Click (Sender: TObject);
procedure ButtonOKClick (Sender: TObject);
procedure ButtonEditClick (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Grid ();
procedure ButtonDelClick (Sender: TObject);
procedure RadioGroup1Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tabl: string; // переменная для хранения имени таблицы БД
insert:boolean;
implementation
{$R *.dfm}
procedure TForm1. Grid (); //Меняем названия у столбцов на русские
Begin
DBGRid1.Columns[0]. Visible:= false; // скрываем столбец Номер
DBGRid1.Columns[1]. Title. Caption:= 'Название' ;
DBGRid1.Columns[2]. Title. Caption:= 'Параметры функции' ;
DBGRid1.Columns[3]. Title. Caption:= 'Язык' ;
DBGRid1.Columns[4]. Title. Caption:= 'Описание' ;
end;
procedure TForm1. FormCreate (Sender: TObject); // При создании формы подключаемся к БД
var
IniFile:Tinifile;
begin
//общаемся к ини-фалйлу config. ini, который хранится в каталоге с программой
//это нужно, чтобы можно было подключить другую базу, прописав к ней путь в config. ini
try
IniFile:= TIniFile. Create (ExtractFilePath (Application.ExeName)+'config.ini');
// и считываем оттуда (из секции Base параметр Path) путь к БД в IBDatabase1
IBDatabase1.DatabaseName:=IniFile.ReadString ('Base', 'Path', '');
IBDatabase1.Connected:=true; //присоединяем БД
//считываем имя таблицы из ини файла
tabl:=IniFile.ReadString ('Base', 'Name', '');
//загружаем данные из БД
with IBQuery1 do
begin
Sql.Text:='select * from ' + tabl;
open;
end;
Panel1.Visible:=false;
grid (); //Меняем названия у столбцов на русские
insert:=false;
IniFile.Free; //освобождаем память
except // Если произошла ошибка
on E: Exception do
begin //выводим об этом сообщение
Application.MessageBox (PChar (E.Message), 'Ошибка', MB_ICONERROR);
Halt; //закрываем программу в случае ошибки
end;
end;
end;
procedure TForm1. ButtonExitClick (Sender: TObject); //Выход из программы
begin
Close;
end;
//При закрытии формы закрываем БД (отключаем с ней связь)
procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);
begin
IBQuery1.Close;
IBDatabase1.Connected:=false;
end;
procedure TForm1. Button1Click (Sender: TObject);
begin
Panel1.Visible:=true;
insert:=true;
end;
//При нажатии на кнопку готово, на панели вставки/редактирования записи
procedure TForm1. ButtonOKClick (Sender: TObject);
begin
if Edit1. Text='' then
Begin
ShowMessage ('Введите наименование функции');
exit;
End;
if Edit2. Text='' then
Begin
ShowMessage ('Введите параметры функции');
exit;
End;
if Edit3. Text='' then
Begin
ShowMessage ('Введите язык');
exit;
End;
if Edit4. Text='' then
Begin
ShowMessage ('Введите описание функции');
exit;
End;
if insert then //если вставляем запись…
Begin
try
with IBQuery2 do
Begin //QuotedStr — Ставит кавычки
SQl.Text:='insert into '+tabl+ '(NAME, PARAMETR, LANG, DESCRIPTION) values ('
+QuotedStr (Edit1.Text)+','+QuotedStr (Edit2.Text)+
','+QuotedStr (Edit3.Text)+','+QuotedStr (Edit4.Text)+');';
Transaction.StartTransaction;
ExecSQL; //выполняем запрос ExecSQL, для всех типов кроме select
Transaction.Commit; //подтверждаем транзакцию
Transaction.Active:=false;
end;
IBQuery1.Close; //обновляем Query
IBQuery1.Open;
grid ();
except //если произошла ошибка
if IBQuery2. Active then
IBQuery2.Transaction.Rollback; //откатываем транзакцию
end;
end
else //Если запись редактируем
Begin
try
with IBQuery2 do
Begin //QuotedStr — Ставит кавычки
SQl.Text:='update '+tabl+' set NAME='+ QuotedStr (Edit1.Text)+', PARAMETR='+
QuotedStr (Edit2.Text)+', LANG='+QuotedStr (Edit3.Text)+
', DESCRIPTION='+ QuotedStr (Edit4.Text)+' where ID='+IBQuery1.FieldByName ('ID').AsString;
Transaction.StartTransaction;
ExecSQL; //выполняем запрос ExecSQL, для всех типов кроме select
Transaction.Commit; //подтврждаем транзакцию
Transaction.Active:=false;
end;
IBQuery1.Close; //обновляем Query
IBQuery1.Open;
grid ();
except //если произошла ошибка
if IBQuery2. Active then
IBQuery2.Transaction.Rollback; //откатываем транзакцию
end;
end;
Panel1.Visible:=false;
end;
procedure TForm1. ButtonEditClick (Sender: TObject);
begin
insert:=false; //указываем что мы редактируем, а не вставляем запись
Edit1.Text:= IBQuery1. FieldByName ('Name').AsString;
Edit2.Text:= IBQuery1. FieldByName ('PARAMETR').AsString;
Edit3.Text:= IBQuery1. FieldByName ('LANG').AsString;
Edit4.Text:= IBQuery1. FieldByName ('DESCRIPTION').AsString;
Panel1.Visible:=true; // показываем панель с полями
end;
//отмена
procedure TForm1. Button2Click (Sender: TObject);
begin
Panel1.Visible:=false;
end;
procedure TForm1. ButtonDelClick (Sender: TObject); // Удалить запись
begin
if MessageDlg ('Действительно хотите удалить запись из БД?', mtConfirmation, mbOKCancel, 0)= mrOK
then
Begin
try
with IBQuery2 do
Begin //QuotedStr — Ставит кавычки
SQl.Text:='delete from '+tabl+' where ID='+IBQuery1.FieldByName ('ID').AsString;
Transaction.StartTransaction;
ExecSQL; //выполняем запрос ExecSQL, для всех типов кроме select
Transaction.Commit; //подтврждаем транзакцию
Transaction.Active:=false;
end;
IBQuery1.Close; //обновляем Query
IBQuery1.Open;
grid ();
ShowMessage ('Запись удалена успешно');
except //если произошла ошибка
if IBQuery2. Active then
IBQuery2.Transaction.Rollback; //откатываем транзакцию
end;
end;
end;
procedure TForm1. RadioGroup1Click (Sender: TObject); // При выборе радиокнопок на панели поиска
begin
if RadioGroup1. ItemIndex = 0
then
begin // При выборе «Отбразить все записи»
with IBQuery1 do
begin
Sql.Text:='select * from ' + tabl;
open;
end;
end
else
begin // При выборе «Поиск функции»
with IBQuery1 do
begin
Sql.Text:='select * from ' + tabl + ' where NAME=' + QuotedStr (Edit5.Text);
open;
end;
end ;
grid ();
end;
procedure TForm1. Button3Click (Sender: TObject);
var
i, j, index: Integer;
ExcelApp, sheet: Variant;
begin
ExcelApp := CreateOleObject ('Excel.Application'); // для использования CreateOleObject необходимо подключить модуль ComObj
ExcelApp.Visible := true;
ExcelApp.WorkBooks.Add (-4167);
ExcelApp.WorkBooks[1]. WorkSheets[1].name := 'Otchet';
sheet:=ExcelApp.WorkBooks[1]. WorkSheets['Otchet'];
index:=3;
//Вторая строка будет отображаться жирным (заголов таблицы)
ExcelApp.ActiveWorkBook.ActiveSheet.Rows[2]. Font. Bold:=true;
//Вывод шапки таблицы
sheet.cells[2,1]: = 'Имя ';
sheet.cells[2,2]: = 'Параметры';
sheet.cells[2,3]: = 'Язык';
sheet.cells[2,4]: = 'Описание';
//вывод данных
//DBGrid1.DataSource.DataSet.First;
for i:=1 to DBGrid1.DataSource.DataSet.RecordCount do
begin
for j:=2 to DBGrid1. FieldCount do
sheet.cells[index, j-1]: =DBGrid1.fields[j-1].asstring;
inc (index);
DBGrid1.DataSource.DataSet.Next; //переход к следующей строке грида
end;
end;
end.