Учебная работа. Курсовая работа: Система управления базами данных
1.1 Firebird
1.2 Главные свойства
1.3 Требования к аппаратному обеспечению
1.4 Версии сервера
1.5 Лицензирование
2. Конструкторская часть
2.1 Создание таблицы
2.2 Создание триггеров
2.3 Создание генераторов
2.4 Создание Хранимых процедур
2.5 Разработка приложения
2.6 Блок схема
3. Технологическая часть
3.1 Управление юзеру
4. Заключение
Перечень литературы
Листинг программки
Введение
InterBase — баз данных, имеющий 20-летнюю историю(сотворен в 1985 году). Инновации, предложенные в этом сервере, не только лишь остаются животрепещущими до сего времени, да и начинают обширно внедряться в других СУБД. Главный индивидуальностью функциональности InterBase является версионность. Механизм версионности в первый раз был предложен (в теории) Д.П. Ридом в 1978 году, и дальше идеи многоверсионного доступа в СУБД были описаны Ф.Бернштейном и Н. Гудменом в 1981 году. Джим Старки, создатель InterBase, разработал модель версионности для собственной СУБД без помощи других в интервале меж 1981 и 1984 годом.
Механизм версионности не считая InterBase фактически нигде не употреблялся, и потихоньку начал внедряться в коммерческих серверах не наиболее 10-ти лет вспять. На текущий момент в той либо другой степени версионный механизм поддерживают не считая InterBase и Firebird: Oracle, PostgreSQL, также MS SQL 2005. MySQL также планирует применять версионный «движок«.
На рисунке отображены этапы развития InterBase и Firebird с 2000 года по 2006г. Специально отмечено возникновение в 2001 году еще 1-го клона InterBase –Yaffil, который базируется на начальных текстах Firebird 1.0. Этот был разработан в Санкт-Петербурге, и имел целью воплотить оптимизацию разных качеств работы СУБД, также обеспечить наиболее легкий переход с InterBase версий 4.x и 5.x. В 2003 году было объявлено о слиянии Yaffil с Firebird, для исключения конкуренции и объединения функциональности. Тем не наименее, Yaffil до сего времени существует как отдельный проект.
InterBase начал интенсивно употребляться в Рф для построения разных систем в 1992-1994 году, когда был выпущен InterBase 4.0 for Windows.С того времени InterBase и Firebird употребляются массово для решения задач биллинга, бухгалтерии, складов, ERP, CRM, банковского ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств). По нашим оценкам примерное число разрабов, использующих InterBase, Firebird и Yaffil в Рф и СНГ (Содружество Независимых Государств — региональная международная организация (международный договор), призванная регулировать отношения сотрудничества между государствами, ранее входившими в состав СССР) составляет около 100 тыщ.
По мере роста числа систем на InterBase и Firebird вырастает и размер баз данных. С одной стороны, это повышение баз данных промышленных систем, которые работают несколько лет попорядку, а с иной стороны, это новейшие системы, вначале направленные на большенный размер данных.В 2002 году число систем с базами размером от 1 до 8 гб оценивалось как 15% от общего числа систем, а с огромным объемом – на уровне не наиболее 3-х процентов, при этом в спектре конкретно от 8 до 980 гб, другими словами, такие системы почаще были эксклюзивными. на данный момент ситуация поменялась, и даже количество БД объемом от 10 до 50 гб составляют уже 15 процентов, при этом по сути спектр размера таковых баз данных от 15 до 100 гб. Рост этот неизменный, в том числе он обоснован уменьшением издержек на поддержку таковых размеров со стороны аппаратного обеспечения. В истинное время средний размер баз данных для систем на InterBase и Firebird составляет от 2 до 20 гб (отсюда можно прийти к выводу, что бесплатные варианты коммерческих СУБД Oracle, MS SQL и др. не являются соперниками InterBase и Firebird в таковых системах, т.к. искуственно ограничивают допустимый «безвозмездно» размер базы данных на уровне 4 гб).
Инструменты разраба:
В поставку InterBase и Firebird непременно заходит набор утилит командной строчки, которые в главном употребляются разрабами и админами для автоматизации запасного копирования и остальных операций. Не считая того, эти утилиты кроссплатформенные. Для сотворения БД, таблиц, процедур и т.п. в InterBase и Firebird принято применять посторонние инструменты, которые владеют высочайшей функциональностью — IBExpert, IBManager, IB/FB Developer Studio, DatabaseWorkbench и др. Большая часть этих инструментов бесплатны для Рф, а их свойство, функциональность и удобство использования часто превосходят подобные свойства инструментов другихк коммерческих СУБД (к примеру в отношении MS SQL).
С момента выпуска InterBase 6.5 Borland производит лишь платную версию сервера с закрытым кодом. на данный момент существует версия InterBase 7.5, которая владеет довольно высочайшей функциональностью и производительностью, в особенности на многопроцессорных серверах. InterBase выпускается под платформы Windows, Linux и Solaris (Sparc).
В реальный момент выпущена версия InterBase 2007 с поддержкой журналирования, point in time recovery, Online dump и иной функциональностью нужной для работы с базами данных размером от 5 до 150 и наиболее гб.
Невзирая на расхождения меж крайними версиями InterBase и Firebird, они оба наследуют все те положительные черты начальной СУБД InterBase, которые обеспечили высшую популярность этого сервера. Наиболее того, здоровая процесс установки с мгновенной готовностью к работе, малые требования к оборудованию, широкий диапазон компонент и драйверов для различных сред разработки, возможность обслуживания огромных баз данных и огромного числа юзеров, также архитектура многоверсионности, упрощающая логику приложений — все это нужно как начинающими, так и опытнейшеми разрабами, и дозволяет им удачно строить все больше и больше новейших систем.
1. Иследовательская часть
1.1 Firebird
(FirebirdSQL) — малогабаритная,кроссплатформенная,вольная система управления базами данных (СУБД), работающая наGNU/Linux,Microsoft Windows и различных Unix платформах.
В качестве преимуществ Firebird некие создатели выделяют возможность параллельной обработки, высшую эффективность и сильную языковую поддержку для хранимых процедур и триггеров.
Посреди недочетов числятся отсутствие кеша результатов запросов, индексов fulltext для полнотекстового поиска.
Firebird является сервером баз данных. один сервер Firebird может обрабатывать несколько независящих баз данных, каждую с обилием пользовательских соединений. И, что важно, он является вполне вольным от лицензионных отчислений даже для коммерческого использования.
1.2 Главные свойства
Соответствие требованиям A.C.I.D: Firebird изготовлен специально, чтоб удовлетворять требованиям «атомарности, целостности, изоляции и надежности» транзакций («Atomicity, Consistency, Isolation and Durability») .
Версионная архитектура: Основная изюминка Firebird — версионная архитектура, позволяющая серверу обрабатывать разные версии одной и той же записи в хоть какое время таковым образом, что любая транзакция лицезреет свою версию данных, не мешая примыкающим («читающие транзакции не заблокируют пишущие, а пишущие не заблокируют читающих»).
Хранимые процедуры — это процедуры и функции, хранящиеся конкретно в базе данных в откомпилированном виде и которые могут запускаться юзерами либо приложениями, работающими с базой данных. Хранимые процедуры обычно пишутся или на особом процедурном расширении языка SQL (к примеру, PL/SQL для ORACLE либо Transact-SQL для MS SQL Server), либо на неком всепригодном языке программирования, к примеру, C++, с включением в код операторов SQL в согласовании со особыми правилами такового включения. Основное предназначение хранимых процедур — реализация бизнес-процессов предметной области. Используя язык PSQL (процедурный SQL) Firebird, может быть создавать сложные хранимые процедуры для обработки данных вполне на стороне сервера. Для генерации отчетов в особенности комфортны хранимые процедуры с возможностью подборки, возвращающие данные в виде набора записей. Такие процедуры можно применять в запросах буквально так же как и обыденные таблицы.
Действия: Хранимые процедуры и триггеры могут генерировать действия, на которые может подписаться клиент, открывая специально настроенный TCP/IP порт.
Генераторы: Мысль генераторов (последовательностей) делает вероятной ординарную реализацию автоинкрементных полей, и не только лишь их. Генераторы являются счётчиками хранимыми в базе данных, работающими независимо от транзакций. Они могут быть применены для разных целей, таковых как генерация первичных ключей, управление продолжительными запросами в примыкающих транзакциях.
Полный контроль за транзакциями: Одно клиентское приложение может делать огромное количество одновременных транзакций. В различных транзакциях могут быть применены различные уровни изоляции. протокол двухфазного доказательства транзакций обеспечивает гарантированную устойчивость при работе с несколькими базами данных. Так же доступны жизнеутверждающее блокирование данных и точки сохранения транзакций.
Запасное копирование на лету: Для запасного копирования нет надобности останавливать . процесс запасного копирования сохраняет состояние базы данных на момент собственного старта, не мешая при всем этом работе с базой. Не считая того, существует возможность создавать инкрементальное запасное копирование БД.
Триггеры — это хранимые процедуры, связанные с некими событиями, происходящими во время работы базы данных. В качестве таковых событий выступают операции вставки, обновления и удаления строк таблиц. Если в базе данных определен некий триггер, то он запускается автоматом постоянно при появлении действия, с которым этот триггер связан. Весьма принципиальным будет то, что юзер не может обойти триггер. Триггер срабатывает независимо от того, кто из юзеров и каким методом инициировал событие, вызвавшее пуск триггера. Таковым образом, основное предназначение триггеров — автоматическая поддержка целостности базы данных. Триггеры могут быть как довольно ординарными, к примеру,поддерживающими ссылочную целостность, так и достаточно сложными, реализующими какие-либо сложные ограничения предметной области либо сложные деяния, которые должны произойти при пришествии неких событий. Для каждой таблицы может быть предназначение нескольких триггеров, срабатывающих до либо опосля вставки, обновления либо удаления записей. Для триггеров употребляется язык PSQL, позволяя заносить исходные значения, инспектировать целостность данных, вызывать исключения. В Firebird 1.5 возникли «всепригодные» триггеры, дозволяющие в одном триггере обрабатывать вставки, обновления и удаления записей таблицы.
Декларативное описание ссылочной целостности: Обеспечивает непротиворечивость и целостность многоуровневых отношений «master-detail» меж таблицами
Наборы знаков: Firebird поддерживает огромное количество интернациональных наборов знаков (включая Unicod) с обилием вариантов сортировки.
1.3 Требования к аппаратному обеспечению
Firebird удачно работает на практически любом аппаратном обеспечении, и на широком диапазоне операционных систем. Может употребляться даже не весьма массивное оборудование, в особенности под GNU/Linux. И как в хоть какой СУБД, на производительность влияют: количество памяти, скорость работы дисковой подсистемы, и т. д. Советы для выбора аппаратного обеспечения зависят от требования к системе, предсказуемого размера базы данных, количества юзеров, и т. д. Вы сможете начать с малой конфигурации и дальше расширять ее по мере надобности.
Физические ограничения:
Firebird поддерживает огромные базы данных. Базы данных могут быть размещены в нескольких файлах, предельный размер которых зависит от операционной системы. Теоретический предел в истинное время составляет 64TB для 1-го файла базы данных, таковым образом, главные ограничения накладываются файловой системой и местом на твердом диске.
1.4 Версии сервера
Существует три разных взаимозаменяемых версии сервера, имеющих любая свои достоинства.
Классик (один процесс на одно соединение; поддержка многопроцессорных машин).
Суперсервер (все соединения употребляют один процесс, наименьшие требования к памяти при большем быстродействии; для однопроцессорных машин)
Встраиваемая (Embedded) версия (весь движок содержится в одной библиотеке с именованием клиентской библиотеки сервера, совершенно подступает для однопользовательских систем, не просит установки)
Все версии употребляют однообразный формат файла базы данных, таковым образом в хоть какой момент можно переключиться на другую версию.
1.5 Лицензирование
Firebird выпускается под критериями IPL(InterBase Public License) и IDPL (Initial Developer’s Public License), которые совпадают с критериями Mozilla Public License 1.1. Firebird вполне бесплатен для использования и распространения. Раскрытие начального кода вашего продукта не требуется, вне зависимости от применяемой модели лицензирования. Но, в случае, если вы видоизменили начальный код сервера, то нужно создать легкодоступным начальный код ваших модификаций.
средства разработки и администрирования
Для Firebird доступно огромное количество инструментальных средств, бесплатных и коммерческих. Есть средства разработки, средства администрирования, библиотеки наружных функций(UDF), средства доступа.
Поддержка
Компания IBPhoenix(В Рф, к примеру компания iBase) дают профессиональную поддержку, выполняемую людьми с долголетним опытом. На веб-сайтах IBPhoenix и iBase.ru находится огромное количество технической инфы, инструкций и документации
.
2. Конструкторская часть
Создание базы данных.
Для сотворения базы данных употреблялся Ibexpert:
утилита администрации InterBase (поддерживет InterBase Firebird Yaffil) Работает сразу с несколькими базами данных. Содержит редакторы для всех объектов БД с синтаксической подсветкой, SQL редактор с историей запросов и возможностью фонового выполнения запросов, отладчик хранимых процедур и триггеров, поиск в метаданных, полное и частичное извлечение данных и метаданных, анализатор зависимостей объектов баз данных, отчеты по метаданным, менеджеры юзеров и пользовательских льгот, экспорт данных в разные форматы.
2.1 Создание таблицы
Таблица – главный объект для хранения инфы в реляционной базе данных. Она состоит из содержащих данные строк и столбцов, занимает в базе данных физическое место и быть может неизменной либо временной. Поле, также называемое в реляционной базе данных столбцом, является частью таблицы, за которой закреплен определенный тип данных. Любая таблица базы данных обязана содержать хотя бы один столбец. Строчка данных – это запись в таблице базы данных, она включает поля, содержащие данные из одной записи таблицы.
Основное в команде сотворения таблицы – определение имени таблицы и описание набора имен полей, которые указываются в соответственном порядке. Не считая того, данной командой оговариваются типы данных и размеры полей таблицы.
Ключевое слово NULL употребляется для указания того, что в данном столбце могут содержаться значения NULL. Значение NULL различается от пробела либо нуля – к нему прибегают, когда нужно указать, что данные недосягаемы, опущены либо недопустимы. Если обозначено ключевое слово NOT NULL, то будут отклонены любые пробы поместить наличие главного слова NULL.
CREATE GENERATOR GEN_GORODA_ID;
CREATE TABLE GORODA (
ID_GOR INTEGER NOT NULL,
NAZVANIE VARCHAR(30) NOT NULL,
DOLGOTA INTEGER,
SHIROTA INTEGER,
ID_STR INTEGER NOT NULL);
при помощи этого кода создается таблица городка, она состоит из последующих столбцов:
id_gor – индентефикатор городка, данное поле не быть может пустым.
nazvanie- это поле содержит заглавие городка, оно не может превосходить 30 знаков.
id_str – индентификатор страны к которой принадлежит город.
dolgota- долгота на которой находится данный город.
shirota- широта на которой находится данный город.
CREATE GENERATOR GEN_STRANA_ID_STR;
CREATE TABLE STRANA (
ID_STR INTEGER NOT NULL,
NAZVANIE VARCHAR(30) NOT NULL,
STOLICA VARCHAR(30) NOT NULL,
NASELENIE INTEGER);
Таблица страны:
id_str – индентификатор страны
nazvanie- это поле содержит заглавие страны
stolica – в данном поленаходится столица избранной страны
naselenie- население данной страны(в млн).
CREATE TABLE LOG (
«WHEN» TIMESTAMP,
«User» VARCHAR(20),
«ACTION» CHAR(3));
Таблица лог: данная таблица содержит информацию о том Кто? Когда? и что сделал(удалил,изменил,вставил)?
When- дата дейстивя;
User— кто совершает деяния;
Action- указывает действие которое совершает юзер
2.2 Создание триггеров
REATE TRIGGER TRIG_AI_GOR FOR GORODA
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
INSERT INTO log VALUES (current_timestamp, current_User, ‘INS’);
END
Данный триггер смотрит за действием вставка, если юзер добавляет новое значение в таблицу goroda, триггер автоматом записывает в таблицу LOG имя юзера и дату.
CREATE TRIGGER TR_AD_GOR FOR GORODA
ACTIVE AFTER DELETE POSITION 0
AS
BEGIN
INSERT INTO log VALUES (current_timestamp, current_User, ‘DEL’);
END
Данный триггер отвечает за удаление, если юзер удалил значение из таблицы goroda, триггер автоматом записывает в таблицу LOG имя юзера и дату.
CREATE TRIGGER TR_AU_GOR FOR GORODA
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
INSERT INTO log VALUES (current_timestamp, current_User, ‘UPD’);
END
Данный триггер смотрит за конфигурацией, если юзер изменил хоть какое поле из таблицы goroda, триггер автоматом записывает в таблицу LOG имя юзера и дату.
2.3 Создание генераторов
CREATE GENERATOR GEN_GORODA_ID;
SET GENERATOR GEN_GORODA_ID TO 24;
CREATE GENERATOR GEN_STRANA_ID_STR;
SET GENERATOR GEN_STRANA_ID_STR TO 15;
Данные генераторы нужны для сотворения триггеров на автоинкремент.
В их можно указать изначальное
CREATE TRIGGER TRIG_GORODA FOR GORODA
ACTIVE BEFORE INSERT POSITION 0
as
begin
if(new.id_gor is null) then new.id_gor = gen_id(gen_goroda_id,1);
end
Данный триггер автоматом делает индентификационный номер всякого новейшего городка в таблице goroda.
CREATE TRIGGER TRIG_STRANA FOR STRANA
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
IF (NEW.Id_str IS NULL) THEN NEW.Id_str = GEN_ID(gen_strana_id_str,1);
END
Тоже самое делает и ‘тот триггер.лишь для таблицы strana,отметим что индентификационный номер каждой новй страны либо городка возрастает на 1.
2.4 Создание Хранимых процедур
CREATE PROCEDURE STRANA_1
RETURNS (
STRANA_S VARCHAR(30),
GOROD_G VARCHAR(30),
NASELENIE_S INTEGER)
AS
begin
for select strana.nazvanie,goroda.nazvanie,strana.naselenie
from strana,goroda
where(strana.id_str=goroda.id_str)
into :strana_s,:gorod_g,:naselenie_s
do suspend;
end
Данная процедура производит подборку из таблиц Strana и Goroda.
В данном варианте при выполнении хранимой процедуры будут показаны заглавие государств,городов,а так же население государств. Подборка осуществляется по индентификатору страны.
2.5 Разработка приложения для базы данных при помощи Borland Delphi
Основыне составляющие которые использовались для сотворения приложения:
IBDatabase- Компонент TDatabase дозволяет более отлично управлять подключениями к базам данных. Это управление включает:
— создание неизменного подключения к базе данных;
— отмену установленной по дефлоту регистрации на сервере;
— создание псевдонима BDE на уровне приложения;
— управление транзакциями и определение уровней их разграничения.
IBTransaction- компонент IBTransaction, который будет употребляться в качестве умолчательного для выполнения разных операций IBDatabase. Клиентская часть InterBase допускает выполнение всех действий лишь в контексте транзакции. Потому если вы смогли получить доступ к данным без очевидного вызова IBTransaction.StartTransaction, то означает где то в недрах IBX этот вызов произошел автоматом. Такое работы приложений с базой данных лучше управлять транзакциями вручную, другими словами очевидно вызывать способы StartTransaction, Commit и Rollback компонента TIBTransaction.
IBDataSet- Предназначение компонента: буферизация записей, избираемых оператором SELECT, для представления этих данных в Grid, также для обеспечения «редактируемости» записи методом автоматического либо ручного задания запросов Insert, Delete и Update.
DataSource- Свойство DataSet обеспечивает связь меж компонентом, представляющим из себя таблицу либо запрос, и компонентами, созданными для доступа к записям. наличие этого характеристики дозволяет выбирать источник данных. к примеру, база данных быть может организована таковым образом, что таблица, состоящая из огромного числа записей, разбита на несколько подтаблиц, имеющих схожую структуру. В этом случае в приложении каждой подтаблице будет соответствовать собственный компонент Table, а выбор определенной подтаблицы можно выполнить установкой значения характеристики DataSet.
PageControl- Компонент Т PageControl может содержать несколько перкрывающих друг дружку панелей класса TtabSheet. Любая панель выбирается связанной с ней закладкой и может содержать собственный набор помещенных на нее компонент.
DBGrid- омпонент DBGrid обеспечивает время работы программки.
PopupMenu- контекстное меню.
2.6 Блок схема
3. Технологическая часть
3.1 Управление юзеру
Для того, чтоб открыть приложение базы данных нужно двойным кликом мыши надавить на ярлычек .
Опосля пуска приложения покажется основное окно программки
Для прибавления новейших данных нужно надавить на клавишу New, опосля что покажется доп окно в которое нужно ввести новейшие данные.
Для того чтоб измененить уже имеющиеся данные, нужно избрать интересующую запись и надавить клавишу Change, опосля что покажется доп окно в каком можно поменять данные. Опосля внесенных конфигураций нужно надавить клавишу Save для сохранения, или Cancel для отмены.
Для удаления имеющихся записей, нужно избрать ту запись,которую следует удалить и надавить клавишу Delete.
Так же в базе данных существует поиск по наименованию страны(городка).
Для того,чтоб выполнить поиск, нужно ввести заглавие страны(городка) в соответственное поле и надавить клавишу Search.
Для того чтоб скопировать нужные данные из таблицы , необходимо зажав клавишу Shift левой кнопкой мыши, избрать интересующие записи, опосля что надавить правой клавишей мыши для вызова контекстного меню и избрать Copy.
В базе данных ведется лог событий таблицы городка. Все конфигурации показываются в заклдаке Log_Goroda.
4. Заключение
В данной работе были коротко описаны главные свойства системы управления базами данных. Определены главные классы объектов БД, которые имеют делом в критериях повсевременно изменяющегося рынка, стремящихся в очень недлинные сроки получить правильное решение.
Разработанное приложение производит главные операции: добавление, изменение, удаление данных. Разработан поиск по наименованию государств (городов).Может быть копирование данных из таблицы. Сотворена лог-таблица, в какой ведется учет конфигурации данных.
Перечень литературы
1. www.ibase.ru;
2. Фаронов В.В. Delphi 6. Учебный курс. Москва 2003г.
3. Шупрута В.В. Delphi 2005.
4. Петр Дархвелидзе, Евгений Марков Программирование в Delphi7 СПб, 2003г.
5. megalib.com
Листинг программки
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, IBCustomDataSet, IBDatabase, StdCtrls,
ComCtrls, Buttons, Mask, DBCtrls, Menus, QClipbrd;
type
TForm1 = class(TForm)
IBDatabase1: TIBDatabase;
IBTransaction1: TIBTransaction;
IBDataSet1: TIBDataSet;
DataSource1: TDataSource;
DataSource2: TDataSource;
IBDataSet2: TIBDataSet;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Edit2: TEdit;
Label2: TLabel;
BitBtn8: TBitBtn;
TabSheet3: TTabSheet;
DBGrid3: TDBGrid;
DataSource3: TDataSource;
IBDataSet3: TIBDataSet;
PopupMenu1: TPopupMenu;
copy1: TMenuItem;
delete1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure copy1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, unit5;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if ibdataset2.Locate(‘NAZVANIE’,Edit2.Text,[loPartialKey]) then form2.Show
else
showmessage(‘Не найдено’);
//form1.ibdataset2.insert;
//form2.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.IBDataSet1.Post;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ibdataset1.Edit;
//ibdataset1.Post;
form3.Show;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
form1.IBDataSet1.Insert;
//form1.IBDataSet1.Post;
form3.Show;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ibdataset2.Insert;
//ibdataset2.Post;
form2.Show;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
if MessageDlg (‘Подтвердите удаление записи’,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
ibdataset1.Delete
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
ibdataset2.Edit;
form2.Show;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
if MessageDlg (‘Подтвердите удаление записи’,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
ibdataset2.Delete;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
if ibdataset1.Locate(‘NAZVANIE’,Edit1.Text,[loPartialKey]) then form3.Show
else
showmessage(‘Не найдено’);
end;
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
Form4.show;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ibdataset1.Open;
ibdataset2.Open;
end;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
form5.Show;
form5.IBDataSet1.Open;
end;
procedure TForm1.DBGrid2DblClick(Sender: TObject);
begin
form5.Show;
form5.IBDataSet1.Open;
end;
procedure TForm1.copy1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if DBGrid2.SelectedRows.Count>0 then
with DBGrid2.DataSource.DataSet do
for i:=0 to DBGrid2.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid2.SelectedRows.Items[i]));
for j := 0 to FieldCount-1 do
begin
if (j>0) then s:=s+’, ‘;
s:=s+Fields[j].AsString;
end;
s:= s+#13+#10;
end;
Clipboard.AsText := s;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Mask, Buttons;
type
TForm2 = class(TForm)
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
form1.IBDataSet2.Post;
form2.Close;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
form2.Close;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Mask, DBCtrls;
type
TForm3 = class(TForm)
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses unit1;
{$R *.dfm}
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
form1.IBDataSet1.Post;
form3.Close;
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
form3.Close;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm4 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses unit1; {$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
Form1.IBDatabase1.Params.Clear;
Form1.IBDatabase1.Params.Add(‘User_name=’+Edit1.Text);
Form1.IBDatabase1.Params.Add(‘Password=’+Edit2.Text);
Form1.IBDatabase1.Params.Add(‘lc_ctype=WIN1251’);
Form1.IBDatabase1.Connected:=True;
Form1.IBTransaction1.StartTransaction;
Form1.IBDataSet1.Open;
Form1.IBDataSet2.Open;
Form1.IBDataSet3.Open;
form4.Close;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, IBCustomDataSet, Grids, DBGrids;
type
TForm5 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
IBDataSet1: TIBDataSet;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses unit1;
{$R *.dfm}
procedure TForm5.FormCreate(Sender: TObject);
begin
end;
end.
]]>