Организация автоматизации учета на предприятиях

СОДЕРЖАНИЕ

	

		Введение

		1. Теоретический раздел

		1.1. Постановка задачи

		1.1.1. Описание входной информации

		1.1.2.Описание выходной информации

		1.2. Схема и описание схемы алгоритма задачи

		1.2.1. Схема и описание схемы разработки проекта

		1.2.2 Схема и описание схемы алгоритма программы

		1.3. Обоснование выбора языка программирования

		1.4. Описание операционной системы

		1.5. Описание структуры базы данных

		2. Экспериментальный раздел

		2.1. Описание процесса отладки программы

		2.2. Характеристика программы

		2.3. Контрольный пример

		2.4. Инструкция пользователя

		Заключение

		Литература

		Приложение

	
Введение



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

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

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

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

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

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

Компьютеры давно и прочно вошли в такие области управления, как бухгалтерский учет, управление складом, ассортиментом и закупками. Однако современный бизнес требует гораздо более широкого применения информационных технологий в управлении предприятием. Жизнеспособность и развитие информационных технологий объясняется тем, что современный бизнес крайне чувствителен к ошибкам в управлении. Интуиции, личного опыта руководителя и размеров капитала уже мало для того, чтобы быть первым. Для принятия любого грамотного управленческого решения в условиях неопределенности и риска необходимо постоянно держать под контролем различные аспекты финансово-хозяйственной деятельности, будь то торговля, производство или предоставление каких-либо услуг. Поэтому современный подход к управлению предполагает вложение средств в информационные технологии.


Теоретический раздел



1.1. Постановка задачи



Основной задачей данного курсового проекта является разработка базы данных и соответствующего приложения для автоматизации ведения кадрового учёта некоторого предприятия. Конечная цель этой задачи формирование таблицы анкетных данных. В программе используется много информации, и ее нужно где то хранить. Поэтому мы будем использовать базу данных. Очевидно, что первой задачей и является разработка базы данных для хранения всей необходимой информации. В зависимости от расположения программы, использующей данные, и самих данных, а также способа разделения данных между несколькими пользователями различают локальные (Paradox, dBase, FoxPro и Access) и удаленные (Interbase Sybase, Oracle и т.д.) базы данных. В данном случае мы будем создавать удалённую базу данных. Данные удалённой базы данных (файлы данных) находятся на одном удалённом устройстве, в качестве которого может выступать диск компьютера. 

База данных — это набор файлов (таблиц), в которых находится информация. Как правило, база данных состоит из нескольких таблиц, которые размещают в одном каталоге. Каталог для новой базы данных создается обычным образом, например, при помощи Проводника. Таблицу мы будем создавать, воспользовавшись утилитой IBConsole. Сначала при помощи этой утилиты мы создадим сами таблицы, а затем еще генераторы и триггеры. Генератор – это специальная функция InterBase, с помощью которой создается счетчик для поля базы данных. А триггер нужен для того, чтобы привязать генератор к нужной таблице и к нужному полю.

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

				создание каталога;

				создание таблиц;

				создание генераторов;

				создание триггеров.

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

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

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

					разработка структуры таблиц базы данных;

					создание таблиц;

					создание генераторов и триггеров;

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

					разработка графического интерфейса пользователя клиентских приложений;

					обеспечить работоспособность программного продукта на любом компьютере.



1.1.1. Описание входной информации

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

Визуально ввод данных обеспечивается следующими компонентами:

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

		TEdit – однострочный текстовый редактор, при помощи которого вводится нужная информация, например пароль и имя преподавателя.

	TDBEdit – компонент, имеющий такие же свойства как и TEdit, но с дополнительной возможностью связи с каким либо полем таблицы базы данных;

	TComboBox – визуальный компонент, позволяет выбрать одно значение из списка.



1.1.2.Описание выходной информации

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


Пример отчета



1.2. Схема и описание схемы алгоритма задачи



1.2.1. Схема и описание схемы разработки проекта



	



Mask

Particu-lars.exe

DBGrids

     Grids

DBGrids

DB

Forms

Dialogs

ExtCtrls

StdCtrls

DBCtrls

ComCtrls

  ExtDlgs

Мessages

Windows

	

	

	

	

	

	

	

	

Данная блок-схема отображает структуру приложения, где Particulars.exe – это exe-файл программы, а DBCtrls, Grids, ExtCtrls и проч. – модули, используемые exe-файлом.


1.2.2 Схема и описание схемы алгоритма программы





Конец

ShowMessage('Фото установлено')

IBQuery1. Open

IBQuery1. Close

DataModule2.IBTransaction1.CommitRetaining

ShowMessage('Ошибка установки фото')

DataModule2.IBTransaction1.RollbackRetaining

Конец

IBQueryFoto.ExecSQL

Нет

Да

IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value

IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob)

DBImage3.Picture.LoadFromFile(OpenPictureDialog1.FileName)

OpenPictureDialog1.Execute

Нет

Да

Начало
Данная блок-схема отображает алгоритм добавления фотографии



1.3. Обоснование выбора языка программирования



Delphi - это греческий город, где жил дельфийский оракул. И этим именем был назван программный продукт с феноменальными характеристиками. Delphi - это потомок Turbo Pascal, который был выпущен для операционной системы CP/M в 1983 году. В феврале 1994 года Turbo Pascal был перенесён на операционную систему MS-DOS. 

На раннем этапе развития компьютеров IBM PC, Turbo Pascal являлся одним из наиболее популярных языков разработки программного обеспечения - главным образом потому, что это был вполне серьезный компилятор, который, включая компилятор, редактор и все остальное, стоил всего $19.95 и работал на машине с 64 Kb оперативной памяти. 

Под Windows - Turbo Pascal был перенесен фирмой Borland в 1990 году. А версия Borland Pascal 7.0, не считая Delphi, вышла в свет в 1992 году. 

Разработка Delphi началась в 1993 году. После проведения beta-тестирования Delphi показали на "Software Development '95". И 14 февраля 1995 года официально объявили о ее продаже в США. В торговлю Delphi попала спустя 14 дней, 28 февраля 1995 года.

Итак, Delphi - это комбинация нескольких важнейших технологий:

высокопроизводительный компилятор в машинный код.

Этот компилятор в настоящее время является одним их самых быстрых в мире, его скорость компиляции составляет свыше 120 тысяч строк в минуту на компьютере 486DX33. Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в то же время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на С++ или ручного написания кода (хотя это возможно). 

Еще до компиляции разработчик видит результаты своей работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения;

				объектно-ориентированная модель компонент.

Основной упор этой модели в Delphi делается на максимальном «реиспользовании» кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать;

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

							масштабируемые средства для построения баз данных.

Объекты БД в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL Link, поэтому доступ к СУБД Oracle, Sybase, Informix и InterBase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние SQL-сервера приложения в «офлайновом» режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf (как в dBase или Clipper) или .db (Paradox). Если же он будет использовать локальный InterBase for Windows 4.0 (это локальный SQL-сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент-сервер. 

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



1.4. Описание операционной системы



Данная информационно-справочная система разрабатывалась в операционной системе Windows XP Professional. 

Windows XP базируется на Windows 2000, более старой, но мощной версией Windows, которую компания Microsoft создала для работы, главным образом, в больших сетях. По этой причине Windows XP работает намного стабильнее, чем Windows Me или Windows 98. Существует две версии Windows XP: Windows XP Home и Windows XP Professional. Windows XP Home поддерживает работу в сети, совместное использование модема и другие средства. Windows XP Professional предназначена для выполнения более сложных вычислений. Она поддерживает сложные средства обеспечения безопасности, групповые политики, перемещаемые профили пользователей, протокол безопасности Kerberos и многое другое. Windows XP Professional лучше работает на переносных компьютерах, чем Windows XP Ноmе, поскольку содержит лучшие средства управления питанием, а также лучше работает с беспроводными подключениями к Internet. 



1.5. Описание структуры базы данных



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

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

В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные (dBASE, FoxPro, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных.

В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от dBASE до Infomix и Oracle. Delphi также позволяет программисту создавать файлы баз данных в различных форматах, используя различные утилиты. В нашем случае база данных, используемая в программе, создана в системе InterBase, при помощи утилиты IBConsole.

База данных содержит 1 таблицу: ANKETA, описание полей которой приведено ниже.

Nom – поле, которое является ключевым в таблице «ANKETA». Это поле имеет тип данных как числовой – Smallint, и автоматически увеличивает своё значение. Этот тип данных как поле Autoincrement (+).

Fam – Поле предназначенное для хранения фамилии. Тип данных поля: Varchar. Максимально допустимый размер поля – 20 символ.

Name – Поле, предназначенное для хранения имени. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символ.

Otch – Поле, предназначенное для хранения отчества. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символ.

Pol – Поле, предназначенное для хранения информации о пола. Тип данных поля: Varchar. Максимально допустимый размер поля – 1 символов.

Rost – Поле, предназначенное для хранения информации о росте. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.

Ves – Поле, предназначенное для хранения информации о весе. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.

Foto – Поле, предназначенное для хранения фотографии. Тип данных поля: BLOB. 

DR – Поле, предназначенное для хранения даты рождения. Тип данных поля: DATE. 

Ard_str – Поле, предназначенное для хранения информации о стране. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов. 

Ard_obl – Поле, предназначенное для хранения информации об области. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов.

Ard_gor – Поле, предназначенное для хранения информации о городе. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов.

Ard_yl – Поле, предназначенное для хранения информации о улице. Тип данных поля: Varchar. Максимально допустимый размер поля – 20 символов.

Ard_dom – Поле, предназначенное для хранения информации о доме. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.

Ard_kv – Поле, предназначенное для хранения информации о квартире. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.

Ard_ind – Поле, предназначенное для хранения информации о индексе. Тип данных поля: Varchar. Максимально допустимый размер поля – 6 символов.

Ard_tel – Поле, предназначенное для хранения информации о телефоне. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов.

Mroz_str – Поле, предназначенное для хранения информации о стране, месте рождения. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов. 

Mroz_obl – Поле, предназначенное для хранения информации об области, месте рождения. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов. 

Mroz_gor – Поле, предназначенное для хранения информации о городе, месте рождения. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов. 

Grazdan – Поле, предназначенное для хранения информации о гражданстве. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов. 

Obrazov – Поле, предназначенное для хранения информации об образовании. Тип данных поля: Varchar. Максимально допустимый размер поля – 30 символов.

Nom_strax_sved – Поле, предназначенное для хранения информации о номере страхового сведетельства. Тип данных поля: Varchar. Максимально допустимый размер поля – 13 символов.

INN – Поле, предназначенное для хранения информации о ИНН. Тип данных поля: Varchar. Максимально допустимый размер поля – 12 символов.

Tryd_kn_seriya – Поле, предназначенное для хранения информации о серии трудовой книжки. Тип данных поля: Varchar. Максимально допустимый размер поля – 6 символов.

Tryd_kn_nomer – Поле, предназначенное для хранения информации о номере трудовой книжки. Тип данных поля: Varchar. Максимально допустимый размер поля – 20 символов.

Paspost_nom – Поле, предназначенное для хранения информации о номере паспорта. Тип данных поля: Varchar. Максимально допустимый размер поля – 4 символов.

Paspost_ ser – Поле, предназначенное для хранения информации о серии паспорта. Тип данных поля: Varchar. Максимально допустимый размер поля – 6 символов.

Paspost_vidan – Поле, предназначенное для хранения информации о том кем паспорт был выдан. Тип данных поля: Varchar. Максимально допустимый размер поля – 50 символов.

Paspost_data – Поле, предназначенное для хранения информации о том когда паспорт был выдан. Тип данных поля: DATE. 


2. Экспериментальный раздел



2.1. Описание процесса отладки 



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

Обычно программа редко сразу начинает работать так, как надо, или работает правильно только на некотором ограниченном наборе исходных данных. Это свидетельствует о том, что в программе есть алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой.

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

В процессе отладки программы я столкнулся с ошибкой. Эта ошибка возникла, когда программой не была найдена база данных. 

Исправил я эту ошибку, создав папку «BD» и поместил в неё базу «BD». Далее в свойстве DatabaseName компонента IBDatabase1 я написал следуюшее:

BD\BD.gdb

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



2.2. Характеристика программы



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

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




Окно о программе



2.4. Инструкция пользователя



Для работы в данной программе вам не потребуются большие навыки работы с Windows-приложениями. Сам интерфейс программы прост и ясен. 

Для начала работы необходимо в корневой директории диска открыть папку «Анкетные данные», в которой находиться программа и запустить файл Анкетные данные.exe. При запуске программы на экране появиться главное окно в котором вы можите просмотреть все личные данные. При нажатии на кнопку «Поиск» можно произвести поиск по трем полям: фамилия, пол, ИНН. При нажатии на кнопку «Сортировка» можно провести сортировку по полям указанным в программе.

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

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

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

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

Чтобы вывести распечатать анкетные данные в главном окне выбираем нужное поле нажимаем кнопку «Отчет» и распечатываем. 

При нажатии на кнопку «О программе» на панели сверху, возникает окно с информацией о разработчике данного программного продукта.


Заключение



Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий.

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

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


Литература



	Бобровский С.И. Delphi7. Учебный курс.- СПб.: Питер.2004.

	Избачков Ю. С., Петров В. Н. Информационные системы: Учебник. - СПб.: Питер, 2005.

	Волков Ю.С., Петров В.Н. Информационные системы. - СПб.: Питер. 2005.

	Рудаков А. В. Технология разработки программных продуктов: Учеб. пособие. – М.: Издательский центр «Академия», 2005.

			Стандартная документация Delphi.


Приложение

Основной модуль приложения



program Project1;

uses

 Forms,

 Unit1 in 'Unit1.pas' {Form1},

 Unit2 in 'Unit2.pas' {DataModule2: TDataModule},

 Unit3 in 'Unit3.pas' {Form3},

 Unit4 in 'Unit4.pas' {Form4},

 Unit5 in 'Unit5.pas' {Form5};

{$R *.res}

begin

 Application.Initialize;

 Application.Title := 'Àíêåòíûå äàííûå';

 Application.CreateForm(TForm1, Form1);

 Application.CreateForm(TForm4, Form4);

 Application.CreateForm(TDataModule2, DataModule2);

 Application.CreateForm(TForm3, Form3);

 Application.CreateForm(TForm5, Form5);

 Application.Run;

end.



Модуль хранения невизуальных компонентов



unit Unit2;

interface

uses

 SysUtils, Classes, IBDatabase, DB;

type

 TDataModule2 = class(TDataModule)

  IBDatabase1: TIBDatabase;

  IBTransaction1: TIBTransaction;

 private

  { Private declarations }

 public

  { Public declarations }

 end;

var

 DataModule2: TDataModule2;

implementation

{$R *.dfm}

end.



Модуль основной формы



unit Unit1;

interface

uses

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

 Dialogs, DB, Grids, DBGrids, IBCustomDataSet, IBTable, ExtCtrls,

 StdCtrls, Mask, DBCtrls, XPMan, Menus, IBQuery, ComCtrls, ExtDlgs;



type

 TForm1 = class(TForm)

  DataSource1: TDataSource;

  Panel1: TPanel;

  Panel2: TPanel;

  DBGrid1: TDBGrid;

  XPManifest1: TXPManifest;

  OpenDialog1: TOpenDialog;

  MainMenu1: TMainMenu;

  N1: TMenuItem;

  N2: TMenuItem;

  N3: TMenuItem;

  IBQuery1: TIBQuery;

  IBQuery2: TIBQuery;

  PageControl1: TPageControl;

  TabSheet1: TTabSheet;

  TabSheet2: TTabSheet;

  GroupBox4: TGroupBox;

  Label19: TLabel;

  Label21: TLabel;

  Label22: TLabel;

  Label23: TLabel;

  Edit18: TEdit;

  Edit20: TEdit;

  Edit21: TEdit;

  Edit22: TEdit;

  GroupBox5: TGroupBox;

  Label24: TLabel;

  Label25: TLabel;

  Edit23: TEdit;

  Edit24: TEdit;

  GroupBox2: TGroupBox;

  Label9: TLabel;

  Label10: TLabel;

  Label11: TLabel;

  Label12: TLabel;

  Label13: TLabel;

  Label14: TLabel;

  Label15: TLabel;

  Label16: TLabel;

  Edit8: TEdit;

  Edit9: TEdit;

  Edit10: TEdit;

  Edit11: TEdit;

  Edit12: TEdit;

  Edit13: TEdit;

  Edit15: TEdit;

  Edit14: TEdit;

  GroupBox3: TGroupBox;

  Label17: TLabel;

  Label18: TLabel;

  Label20: TLabel;

  Edit16: TEdit;

  Edit17: TEdit;

  Edit19: TEdit;

  GroupBox6: TGroupBox;

  Label28: TLabel;

  Label29: TLabel;

  Edit27: TEdit;

  Edit28: TEdit;

  GroupBox1: TGroupBox;

  Label1: TLabel;

  Label2: TLabel;

  Label3: TLabel;

  Label4: TLabel;

  Label5: TLabel;

  Label6: TLabel;

  Label7: TLabel;

  Label8: TLabel;

  Label26: TLabel;

  Label27: TLabel;

  Edit1: TEdit;

  Edit2: TEdit;

  Edit3: TEdit;

  Edit5: TEdit;

  Edit4: TEdit;

  Edit6: TEdit;

  Edit7: TEdit;

  Edit25: TEdit;

  Edit26: TEdit;

  Button1: TButton;

  Button3: TButton;

  TabSheet3: TTabSheet;

  IBQuery1NOM: TSmallintField;

  IBQuery1FAM: TIBStringField;

  IBQuery1NAME: TIBStringField;

  IBQuery1OTCH: TIBStringField;

  IBQuery1POL: TIBStringField;

  IBQuery1ROST: TIBStringField;

  IBQuery1VES: TIBStringField;

  IBQuery1FOTO: TBlobField;

  IBQuery1DR: TDateField;

  IBQuery1ADR_STR: TIBStringField;

  IBQuery1ADR_OBL: TIBStringField;

  IBQuery1ADR_GOR: TIBStringField;

  IBQuery1ADR_YL: TIBStringField;

  IBQuery1ADR_DOM: TIBStringField;

  IBQuery1ADR_KV: TIBStringField;

  IBQuery1ADR_IND: TIBStringField;

  IBQuery1ADR_TEL: TIBStringField;

  IBQuery1MROZ_STR: TIBStringField;

  IBQuery1MROZ_OBL: TIBStringField;

  IBQuery1MROZ_GOR: TIBStringField;

  IBQuery1GRAZDAN: TIBStringField;

  IBQuery1OBRAZOV: TIBStringField;

  IBQuery1NOM_STRAX_SVED: TIBStringField;

  IBQuery1INN: TIBStringField;

  IBQuery1TRYD_KN_SERIYA: TIBStringField;

  IBQuery1TRYD_KN_NOMER: TIBStringField;

  IBQuery1PASPOST_NOM: TIBStringField;

  IBQuery1PASPOST_SER: TIBStringField;

  IBQuery1PASPOST_VIDAN: TIBStringField;

  IBQuery1PASPOST_DATA: TDateField;

  GroupBox8: TGroupBox;

  Label30: TLabel;

  Label31: TLabel;

  Label32: TLabel;

  Label33: TLabel;

  Label34: TLabel;

  Label35: TLabel;

  Label36: TLabel;

  Label37: TLabel;

  Label38: TLabel;

  Label39: TLabel;

  GroupBox9: TGroupBox;

  Label40: TLabel;

  Label41: TLabel;

  GroupBox10: TGroupBox;

  Label42: TLabel;

  Label43: TLabel;

  Label44: TLabel;

  GroupBox11: TGroupBox;

  Label45: TLabel;

  Label46: TLabel;

  Label47: TLabel;

  Label48: TLabel;

  Label49: TLabel;

  Label50: TLabel;

  Label51: TLabel;

  Label52: TLabel;

  GroupBox12: TGroupBox;

  Label53: TLabel;

  Label54: TLabel;

  Label55: TLabel;

  Label56: TLabel;

  GroupBox13: TGroupBox;

  Label57: TLabel;

  Label58: TLabel;

  DBEdit1: TDBEdit;

  DBEdit2: TDBEdit;

  DBEdit3: TDBEdit;

  DBEdit4: TDBEdit;

  DBEdit5: TDBEdit;

  DBEdit6: TDBEdit;

  DBEdit7: TDBEdit;

  DBEdit8: TDBEdit;

  DBEdit9: TDBEdit;

  DBEdit10: TDBEdit;

  DBEdit11: TDBEdit;

  DBEdit12: TDBEdit;

  DBEdit13: TDBEdit;

  DBEdit14: TDBEdit;

  DBEdit15: TDBEdit;

  DBEdit16: TDBEdit;

  DBEdit17: TDBEdit;

  DBEdit18: TDBEdit;

  DBEdit19: TDBEdit;

  DBEdit20: TDBEdit;

  DBEdit21: TDBEdit;

  DBEdit22: TDBEdit;

  DBEdit23: TDBEdit;

  DBEdit24: TDBEdit;

  DBEdit25: TDBEdit;

  DBEdit26: TDBEdit;

  DBEdit27: TDBEdit;

  DBEdit28: TDBEdit;

  GroupBox7: TGroupBox;

  ComboBox1: TComboBox;

  Edit500: TEdit;

  Button2: TButton;

  DBNavigator3: TDBNavigator;

  IBQueryFoto: TIBQuery;

  OpenPictureDialog1: TOpenPictureDialog;

  DBImage2: TDBImage;

  DBImage1: TDBImage;

  GroupBox14: TGroupBox;

  Label59: TLabel;

  Label60: TLabel;

  Label61: TLabel;

  Label62: TLabel;

  Label63: TLabel;

  Label64: TLabel;

  Label65: TLabel;

  Label66: TLabel;

  Label67: TLabel;

  Label68: TLabel;

  Edit29: TEdit;

  Edit30: TEdit;

  Edit31: TEdit;

  Edit32: TEdit;

  Edit33: TEdit;

  Edit34: TEdit;

  Edit35: TEdit;

  Edit36: TEdit;

  Edit37: TEdit;

  GroupBox15: TGroupBox;

  Label69: TLabel;

  Label70: TLabel;

  Edit38: TEdit;

  Edit39: TEdit;

  GroupBox16: TGroupBox;

  Label71: TLabel;

  Label72: TLabel;

  Label73: TLabel;

  Edit40: TEdit;

  Edit41: TEdit;

  Edit42: TEdit;

  GroupBox17: TGroupBox;

  Label74: TLabel;

  Label75: TLabel;

  Label76: TLabel;

  Label77: TLabel;

  Label78: TLabel;

  Label79: TLabel;

  Label80: TLabel;

  Label81: TLabel;

  Edit43: TEdit;

  Edit44: TEdit;

  Edit45: TEdit;

  Edit46: TEdit;

  Edit47: TEdit;

  Edit48: TEdit;

  Edit49: TEdit;

  Edit50: TEdit;

  GroupBox18: TGroupBox;

  Label82: TLabel;

  Label83: TLabel;

  Edit51: TEdit;

  Edit52: TEdit;

  GroupBox19: TGroupBox;

  Label84: TLabel;

  Label85: TLabel;

  Label86: TLabel;

  Label87: TLabel;

  Edit53: TEdit;

  Edit54: TEdit;

  Edit55: TEdit;

  Edit56: TEdit;

  Button4: TButton;

  IBQuery3: TIBQuery;

  DBImage3: TDBImage;

  N4: TMenuItem;

  N5: TMenuItem;

  N6: TMenuItem;

  N7: TMenuItem;

  N8: TMenuItem;

  N9: TMenuItem;

  N10: TMenuItem;

  N11: TMenuItem;

  Button5: TButton;

  N12: TMenuItem;

  N13: TMenuItem;

  N14: TMenuItem;

  N15: TMenuItem;

  N16: TMenuItem;

  N17: TMenuItem;

  IBQuery4: TIBQuery;

  N18: TMenuItem;

  procedure FormDestroy(Sender: TObject);

  procedure Button1Click(Sender: TObject);

  procedure N2Click(Sender: TObject);

  procedure Button2Click(Sender: TObject);

  procedure N3Click(Sender: TObject);

  procedure Button3Click(Sender: TObject);

  procedure Button4Click(Sender: TObject);

  procedure IBQuery1AfterScroll(DataSet: TDataSet);

  procedure N5Click(Sender: TObject);

  procedure N6Click(Sender: TObject);

  procedure N7Click(Sender: TObject);

  procedure N9Click(Sender: TObject);

  procedure N10Click(Sender: TObject);

  procedure N11Click(Sender: TObject);

  procedure Button5Click(Sender: TObject);

  procedure N13Click(Sender: TObject);

  procedure N14Click(Sender: TObject);

  procedure N15Click(Sender: TObject);

  procedure FormActivate(Sender: TObject);

  procedure N16Click(Sender: TObject);

  procedure N18Click(Sender: TObject);

 private

  { Private declarations }

 public

  { Public declarations }

 end;



var

 Form1: TForm1;



implementation



uses Unit2, Unit3, Unit4, Unit5;



{$R *.dfm}



procedure TForm1.FormDestroy(Sender: TObject);

begin

IBQuery1.Close;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenPictureDialog1.Execute Then

 begin

  DBImage2.Picture.LoadFromFile(OpenPictureDialog1.FileName);

  IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);

  IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value;

  Try

   IBQueryFoto.ExecSQL;

  Except

   DataModule2.IBTransaction1.RollbackRetaining;

   ShowMessage('Ошибка установки фотографии');

   Exit;

  End;

 DataModule2.IBTransaction1.CommitRetaining;

 IBQuery1.Close;

 IBQuery1.Open;

 ShowMessage('Фотография установлена');

end;

end;



procedure TForm1.N2Click(Sender: TObject);

begin

close;

end;



procedure TForm1.Button2Click(Sender: TObject);

var

 s : String;

begin

 case ComboBox1.ItemIndex of

  0 : S := 'Fam';

  1 : S := 'Pol';

  2 : S := 'INN';

 end;

IBQuery1.Locate(S, Edit500.Text,[loPartialKey]);

end;



procedure TForm1.N3Click(Sender: TObject);

begin

Form3.QuickRep1.Preview;

end;



procedure TForm1.Button3Click(Sender: TObject);

begin

IBQuery2.Params.ParamByName('Fam').Value:=Edit1.Text;

IBQuery2.Params.ParamByName('Name').Value:=Edit2.Text;

IBQuery2.Params.ParamByName('Otch').Value:=Edit3.Text;

IBQuery2.Params.ParamByName('Pol').Value:=Edit4.Text;

IBQuery2.Params.ParamByName('DR').Value:=Edit5.Text;

IBQuery2.Params.ParamByName('Ves').Value:=Edit6.Text;

IBQuery2.Params.ParamByName('Rost').Value:=Edit7.Text;

IBQuery2.Params.ParamByName('Adr_str').Value:=Edit8.Text;

IBQuery2.Params.ParamByName('Adr_obl').Value:=Edit9.Text;

IBQuery2.Params.ParamByName('Adr_gor').Value:=Edit10.Text;

IBQuery2.Params.ParamByName('Adr_yl').Value:=Edit11.Text;

IBQuery2.Params.ParamByName('Adr_dom').Value:=Edit12.Text;

IBQuery2.Params.ParamByName('Adr_kv').Value:=Edit13.Text;

IBQuery2.Params.ParamByName('Adr_ind').Value:=Edit14.Text;

IBQuery2.Params.ParamByName('Adr_tel').Value:=Edit15.Text;

IBQuery2.Params.ParamByName('Mroz_str').Value:=Edit16.Text;

IBQuery2.Params.ParamByName('Mroz_obl').Value:=Edit17.Text;

IBQuery2.Params.ParamByName('Paspost_nom').Value:=Edit18.Text;

IBQuery2.Params.ParamByName('Mroz_gor').Value:=Edit19.Text;

IBQuery2.Params.ParamByName('Paspost_ser').Value:=Edit20.Text;

IBQuery2.Params.ParamByName('Paspost_vidan').Value:=Edit21.Text;

IBQuery2.Params.ParamByName('Paspost_data').Value:=Edit22.Text;

IBQuery2.Params.ParamByName('Tryd_kn_seriya').Value:=Edit23.Text;

IBQuery2.Params.ParamByName('Tryd_kn_nomer').Value:=Edit24.Text;

IBQuery2.Params.ParamByName('Obrazov').Value:=Edit25.Text;

IBQuery2.Params.ParamByName('Grazdan').Value:=Edit26.Text;

IBQuery2.Params.ParamByName('Nom_strax_sved').Value:=Edit27.Text;

IBQuery2.Params.ParamByName('INN').Value:=Edit28.Text;

try

IBQuery2.ExecSQL;

Except

DataModule2.IBTransaction1.RollbackRetaining;

ShowMessage('Невозможно передать запись');

Exit;

end;

DataModule2.IBTransaction1.CommitRetaining;

ShowMessage('Запись добавлена');

IBQuery1.Close;

IBQuery1.Open;

end;



procedure TForm1.Button4Click(Sender: TObject);

begin

if MessageDlg('Обновить анкетные данные?', mtConfirmation, [mbYes, mbNo],0)=mrYes then

begin

IBQuery4.Params.ParamByName('Nom').Value:=IBQuery1NOM.Value;

IBQuery4.Params.ParamByName('Fam').Value:=Edit29.Text;

IBQuery4.Params.ParamByName('Name').Value:=Edit30.Text;

IBQuery4.Params.ParamByName('Otch').Value:=Edit31.Text;

IBQuery4.Params.ParamByName('Pol').Value:=Edit33.Text;

IBQuery4.Params.ParamByName('DR').Value:=Edit32.Text;

IBQuery4.Params.ParamByName('Ves').Value:=Edit34.Text;

IBQuery4.Params.ParamByName('Rost').Value:=Edit35.Text;

IBQuery4.Params.ParamByName('Adr_str').Value:=Edit43.Text;

IBQuery4.Params.ParamByName('Adr_obl').Value:=Edit44.Text;

IBQuery4.Params.ParamByName('Adr_gor').Value:=Edit45.Text;

IBQuery4.Params.ParamByName('Adr_yl').Value:=Edit46.Text;

IBQuery4.Params.ParamByName('Adr_dom').Value:=Edit47.Text;

IBQuery4.Params.ParamByName('Adr_kv').Value:=Edit48.Text;

IBQuery4.Params.ParamByName('Adr_ind').Value:=Edit50.Text;

IBQuery4.Params.ParamByName('Adr_tel').Value:=Edit49.Text;

IBQuery4.Params.ParamByName('Mroz_str').Value:=Edit40.Text;

IBQuery4.Params.ParamByName('Mroz_obl').Value:=Edit41.Text;

IBQuery4.Params.ParamByName('Paspost_nom').Value:=Edit53.Text;

IBQuery4.Params.ParamByName('Mroz_gor').Value:=Edit42.Text;

IBQuery4.Params.ParamByName('Paspost_ser').Value:=Edit54.Text;

IBQuery4.Params.ParamByName('Paspost_vidan').Value:=Edit55.Text;

IBQuery4.Params.ParamByName('Paspost_data').Value:=Edit56.Text;

IBQuery4.Params.ParamByName('Tryd_kn_seriya').Value:=Edit51.Text;

IBQuery4.Params.ParamByName('Tryd_kn_nomer').Value:=Edit52.Text;

IBQuery4.Params.ParamByName('Obrazov').Value:=Edit36.Text;

IBQuery4.Params.ParamByName('Grazdan').Value:=Edit37.Text;

IBQuery4.Params.ParamByName('Nom_strax_sved').Value:=Edit38.Text;

IBQuery4.Params.ParamByName('INN').Value:=Edit39.Text;

try

IBQuery4.ExecSQL;

Except

DataModule2.IBTransaction1.RollbackRetaining;

ShowMessage('Запись не добавлена');

exit;

end;

DataModule2.IBTransaction1.CommitRetaining;

ShowMessage('Запись обновлена');

IBQuery1.Close;

IBQuery1.Open;

end;

end;



procedure TForm1.IBQuery1AfterScroll(DataSet: TDataSet);

begin

 if IBQuery1.FieldValues['Fam']<> null then

 Edit29.Text:=IBQuery1.FieldValues['Fam'];



 if IBQuery1.FieldValues['Name']<> null then

 Edit30.Text:=IBQuery1.FieldValues['Name'];



 if IBQuery1.FieldValues['Otch']<> null then

 Edit31.Text:=IBQuery1.FieldValues['Otch'];



 if IBQuery1.FieldValues['Pol']<> null then

 Edit33.Text:=IBQuery1.FieldValues['Pol'];



 if IBQuery1.FieldValues['DR']<> null then

 Edit32.Text:=IBQuery1.FieldValues['DR'];



 if IBQuery1.FieldValues['Ves']<> null then

 Edit34.Text:=IBQuery1.FieldValues['Ves'];



 if IBQuery1.FieldValues['Rost']<> null then

 Edit35.Text:=IBQuery1.FieldValues['Rost'];



 if IBQuery1.FieldValues['Adr_str']<> null then

 Edit43.Text:=IBQuery1.FieldValues['Adr_str'];



 if IBQuery1.FieldValues['Adr_obl']<> null then

 Edit44.Text:=IBQuery1.FieldValues['Adr_obl'];



 if IBQuery1.FieldValues['Adr_gor']<> null then

 Edit45.Text:=IBQuery1.FieldValues['Adr_gor'];



 if IBQuery1.FieldValues['Adr_yl']<> null then

 Edit46.Text:=IBQuery1.FieldValues['Adr_yl'];



 if IBQuery1.FieldValues['Adr_dom']<> null then

 Edit47.Text:=IBQuery1.FieldValues['Adr_dom'];



 if IBQuery1.FieldValues['Adr_kv']<> null then

 Edit48.Text:=IBQuery1.FieldValues['Adr_kv'];



 if IBQuery1.FieldValues['Adr_ind']<> null then

 Edit50.Text:=IBQuery1.FieldValues['Adr_ind'];



 if IBQuery1.FieldValues['Adr_tel']<> null then

 Edit49.Text:=IBQuery1.FieldValues['Adr_tel'];



 if IBQuery1.FieldValues['Mroz_str']<> null then

 Edit40.Text:=IBQuery1.FieldValues['Mroz_str'];



 if IBQuery1.FieldValues['Mroz_obl']<> null then

 Edit41.Text:=IBQuery1.FieldValues['Mroz_obl'];



 if IBQuery1.FieldValues['Paspost_nom']<> null then

 Edit53.Text:=IBQuery1.FieldValues['Paspost_nom'];



 if IBQuery1.FieldValues['Mroz_gor']<> null then

 Edit42.Text:=IBQuery1.FieldValues['Mroz_gor'];



 if IBQuery1.FieldValues['Paspost_ser']<> null then

 Edit54.Text:=IBQuery1.FieldValues['Paspost_ser'];



 if IBQuery1.FieldValues['Paspost_vidan']<> null then

 Edit55.Text:=IBQuery1.FieldValues['Paspost_vidan'];



 if IBQuery1.FieldValues['Paspost_data']<> null then

 Edit56.Text:=IBQuery1.FieldValues['Paspost_data'];



 if IBQuery1.FieldValues['Tryd_kn_seriya']<> null then

 Edit51.Text:=IBQuery1.FieldValues['Tryd_kn_seriya'];



 if IBQuery1.FieldValues['Tryd_kn_nomer']<> null then

 Edit52.Text:=IBQuery1.FieldValues['Tryd_kn_nomer'];



  if IBQuery1.FieldValues['Obrazov']<> null then

 Edit36.Text:=IBQuery1.FieldValues['Obrazov'];



  if IBQuery1.FieldValues['Grazdan']<> null then

 Edit37.Text:=IBQuery1.FieldValues['Grazdan'];



  if IBQuery1.FieldValues['Nom_strax_sved']<> null then

 Edit38.Text:=IBQuery1.FieldValues['Nom_strax_sved'];



  if IBQuery1.FieldValues['INN']<> null then

 Edit39.Text:=IBQuery1.FieldValues['INN'];

end;



procedure TForm1.N5Click(Sender: TObject);

begin

Form4.Notebook1.PageIndex := 0;

Form4.GroupBox1.Caption := ' По фамилии: ';

Form4.ShowModal;

end;



procedure TForm1.N6Click(Sender: TObject);

begin

Form4.Notebook1.PageIndex := 1;

Form4.GroupBox1.Caption := ' По полу: ';

Form4.ShowModal;

end;



procedure TForm1.N7Click(Sender: TObject);

begin

Form4.Notebook1.PageIndex := 2;

Form4.GroupBox1.Caption := ' По дате рождения: ';

Form4.ShowModal;

end;



procedure TForm1.N9Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('select * from anketa order by fam');

IBQuery1.Open;

end;



procedure TForm1.N10Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('select * from anketa order by dr');

IBQuery1.Open;

end;



procedure TForm1.N11Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('select * from anketa order by rost');

IBQuery1.Open;

end;



procedure TForm1.Button5Click(Sender: TObject);

begin

if OpenPictureDialog1.Execute Then

 begin

  DBImage3.Picture.LoadFromFile(OpenPictureDialog1.FileName);

  IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);

  IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value;

  Try

   IBQueryFoto.ExecSQL;

  Except

   DataModule2.IBTransaction1.RollbackRetaining;

   ShowMessage('Ошибка установки фотографии');

   Exit;

  End;

 DataModule2.IBTransaction1.CommitRetaining;

 IBQuery1.Close;

 IBQuery1.Open;

 ShowMessage('Фотография установлена');

end;

end;





procedure TForm1.N13Click(Sender: TObject);

begin

 PageControl1.ActivePageIndex := 1;

end;



procedure TForm1.N14Click(Sender: TObject);

begin

 PageControl1.ActivePageIndex := 2;

end;



procedure TForm1.N15Click(Sender: TObject);

begin

if MessageBox(Handle,'Вы действительно хотите удалить запись?','Подтверждение удаления', MB_YESNO or MB_ICONWARNING)=mrYes then

 begin

 IBQuery3.ParamByName('NOM').Value := IBQuery1.FieldByName('NOM').Value;

 Try

   IBQuery3.ExecSQL;

 Except

   DataModule2.IBTransaction1.RollbackRetaining;

   MessageBox(Handle,'Невозможно удалить запись.','Ошибка удаления записи', MB_OK or MB_ICONERROR);

   Exit;

 End;

 DataModule2.IBTransaction1.CommitRetaining;

 IBQuery1.Close;

 IBQuery1.Open;

 MessageBox(Handle,'Запись удалина.','Событие', MB_OK or MB_ICONINFORMATION);

 end;

end;



procedure TForm1.FormActivate(Sender: TObject);

begin

IBQuery1.Open;

end;



procedure TForm1.N16Click(Sender: TObject);

begin

Form5.ShowModal;

end;



procedure TForm1.N18Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('SELECT * FROM ANKETA');

IBQuery1.Open;

end;



end.



Модуль формы с фильтрацией



unit Unit4;



interface



uses

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

 Dialogs, StdCtrls, ExtCtrls;



type

 TForm4 = class(TForm)

  GroupBox1: TGroupBox;

  Notebook1: TNotebook;

  Label1: TLabel;

  Edit1: TEdit;

  Button1: TButton;

  Button2: TButton;

  Button3: TButton;

  RadioButton1: TRadioButton;

  RadioButton2: TRadioButton;

  Button4: TButton;

  Button5: TButton;

  Edit2: TEdit;

  Label2: TLabel;

  Label3: TLabel;

  Edit3: TEdit;

  Button6: TButton;

  Button7: TButton;

  Button8: TButton;

  procedure Button1Click(Sender: TObject);

  procedure Button2Click(Sender: TObject);

  procedure Button3Click(Sender: TObject);

  procedure Button5Click(Sender: TObject);

  procedure Button4Click(Sender: TObject);

  procedure Button6Click(Sender: TObject);

  procedure Button8Click(Sender: TObject);

  procedure Button7Click(Sender: TObject);

 private

  { Private declarations }

 public

  { Public declarations }

 end;



var

 Form4: TForm4;



implementation



uses Unit1, Unit2, Unit3;



{$R *.dfm}



procedure TForm4.Button1Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE Fam='+#39+Edit1.text+#39'');

Form1.IBQuery1.Open;

end;



procedure TForm4.Button2Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');

Form1.IBQuery1.Open;

end;



procedure TForm4.Button3Click(Sender: TObject);

begin

Edit1.Text:='';

end;



procedure TForm4.Button5Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');

Form1.IBQuery1.Open;

end;



procedure TForm4.Button4Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

if RadioButton1.Checked=true then

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE POL='+#39+'М'+#39);

if RadioButton2.Checked=true then

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE POL='+#39+'Ж'+#39);

Form1.IBQuery1.Open;

end;



procedure TForm4.Button6Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE(DR>='+#39+Edit2.text+#39+') and (DR<='+#39+Edit3.text+#39+') ');

Form1.IBQuery1.Open;

end;



procedure TForm4.Button8Click(Sender: TObject);

begin

Edit2.Text:='';

Edit3.Text:='';

end;



procedure TForm4.Button7Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');

Form1.IBQuery1.Open;

end;



end.