Модель данных по стандарту IDEF1X диаграммы "сущность - связь"

 

Содержание


Введение

1. Теоретическая часть. CASE средство Designer/2000

2. Проектная часть

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

2.2 Анализ предметной области

2.3 Функциональная модель по стандарту IDEF0

2.4 Модель данных по стандарту IDEF1X диаграммы "сущность-связь

2.5 Описание таблиц базы данных

2.6 Дерево программных модулей

2.7 Схема взаимосвязей модулей и массивов данных

2.8 Алгоритм работы модуля dati

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

2.10 Способы и результаты тестирования программного продукта

3. Проверка в работы программы в исключительных ситуациях

Заключение

Список использованных источников

Приложения

Введение


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

Для успешной реализации проекта объект проектирования (ИС) должен быть, прежде всего, адекватно описан, должны быть построены полные и непротиворечивые функциональные и информационные модели ИС. Кроме того, в процессе создания и функционирования ИС информационные потребности пользователей могут изменяться или уточняться, что еще более усложняет разработку и сопровождение таких систем.

Данная курсовая работа посвящена теоретическому изучению CASE-средства Designer/2000 фирмы ORACLE и разработке информационной системы для автоматизации учета ремонта жилищного фонда в муниципальном жилищно-ремонтном эксплуатационном предприятии.

Задачи, поставленные в курсовой работе:

изучение назначения и основных характеристик case средства Designer/2000;

анализ предметной области для разработки ИС;

определение целей и задач системы;

построение моделей данных;

разработка БД и клиентского приложения;

закрепление и развитие теоретических знаний по проектированию ИС;

приобретение практических навыков разработки ИС.

При разработке системы будет применяться структурно-функциональный подход. Для разработки клиентского приложения ИС был выбран язык программирования Borland Delphi 7.0 Enterprise, в связи с имеющимся опытом разработки ИС с помощью данного средства. С помощью Borland Delphi 7.0 Enterprise легко реализуется технология "файл-сервер, путем прямого доступа к таблицам БД, так и с помощью языка запросов SQL. СУБД выбран MS Access.

1. Теоретическая часть. CASE средство Designer/2000


CASE-средство Designer/2000 2.0 фирмы ORACLE [23] является интегрированным CASE-средством, обеспечивающим в совокупности со средствами разработки приложений Developer/2000 поддержку полного ЖЦ ПО для систем, использующих СУБД ORACLE.

Структура и функции

Designer/2000 представляет собой семейство методологий и поддерживающих их программных продуктов. Базовая методология Designer/2000 (CASE*Method) - структурная методология проектирования систем, полностью охватывающая все этапы жизненного цикла ИС [8,9]. В соответствии с этой методологией на этапе планирования определяются цели создания системы, приоритеты и ограничения, разрабатывается системная архитектура и план разработки ИС. В процессе анализа строятся модель информационных потребностей (диаграмма "сущность-связь"), диаграмма функциональной иерархии (на основе функциональной декомпозиции ИС), матрица перекрестных ссылок и диаграмма потоков данных.

На этапе проектирования разрабатывается подробная архитектура ИС, проектируется схема реляционной БД и программные модули, устанавливаются перекрестные ссылки между компонентами ИС для анализа их взаимного влияния и контроля за изменениями.

На этапе реализации создается БД, строятся прикладные системы, производится их тестирование, проверка качества и соответствия требованиям пользователей. Создается системная документация, материалы для обучения и руководства пользователей. На этапах эксплуатации и сопровождения анализируются производительность и целостность системы, выполняется поддержка и, при необходимости, модификация ИС;/2000 обеспечивает графический интерфейс при разработке различных моделей (диаграмм) предметной области. В процессе построения моделей информация о них заносится в репозиторий. В состав Designer/2000 входят следующие компоненты:Administrator - средства управления репозиторием (создание и удаление приложений, управление доступом к данным со стороны различных пользователей, экспорт и импорт данных);Object Navigator - средства доступа к репозиторию, обеспечивающие многооконный объектно-ориентированный интерфейс доступа ко всем элементам репозитория;Modeller - средство анализа и моделирования деловой деятельности, основывающееся на концепциях реинжиниринга бизнес-процессов и глобальной системы управления качеством;Modeller - набор средств построения функциональных и информационных моделей проектируемой ИС, включающий средства для построения диаграмм "сущность-связь" (Entity-Relationship Diagrammer), диаграмм функциональных иерархий (Function Hierarchy Diagrammer), диаграмм потоков данных (Data Flow Diagrammer) и средство анализа и модификации связей объектов репозитория различных типов (Matrix Diagrammer);Designer - набор средств проектирования ИС, включающий средство построения структуры реляционной базы данных (Data Diagrammer), а также средства построения диаграмм, отображающих взаимодействие с данными, иерархию, структуру и логику приложений, реализуемую хранимыми процедурами на языке PL/SQL (Module Data Diagrammer, Module Structure Diagrammer и Module Logic Navigator);Generator - генератор описаний объектов БД ORACLE (таблиц, индексов, ключей, последовательностей и т.д.). Помимо продуктов ORACLE, генерация и реинжиниринг БД может выполняться для СУБД Informix, DB/2, Microsoft SQL Server, Sybase, а также для стандарта ANSI SQL DDL и баз данных, доступ к которым реализуется посредством ODBC;

база приложение информационная система

Forms Generator - генератор приложений. Генерируемые приложения включают в себя различные экранные формы, средства контроля данных, проверки ограничений целостности и автоматические подсказки. Дальнейшая работа с приложением выполняется в среде Developer/2000;Reports - генератор стандартных отчетов, интегрированный с ORACLE Reports и позволяющий русифицировать отчеты, а также изменять структурное представление информации.

Репозиторий Designer/2000 представляет собой хранилище всех проектных данных и может работать в многопользовательском режиме, обеспечивая параллельное обновление информации несколькими разработчиками. В процессе проектирования автоматически поддерживаются перекрестные ссылки между объектами словаря и могут генерироваться более 70 стандартных отчетов о моделируемой предметной области. Физическая среда хранения репозитория - база данных ORACLE.

Взаимодействие с другими средствами

Designer/2000 можно интегрировать с другими средствами, используя открытый интерфейс приложений API (Application Programming Interface). Кроме того, можно использовать средство ORACLE CASE Exchange для экспорта/импорта объектов репозитория с целью обмена информацией с другими CASE-средствами./2000 обеспечивает разработку переносимых приложений, работающих в графической среде Windows, Macintosh или Motif. В среде Windows интеграция приложений Developer/2000 с другими средствами реализуется через механизм OLE и управляющие элементы VBX. Взаимодействие приложений с другими СУБД (DB/2, DB2/400, Rdb) реализуется с помощью средств ORACLE Client Adapter для ODBC, ORACLE Open Gateway и API.

Среда функционирования

Среда функционирования Designer/2000 и Developer/2000 - Windows 3. x, Windows 95, Windows NT.

2. Проектная часть


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


ИС должна содержать следующую информацию:

  1. Сведения обо всем, жилищном фонде, обслуживаемом муниципальным жилищно-ремонтным эксплуатационным предприятием (МЖРЭП). Основные характеристики жилья (адрес, тип дома, тип и площадь крыши, наличие лифта и т.д.)
  2. Сведения о жильцах проживающих в жилищном фонде (ответственный квартирообладатель и т.д.)
  3. Сведения о видах ремонтных работ (с их стоимостью), которые может осуществлять МРЭП (вид работы, стоимость за единицу и т. д).
  4. Сведения о выполненных ремонтах жилищного фонда (Даты проведения, объем работ, общая стоимость, где проводилась и т.д.).
  5. Сведения о заявках на ремонт от квартирообладателей с предполагаемой датой их выполнения. (Дата заявки, предполагаемая дата выполнения, кто делал заявку и т.д.).
  6. Сведения о невыполненных заявках с указанием причины их невыполнения (заявка, причина отказа и т.д.).

ИС должна обеспечивать:

  1. Ввод, удаление и редактирование той или иной информации, с возможностью автоматизации (подстановок из других таблиц, фиксированных наборов данных и т.д.) и входного контроля от некорректных действий.
  2. Многопользовательский режим работы.
  3. Разграничение прав доступа к ИС с помощью идентификации и аутентификации пользователей (пользователь - соответствующий пароль). Обеспечить возможность оперативного изменения пароля. Количество различных пользователей - не менее 3.

пользователя (только администратора).

  1. Осуществлять поиск по разнообразным признакам (не менее одного в каждой из информационных категорий, например, адрес и т.д.).
  2. Осуществлять сортировку по различным признакам (не менее одного в каждой из информационных категорий, например, по адресу и т.д.).
  3. Вывод информации обо всех жилых объектах, которые были отремонтированы за выбранный промежуток времени, а также общей суммы затраченной на ремонт.
  4. Вывод информации о том, как изменялась стоимость ремонтных работ (стоимость за единицу) за заданный пользователем промежуток времени.
  5. Формирование списка объектов, которые необходимо отремонтировать в периоде, заданном пользователем. Организовать возможность вывода списка объектов в MSWord (или MSExcel).
  6. Формирование отчета (с возможностью вывода на печать) всех своевременно не обеспеченных заявках на текущую дату с указанием причины.

2.2 Анализ предметной области


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

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

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

Пользователями разрабатываемой системы будут:

Администратор (доступны все возможности, предусмотренные в программе)

Работник (имеет доступ к работе с заявками, назначению работ по заявкам, а также имеет возможность просматривать отчетность)

Гость (Может подать заявку и просмотреть отчет о выполненных ремонтах жилых объектах)

Для выполнения требований, предъявляемых пользователями, ИС кроме хранения информации должна выполнять следующие функции:

.Формирование требуемых отчетов, с возможностью вывода на печать.

2.Выводить информацию о том как изменялась цена на ремонтные работы за период.

.Производить расчет итоговой суммы по заявке.

.Осуществлять быстрый поиск и сортировку по различным критериям.

Входными документами в разрабатываемой ИС будут являться:

Паспортные данные жильцов

Заявление на проведение ремонтных работ

Выходными документами для разрабатываемой ИС будут являться:

Отчет об отремонтированных жилых объектах

Отчет об изменении стоимости ремонтных работ за период

Отчет обо всех своевременно не обеспеченных заявках на текущую дату с указанием причины


2.3 Функциональная модель по стандарту IDEF0


Функциональная модель по стандарту IDEF0 и методологии SADT была разработана с помощью CASE - средства BPwin v.2.5 Модель разрабатываемой ИС по стандарту IDEF0 представлена в приложении А.


Нулевой уровеньК-т уровняК-т СбалансированностиК-т функциональностиПервый уровень Второй уровеньТретий уровеньЧетвертый уровень

Рассчитанные коэффициенты находятся в пределах нормы и соответствуют всем требованиям. Коэффициент Кь при переходе от одного уровня к другому колеблется в небольших пределах от 0 до 2, что соответствует норме. Коэффициент уровня убывает, что говорит о том что на диаграммах более нижнего уровня количество функций не увеличивается.

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

Элементарными функциями моделируемой ИС являются:

. Определение категории пользователя

. Определение полномочий

. Открытие доступа к БД системы

. Блокировка записи

. Добавление, удаление, редактирование записей справочника "Жилищный фонд"

. Добавление, удаление, редактирование записей справочника "Жильцы"

. Добавление, удаление, редактирование записей справочника "Ремонтные работы"

. Разблокирование записи

. Добавление заявки

. Назначение работ по заявке

. Выполнение заявки

. Отклонение заявки

. Обновление

. Смена пароля

. Резервная копия

. Поиск по ФИО

. Поиск по адресу

. Поиск по заявке

. Сортировка по адресу

. Сортировка по ФИО

. Сортировка по заявкам

. Формирование отчета об изменении стоимости ремонтных работ за период

. Формирование отчета "отремонтированные жилые объекты"

. Формирование отчета "Невыполненные заявки"

. Формирование отчета "Предполагаемый ремонт жилых объектов"


2.4 Модель данных по стандарту IDEF1X диаграммы "сущность-связь


Для построения диаграммы "сущность-связь необходимо определить сущности, обозначающие объекты предметной области, связи между ними и атрибуты. На рисунке 1 изображена модель данных по стандарту IDEF1X.



Рисунок 1 - ER-диаграмма



На рисунке 1 отображены связи, все они относятся к типу не идентифицирующей связи один-ко-многим, так как:

В одном доме могут проживать много человек, один человек проживает только в одном доме.

Жильцы могут оставлять много заявок, но одна заявка соответствует одному жильцу

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

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

Одной ремонтной работе может соответствовать несколько изменений цены. Физическая модель представлена в приложении Б.


2.5 Описание таблиц базы данных


База данных реализована в MS Access и состоит из семи таблиц. Таблица "Zil" содержит информацию о жилищном фонде, описание атрибутов приведено в таблице 2


Таблица 2

Таблица "Zil

Наименование поляТип даныхОписаниеid_zСчетчикКод дома, ключевое полеadr_zТекстовыйАдрес дома, не индексированноеtipdom_zТекстовыйТип домаtipkr_zТекстовыйТип крышиpl_zЧисловойПлощадьlift_zТекстовыйЛифт

Таблица Zilci содержит данные о жильцах.

Описание всех атрибутов отражено в таблице 3.


Таблица 3 - Таблица Zilci

Наименование поляТип даныхОписаниеId_zlСчетчикКод жильца, ключевое полеFio_zlТекстовыйФамилия имя отчество жильцаKv_zlЧисловойНомер квартиры жильца Id_z_zlЧисловойКод дома, подстановка из таблицы "Zil

Таблица remr содержит информацию о ремонтных работах и стоимости на них


Таблица 4 - Таблица remr

Наименование поляТип даныхОписаниеId_rrСчетчикКод работы, ключевое полеNazv_rrТекстовыйНаименование работыSt_rrЧисловойСтоимость за единицуEdi_rrТекстовыйЕдиницы измерения

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


Таблица 5 - Таблица Zayavka

Наименование поляТип даныхОписаниеid_zaСчетчикКод заявкиid_zl_zaЧисловойАдрес жильца делающего заявку, подстановка из таблицы Zilcidataz_zaДата/времяДата заявкиdatapv_zaДата/времяПредполагаемая дата выполнения заявкиprich_zaТекстовыйПричина отказаdatav_zaДата/времяДата выполнения заявки

Таблица NaznR содержит информацию о назначенных работах на заявку.


Таблица 6 - Таблица NaznR

Наименование поляТип даныхОписаниеid_nrСчетчикКод назначенной работы id_rr_nrЧисловойКод работы, подстановка из таблицы remrst_rr_nrЧисловойСтоимость работыob_nrЧисловойОбъем работst_nrЧисловойОбщая стоимостьid_za_nrЧисловойКод заявки, подстановка из таблицы Zayavka

Таблица RCen содержит информацию об изменении цен на работы


Таблица 7 - Таблица RCen

Наименование поляТип даныхОписаниеid_rcСчетчикКод изменения id_rr_rcЧисловойКод работы, подстановка из таблицы remrdata_rcДата/времяДата измененияcena_rcЧисловойИзмененная цена

На рисунке 2 представлена структура всех таблиц и связи между ними.


Рисунок 2 - Схема данных


2.6 Дерево программных модулей


Разрабатываемая ИС состоит из 13 модулей, их описание представлено в таблице 8.


Таблица 8 - Программные модули ИС

Название модуляОписаниеDataMМодуль подключения к БДMainМодуль главной формыZilciМодуль формы редактирования и ввода жильцовZilМодуль формы редактирования и ввода жилищного фондаZayavkaМодуль формы оформления заявкиRemrМодуль формы для ввода ремонтных работnaznrМодуль формы назначения ремонтных работ по заявкеzotkМодуль формы отказа выполнения заявкиvipzМодуль формы выполненные заявкиPassМодуль формы входа в программуdatiМодуль формы вывод отчета за определенные периодchpassМодуль формы смены пароля

Дерево программных модулей изображено на рисунке 3.


Рисунок 3 - Дерево программных модулей

2.7 Схема взаимосвязей модулей и массивов данных


Схема взаимосвязей модулей и массивов данных представлена на рисунке 4


Рисунок 4 - Схема взаимосвязей модулей и массивов данных


2.8 Алгоритм работы модуля dati


Данный модуль реализует процедуру вывода отчета об отремонтированных объектах за период заданный пользователем.



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


Рекомендуемые системные требования: процессор 2000 МГц; оперативная память 1024 Мбайт; 100 Мбайт свободного места на жестком диске; мышь и клавиатура; операционная система Microsoft Windows XP/Vista /7; Microsoft Office 2003/2007.

Для входа в программу необходимо выбрать пользователя и ввести пароль. При запуске программы открывается основная форма, которая представлена на рисунке 6


Рисунок 6 - главная форма программы


В пункте меню Справочники доступны три справочника: Жилищный фонд, Жильцы и Ремонтные работы. В меню заявки доступны следующие пункты: Оформление заявки, Невыполненные заявки, Выполненные заявки.

При выборе в меню "Жилищный фонд", откроется соответствующее окно, где можно работать с этим справочником. При нажатии правой клавиши мыши на форме справочника появиться контекстное меню, где можно выбрать соответствующий пункт. В данном разделе возможно осуществлять поиск по адресу и сортировку по площади крыши.

Работа со справочником "Жилищный фонд" представлена на рисунке 7


Рисунок 7 - справочник "Жилищный фонд"


Работа с другими справочниками проводится аналогичным образом.

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

В пункте меню "Сервис" возможно изменение пароля и также резервное копирование базы данных.

В пункте меню "Отчеты" возможен просмотр предусмотренных программой отчетов.


2.10 Способы и результаты тестирования программного продукта


Тестирование проводиться с целью определения корректности работы информационной системы на всех вариантах наборов данных.

Проверка проводилась в трех различных режимах:

1. Проверка в нормальных условиях.

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


Рисунок 5 - тестирование программы в нормальном режиме


. Проверка в экстремальных условиях.

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


Рисунок 6 - тестирование программы в экстремальных условиях


Так же программа была протестирована на ввод двух одинаковых значений.

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


Рисунок 7 - тестирование программы при добавлении двух одинаковых записей


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


3. Проверка в работы программы в исключительных ситуациях


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

Заключение


В процессе выполнения данной курсовой работы была создана ИС для автоматизации учета ремонта жилищного фонда в муниципальном жилищно-ремонтном эксплуатационном предприятии. Данная ИС отвечает требованиям технического задания и в целом соответствует реальной предметной области.

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

Были успешно достигнуты поставленные цели, а именно:

закрепление и развитие теоретических знаний, полученных студентом в процессе изучения курса "Проектирование информационных систем";

развитие умения осуществлять выбор варианта технологии проектирования информационных систем (ИС);

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

умение вырабатывать и реализовывать решения.

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

Список использованных источников


1. Вендров А.М. CASE-технологии: Современные методы и средства проектирования информационных систем. М: Финансы и статистика 1998;

. Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник для студентов вузов - М.: Финансы и статистика, 2000;

. Вендров А.М. Практикум по проектированию программного обеспечения экономических информационных систем: Учебное пособие для студентов вузов. - М: Финансы и статистика, 2002;

. Базы данных. Учебник для вузов. /Под ред. Хоменко А.Д., - М.: 2000.

. Карпова Т.С. Базы данных: Модели, разработка, реализация. - СПб: Питер, 2001.

. Дарахвелидзе, П.Г. Программирование в Delphi 7/П.Г. Дарахвелидзе, Е.П. Марков. - Спб.: БХВ-Петербург, 2005. - 784 с



Приложения


Приложение А


Модель ИС по стандарту IDEF0 и методологии SADT


Рисунок Б.1 - Уровень A0 - автоматизация учета ремонта в МЖРЭП


Рисунок Б.2 - Уровень A1


Рисунок Б.3 - Уровень A2 - определение уровня доступа


Рисунок Б.4 - Уровень A2 - декомпозиция блока изменение БД


Рисунок Б.5 - Уровень A3 - декомпозиция блока работа с БД


Рисунок Б.6 - Уровень A3 - декомпозиция блока добавление, удаление, редактирование записей


Рисунок Б.6 - Уровень A4 - Оформление заявки


Рисунок Б.7 - Уровень A2 - выполнение запросов пользователей


Приложение Б - Физическая модель данных


Рисунок Б1 - Физическая модель денных



Приложение В - Программный код созданной ИС

TFpass. FormCloseQuery (Sender: TObject; var CanClose: Boolean);application. MessageBox ('Вы хотите выйти из программы? ','Выход из программы',mb_yesno+mb_iconquestion) =idyes then. Terminate;canclose: =false;;TFpass. BitBtn1Click (Sender: TObject);;;TFpass. SpeedButton1Click (Sender: TObject);inifile: tinifile;: string;. od. InitialDir: =ExtractFilePath (Application. ExeName);dm. od. Execute then. Text: =dm. od. FileName;. ADO. Connected: =false;. ADO. ConnectionString: ='Provider=Microsoft. Jet. OLEDB.4.0; Data Source='+dm. od. FileName+'; Persist Security Info=False';. ADO. Connected: =true;('Произошла ошибка при подключении к базе');;;: = TIniFile. Create (ExtractFilePath (Application. ExeName) +'options. ini'); // загрузка из фала настроек пути к базе. WriteString ('Options', 'DBPath', dm. od. FileName);. Free;. TEMP. Active: =false;. TEMP.commandText: ='Select login fROM pass';. TEMP. Active: =true;. Clear;not dm. TEMP. Eof do. Items. Add (dm. TEMP. Fields [0]. AsString);. TEMP. Next;;;;TFpass. FormShow (Sender: TObject);inifile: tinifile;: string;. Caption: =application. Title;: = TIniFile. Create (ExtractFilePath (Application. ExeName) +'options. ini'); // загрузка из фала настроек пути к базе: = IniFile. ReadString ('Options', 'DBPath', ExtractFilePath (Application. ExeName) +'');. Text: =dbp;. Free;fileexists (dbp) =false then('База данных по указанному пути не была найдена! ');;;. ADO. Connected: =false;. ADO. ConnectionString: ='Provider=Microsoft. Jet. OLEDB.4.0; Data Source='+dbp+'; Persist Security Info=False';. ADO. Connected: =true;('Произошла ошибка при подключении к базе');;;. Clear; e. Clear;. TEMP. Active: =false;. TEMP.commandText: ='Select login fROM pass';. TEMP. Active: =true;not dm. TEMP. Eof do. Items. Add (dm. TEMP. Fields [0]. AsString);. TEMP. Next;;;TFpass. BitBtn2Click (Sender: TObject);cb. Text='' then showmessage ('Пользователь не выбран')if e. Text='' then showmessage ('Пароль не введен'). temp. Active: =false;. temp.commandText: ='select login from pass where (login="'+cb. Text+'") and (pass="'+e. Text+'") ';. temp. Active: =true;dm. temp. RecordCount>0 thencb. text='Администратор' then. Hide;. sb. Panels [0]. Text: =cb. Text+', вошел в программу в: '+ timetostr (time);. showmodal;if cb. Text='Работник' then. Hide;. n99. Visible: =false;. n5. Visible: =false;. sb. Panels [0]. Text: =cb. Text+', вошел в программу в: '+ timetostr (time);. showmodal;if cb. Text='Гость' then

// fmain. n10. Visible: =false;. n11. Visible: =false;. n12. Visible: =false;. n15. Visible: =false;. n16. Visible: =false;. n17. Visible: =false;. n99. Visible: =false;. n5. Visible: =false;. N2. Visible: =false;. N3. Visible: =false;. N4. Visible: =false;. N5. Visible: =false;. N6. Visible: =false;. N7. Visible: =false;. N8. Visible: =false;. N9. Visible: =false;. N10. Visible: =false;. N11. Visible: =false;. N12. Visible: =false;. N13. Visible: =false;. N14. Visible: =false;. N15. Visible: =false;. Hide;. sb. Panels [0]. Text: =cb. Text+', вошел в программу в: '+ timetostr (time);. showmodal;;('Проверьте правильность пароля');;;;;TFpass. cbKeyPress (Sender: TObject; var Key: Char);: =#0;;.TFChPAss. FormShow (Sender: TObject);. Clear;. temp. Active: =false;. temp.commandText: ='Select login from pass WHERE (login<>"Гость") order by login';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;;TFChPAss. cbKeyPress (Sender: TObject; var Key: Char);: =#0;;TFChPAss. BitBtn2Click (Sender: TObject);cb. Text='' then showmessage ('Вы не выбрали имя пользователя')if e1. Text='' then showmessage ('Вы не ввели пароль')if e2. Text='' then showmessage ('Вы не ввели подтверждение пароля')if e2. Text<>e1. Text then showmessage ('Пароль и подтверждение пароля не совпадают').com.commandtext: ='Update pass Set pass="'+e2. Text+'" where (login = "'+cb. Text+'") ';.com. Execute;('Пароль изменен');;;;TFChPAss. FormCloseQuery (Sender: TObject; var CanClose: Boolean);. Clear;. Text: =''; e2. Text: ='';;;TFChPAss. BitBtn1Click (Sender: TObject);;;.TFdati. BitBtn1Click (Sender: TObject);;;TFdati. FormCloseQuery (Sender: TObject; var CanClose: Boolean);. Date: =date;. Date: =date;;;TFdati. FormShow (Sender: TObject);. Date: =date;. Date: =date;;TFdati. BitBtn2Click (Sender: TObject);,NewTemplate,FindText, NewStr, Replace,ReplaceWith: OleVariant;,SaveWithDocument,Range: OleVariant;: Table;: integer;: boolean;: TRegistry;: real;dtp1. Date>dtp2. Date then('Ошибка в последовательности дат');;;

// Проверяем, инсталлирован ли Word: = TRegistry. Create;. RootKey: = HKEY_CLASSES_ROOT;: =reg. KeyExists ('Word. Application');. Free;

// flag: =true;flag=false then. MessageBox ('Word не устанволен','Отчет',mb_ok+mb_iconstop);;;tm=0 then. Visible: =false;. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word: =ExtractFilePath (Application. EXEName) +'\Dot\Ремонт. dot'; // путь к шаблону документа. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица: =true; // параметр, задающий режим замены: ='#1'; // что меняем: ='с '+datetostr (dtp1. Date) +' по '+datetostr (dtp2. Date); // на что меняем. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);. temp. Active: =false;. temp.commandText: ='Select adr_z,sum (st_nr) FROM zil,zilci,zayavka,naznR WHERE (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za BETWEEN #'+fmain. data (dtp1. Date) +'# and #'+fmain. data (dtp2. Date) +'#) GROUP BY adr_z';. temp. Active: =true;: =2;: =0;(not dm. temp. Eof) do. Rows. Add (EmptyParam);. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;. Cell (i,

). Range. Text: = dm. temp. Fields [1]. AsString;: =summa+dm. temp. Fields [1]. asfloat;(i); dm. temp. next;;: =true; // параметр, задающий режим замены: ='#2'; // что меняем: =floattostr (summa); // на что меняем. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);. Rows. Item (i). Delete;. Visible: =true; // делаем приложение MS Word видимым. Disconnect; // Разрываем связь с сервероif tm=1 then. Visible: =false;. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word: =ExtractFilePath (Application. EXEName) +'\Dot\Изменение. dot'; // путь к шаблону документа. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица: =true; // параметр, задающий режим замены: ='#1'; // что меняем: ='с '+datetostr (dtp1. Date) +' по '+datetostr (dtp2. Date); // на что меняем. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);. temp. Active: =false;. temp.commandText: ='Select nazv_rr,ocena_rc,cena_rc,data_rc from remr,rcen where (id_rr=id_rr_rc) and (data_rc BETWEEN #'+fmain. data (dtp1. Date) +'# and #'+fmain. data (dtp2. Date) +'#) ORDER BY data_rc';. temp. Active: =true;: =2;(not dm. temp. Eof) do. Rows. Add (EmptyParam);. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;. Cell (i,

). Range. Text: = dm. temp. Fields [1]. AsString;. Cell (i,

). Range. Text: = dm. temp. Fields [2]. AsString;. Cell (i,

). Range. Text: = dm. temp. Fields [3]. AsString;(i); dm. temp. next;;: =true; // параметр, задающий режим замены: ='#2'; // что меняем: =floattostr (summa); // на что меняем. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);. Rows. Item (i). Delete;. Visible: =true; // делаем приложение MS Word видимым. Disconnect; // Разрываем связь с сервероif tm=2 then. Visible: =false;. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word: =ExtractFilePath (Application. EXEName) +'\Dot\План. dot'; // путь к шаблону документа. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица: =true; // параметр, задающий режим замены: ='#1'; // что меняем: ='с '+datetostr (dtp1. Date) +' по '+datetostr (dtp2. Date); // на что меняем. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);. temp. Active: =false;. temp.commandText: ='Select adr_z,datapv_za from zil,zilci,zayavka where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is Null) and (dataot_za is Null) and (datapv_za BETWEEN #'+fmain. data (dtp1. Date) +'# and #'+fmain. data (dtp2. Date) +'#) ';. temp. Active: =true;: =2;(not dm. temp. Eof) do. Rows. Add (EmptyParam);. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;. Cell (i,

). Range. Text: = dm. temp. Fields [1]. AsString;(i); dm. temp. next;;: =true; // параметр, задающий режим замены: ='#2'; // что меняем: =floattostr (summa); // на что меняем. Range. Find. Execute (FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);. Rows. Item (i). Delete;. Visible: =true; // делаем приложение MS Word видимым. Disconnect; // Разрываем связь с серверо;;.TFmain. FormCloseQuery (Sender: TObject; var CanClose: Boolean);application. MessageBox ('Вы хотите выйти из программы? ','Выход из программы',mb_yesno+mb_iconquestion) =idyes then. Terminate;canclose: =false;;TFmain. N2Click (Sender: TObject);;;TFmain. FormShow (Sender: TObject);fileexists ('photo. jpg') then. Picture. LoadFromFile ('photo. jpg');;;TFmain. data (data: tdatetime): string;g,m,d: word;(data,g,m,d);: =''+currtostr (m) +'/'+currtostr (d) +'/'+currtostr (g) +'';;TFmain. Update (rs,tab: string): boolean;. temp. Active: =false;. temp.commandText: ='Select log_'+rs+' from '+tab+' where (id_'+rs+'='+tmp+') ';. temp. Active: =true;dm. temp. Fields [0]. AsBoolean=true then: =false;.com.commandText: ='Update '+tab+' set log_'+rs+'=TRUE where id_'+rs+'='+tmp+'';.com. Execute;: =true;;;TFmain. Delete (rs,tab,temp: string): boolean;. temp. Active: =false;. temp.commandText: ='Select log_'+rs+' from '+tab+' where (id_'+rs+'='+tmp+') ';. temp. Active: =true;dm. temp. Fields [0]. AsBoolean=true then: =false;if application. MessageBox ('Вы хотите удалить запись? ','Удаление',mb_yesno+mb_iconquestion) =idyes then.com.commandText: ='Delete * from '+tab+' where (id_'+rs+'='+tmp+') ';.com. Execute;: =true;('Удаление прошло успешно');;;TFmain. N4Click (Sender: TObject);inifile: tinifile;: string;: = TIniFile. Create (ExtractFilePath (Application. ExeName) +'options. ini'); // загрузка из фала настроек пути к базе: = IniFile. ReadString ('options', 'dbpath', '');. Free;

// showmessage (dbp);(pchar (DBP),pchar (ExtractFilePath (Application. ExeName) +'Архив\base_'+datetostr (date) +'_'+stringreplace (timetostr (time),': ','. ', [rfReplaceAll, rfIgnoreCase]) +'. mdb'),true);fileexists (ExtractFilePath (Application. ExeName) +'Архив\base_'+datetostr (date) +'_'+stringreplace (timetostr (time),': ','. ', [rfReplaceAll, rfIgnoreCase]) +'. mdb') =true then showmessage ('Резервная копия создана успешно')showmessage ('Ошибка при создании резервной копии');;TFmain. N3Click (Sender: TObject);. Caption: =n3. Caption;. ShowModal;;TFmain. N6Click (Sender: TObject);. Caption: =n6. Caption;. DBGrid1. PopupMenu: =fzil. PopupMenu1;. DBGrid1. DataSource: =dm. zs;. z. Active: =false;. z.commandText: ='select id_z, adr_z, tdom_z, tkr_z, pl_z, lift_z from Zil';. z. Active: =true;. ShowModal;;TFmain. N7Click (Sender: TObject);. Caption: =n7. Caption;. DBGrid1. PopupMenu: =fzilci. PopupMenu1;. DBGrid1. DataSource: =dm. zls;. zl. Active: =false;. zl.commandText: ='Select id_zl,fio_zl,adr_z,kv_zl from zil,zilci where (id_z=id_z_zl) ';. zl. Active: =true;. ShowModal;;TFmain. N8Click (Sender: TObject);. Caption: =n8. Caption;. DBGrid1. PopupMenu: =fremr. PopupMenu1;. DBGrid1. DataSource: =dm. rrs;. rr. Active: =false;. rr.commandText: ='Select id_rr,nazv_rr,st_rr,edi_rr from RemR';. rr. Active: =true;. ShowModal;;TFmain. N10Click (Sender: TObject);. Caption: =n10. Caption;. DBGrid1. PopupMenu: =fzayavka. PopupMenu1;. za. Active: =false;. za.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,dataz_za,datapv_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is null) and (dataot_za is null) ';. za. Active: =true;. ShowModal;;TFmain. N11Click (Sender: TObject);. Caption: =n11. Caption;. DBGrid1. PopupMenu: =fVipZ. PopupMenu1;. vz. Active: =false;. vz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,datav_za, sum (st_nr) as summa from zayavka,zil,zilci,naznR '+

'where (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za is not NULL) GROUP BY id_za, ([adr_z] &", кв. "& [kv_zl]),soder_za,datav_za';. vz. Active: =true;. ShowModal;;TFmain. N12Click (Sender: TObject);. Caption: =n12. Caption;. DBGrid1. PopupMenu: =fZotk. PopupMenu1;. otz. Active: =false;. otz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,prich_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (dataot_za is not null) ';. otz. Active: =true;. ShowModal;;TFmain. N14Click (Sender: TObject);: =0;. Caption: =n14. Caption;. ShowModal;;TFmain. N15Click (Sender: TObject);: =1;. Caption: =n15. Caption;. ShowModal;;TFmain. N16Click (Sender: TObject);: =2;. Caption: =n16. Caption;. ShowModal;;TFmain. N17Click (Sender: TObject);,NewTemplate,FindText, NewStr, Replace,ReplaceWith: OleVariant;,SaveWithDocument,Range: OleVariant;: Table;: integer;: boolean;: TRegistry;: real;

// Проверяем, инсталлирован ли Word: = TRegistry. Create;. RootKey: = HKEY_CLASSES_ROOT;: =reg. KeyExists ('Word. Application');. Free;

// flag: =true;flag=false then. MessageBox ('Word не устанволен','Отчет',mb_ok+mb_iconstop);;;. Visible: =false;. Connect; // Устанавливаем связь с сервером

// Открываем шаблон otchet. dot в Word: =ExtractFilePath (Application. EXEName) +'\Dot\Отказ. dot'; // путь к шаблону документа. Documents. Add (Template,EmptyParam,EmptyParam,EmptyParam); // создаем документ на основе шаблона. ConnectTo (WordApplication1. ActiveDocument); // Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

// Заполняем таблицу списка объектов: =WordDocument1. Tables. Item (1); // связываем имя Table1 с первой таблицей документа

// WordDocument1. Tables - это массив таблиц документа (тип Tables), а WordDocument1. Tables. Item (i) - i-ая таблица. temp. Active: =false;. temp.commandText: ='Select adr_z,prich_za FROM zil,zilci,zayavka WHERE (id_z=id_z_zl) and (id_zl=id_zl_za) and (dataot_za is not null) ';. temp. Active: =true;: =2;(not dm. temp. Eof) do. Rows. Add (EmptyParam);. Cell (i, 1). Range. Text: = dm. temp. Fields [0]. AsString;. Cell (i,

). Range. Text: = dm. temp. Fields [1]. AsString;(i); dm. temp. next;;. Rows. Item (i). Delete;. Visible: =true; // делаем приложение MS Word видимым. Disconnect; // Разрываем связь с серверо;.TFNaznR. BitBtn2Click (Sender: TObject);. Clear; e3. Clear; cb1. Clear;tm=1 then.com.commandText: ='Update naznr set log_nr=FALSE WHERE (id_nr='+tmp2+') ';.com. Execute;;id_rr<>'' then.com.commandText: ='Update RemR Set log_rr=FALSE WHERE (id_rr='+id_rr+') ';.com. Execute;_rr: ='';;. Visible: =false;;TFNaznR. FormCloseQuery (Sender: TObject; var CanClose: Boolean);panel1. Visible=true thenClick (Sender);;;TFNaznR. N1Click (Sender: TObject);. Visible: =true;: =0;. Clear; e3. Clear; cb1. Clear;. temp. Active: =false;. temp.commandText: ='Select nazv_rr from RemR';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;;TFNaznR. N2Click (Sender: TObject);dm. nr. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. nr. Fields [0]. AsString; tm: =1;

// ******************************fmain. Update ('nr','naznR') =false then('Данная запись используется другим пользователем');;;

// ******************************. Clear;. temp. Active: =false;. temp.commandText: ='Select nazv_rr from RemR';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;. Text: =dm. nr. fieldbyname ('ob_nr'). AsString;. Text: =dm. nr. fieldbyname ('nazv_rr'). AsString;

// e2. Text: =dm. nr. fieldbyname ('st_nr'). AsString;. text: =dm. nr. fieldbyname ('st_rr_nr'). AsString;Change (Sender);. Visible: =true;;TFNaznR. N4Click (Sender: TObject);dm. nr. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. nr. Fields [0]. AsString; tm: =1;fmain. Delete ('nr','naznR',tmp) =false then('Данная запись используется другим пользователем');;dm. nr. Requery ();;TFNaznR. cb1Change (Sender: TObject);id_rr<>'' then.com.commandText: ='Update RemR Set log_rr=FALSE WHERE (id_rr='+id_rr+') ';.com. Execute;_rr: ='';;. temp. Active: =false;. temp.commandText: ='Select id_rr,st_rr from RemR WHERE (nazv_rr="'+cb1. Text+'") and (log_rr=false) ';. temp. Active: =true;dm. temp. RecordCount=0 then('Текущая запись занята');. Text: ='';_rr: =dm. temp. fields [0]. asstring;. Text: =dm. temp. fields [1]. asstring;.com.commandText: ='Update RemR Set log_rr=TRUE WHERE (id_rr='+id_rr+') ';.com. Execute;;;TFNaznR. BitBtn1Click (Sender: TObject);: real;(cb1. Text='') OR (e1. Text='') then showmessage ('Вы не заполнили одно или несколько полей'). Text: =floattostr (roundto (strtofloat (e1. Text),-2));: =roundto (strtofloat (e1. Text) *strtofloat (e3. Text),-2);('Ошибка при вводе числовых значений');;tm=0 then. temp. Active: =false;. temp.commandText: ='Select id_nr from naznR where (id_rr_nr='+id_rr+') and (id_za_nr='+tmp+') ';. temp. Active: =true;dm. temp. RecordCount>0 then showmessage ('Подобная запись уже существует').com.commandText: ='Insert into naznr (id_rr_nr,st_rr_nr,ob_nr,st_nr, id_za_nr) values ('+id_rr+',"'+e3. Text+'","'+e1. Text+'","'+floattostr (summa) +'",'+tmp+') ';.com. Execute;('Запись успешно добавлена');. nr. Requery ();Click (Sender);;. temp. Active: =false;. temp.commandText: ='Select id_nr from naznR where (id_rr_nr='+id_rr+') and (id_za_nr='+tmp+') ';. temp. Active: =true;

// if (dm. temp. RecordCount>0) and (tmp<>dm. temp. Fields [0]. asstring) then showmessage ('Подобная запись уже существует')

// else.com.commandText: ='Update naznr SET id_rr_nr="'+id_rr+'",st_rr_nr="'+e3. Text+'",ob_nr="'+e1. Text+'",st_nr="'+floattostr (summa) +'", id_za_nr="'+tmp+'" WHERE (id_nr='+tmp2+') ';.com. Execute;('Запись успешно изменена');. nr. Requery ();Click (Sender);;;;;TFNaznR. N7Click (Sender: TObject);. nr. Active: =false;. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') ';. nr. Active: =true;;TFNaznR. N9Click (Sender: TObject);. nr. Active: =false;. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') ORDER BY st_nr';. nr. Active: =true;;TFNaznR. N6Click (Sender: TObject);: ='';trim (tmpc) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmpc) ='' then showmessage ('Задайте фильтр'). nr. Active: =false;. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') and (nazv_rr like "%'+tmpc+'%") ';. nr. Active: =true;;;;.TFremR. BitBtn2Click (Sender: TObject);. Clear; e2. Clear; e3. Clear;tm=1 then.com.commandText: ='Update remr set log_rr=FALSE WHERE (id_rr='+tmp+') ';.com. Execute;;. Visible: =false;;TFremR. FormCloseQuery (Sender: TObject; var CanClose: Boolean);panel1. Visible=true thenClick (Sender);;;TFremR. BitBtn1Click (Sender: TObject);(e1. Text='') or (e2. Text='') or (e3. Text='') then showmessage ('Вы не заполнили одно или несколько полей'). Text: =floattostr (roundto (strtofloat (e2. Text),-2));('Некорректный ввод числовых значений');;;tm=0 then. temp. Active: =false;. temp.commandText: ='Select id_rr from remr where (nazv_rr="'+e1. Text+'") ';. temp. Active: =true;dm. temp. RecordCount>0 then showmessage ('Подобная запись уже существует').com.commandText: ='Insert into remr (nazv_rr,st_rr,edi_rr) values ("'+e1. Text+'","'+e2. Text+'","'+e3. Text+'") ';.com. Execute;. temp. Active: =false;. temp.commandText: ='Select max (id_rr) from remr';. temp. Active: =true;: =dm. temp. Fields [0]. AsString;.com.commandText: ='Insert into rCen (id_rr_rc,cena_rc,data_rc) values ('+tmpC+',"'+e2. Text+'","'+datetostr (date) +'") ';.com. Execute;('Запись успешно добавлена');. rr. Requery ();Click (Sender);;. temp. Active: =false;. temp.commandText: ='Select id_rr from remr where (nazv_rr="'+e1. Text+'") ';. temp. Active: =true;(dm. temp. RecordCount>0) and (tmp<>dm. temp. Fields [0]. asstring) then showmessage ('Подобная запись уже существует').com.commandText: ='Update remr SET nazv_rr="'+e1. Text+'",st_rr="'+e2. Text+'",edi_rr="'+e3. Text+'" WHERE (id_rr='+tmp+') ';.com. Execute;tmpc<>e2. Text then. temp. Active: =false;. temp.commandText: ='Select id_rc from rCen WHERE (id_rr_rc='+tmp+') and (data_rc = #'+fmain. data (date) +'#) ';. temp. Active: =true;dm. temp. RecordCount=0 then.com.commandText: ='Insert into rCen (id_rr_rc,cena_rc,data_rc,ocena_rc) values ('+tmp+',"'+e2. Text+'","'+datetostr (date) +'","'+tmpc+'") ';.com. Execute;.com.commandText: ='update rCen set cena_rc="'+e2. Text+'",ocena_rc="'+tmpc+'" where id_rc='+dm. temp. Fields [0]. AsString+'';.com. Execute;;;('Запись успешно изменена');. rr. Requery ();Click (Sender);;;;;TFremR. N1Click (Sender: TObject);. Visible: =true;: =0;;TFremR. N2Click (Sender: TObject);dm. rr. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. rr. Fields [0]. AsString; tm: =1;

// ******************************fmain. Update ('rr','remr') =false then('Данная запись используется другим пользователем');;;

// ******************************. Text: =dm. rr. fieldbyname ('nazv_rr'). AsString;. Text: =dm. rr. fieldbyname ('st_rr'). AsString;. Text: =dm. rr. fieldbyname ('edi_rr'). AsString;: =dm. rr. fieldbyname ('st_rr'). AsString;. Visible: =true;;TFremR. N4Click (Sender: TObject);dm. rr. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. rr. Fields [0]. AsString; tm: =1;fmain. Delete ('rr','remr',tmp) =false then('Данная запись используется другим пользователем');;dm. rr. Requery ();;TFremR. N7Click (Sender: TObject);. rr. Active: =false;. rr.commandText: ='Select id_rr,nazv_rr,st_rr,edi_rr from RemR';. rr. Active: =true;;TFremR. N6Click (Sender: TObject);: ='';trim (tmp) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmp) ='' then showmessage ('Задайте фильтр'). rr. Active: =false;. rr.commandText: ='Select id_rr,nazv_rr,st_rr,edi_rr from RemR where (nazv_rr like "%'+tmp+'%") ';. rr. Active: =true;;;;TFremR. N9Click (Sender: TObject);. rr. Active: =false;. rr.commandText: ='Select id_rr,nazv_rr,st_rr,edi_rr from RemR order by st_rr';. rr. Active: =true;;.TFVipZ. N6Click (Sender: TObject);: ='';trim (tmp) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmp) ='' then showmessage ('Задайте фильтр'). vz. Active: =false;. vz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,datav_za, sum (st_nr) as summa from zayavka,zil,zilci,naznR '+

'where (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za is not NULL) and ( ([adr_z] &", кв. "& [kv_zl]) like "%'+tmp+'%") GROUP BY id_za, ([adr_z] &", кв. "& [kv_zl]),soder_za,datav_za';. vz. Active: =true;;;;TFVipZ. N7Click (Sender: TObject);. vz. Active: =false;. vz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,datav_za, sum (st_nr) as summa from zayavka,zil,zilci,naznR '+

'where (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za is not NULL) GROUP BY id_za, ([adr_z] &", кв. "& [kv_zl]),soder_za,datav_za';. vz. Active: =true;;TFVipZ. N9Click (Sender: TObject);. vz. Active: =false;. vz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,datav_za, sum (st_nr) as summa from zayavka,zil,zilci,naznR '+

'where (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za is not NULL) GROUP BY id_za, ([adr_z] &", кв. "& [kv_zl]),soder_za,datav_za ORDER BY datav_za';. vz. Active: =true;;TFVipZ. N13Click (Sender: TObject);dm. vz. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. vz. Fields [0]. AsString;application. MessageBox ('Вы хотите отменить выполнение заявки? ','Заявка',mb_yesno+mb_iconquestion) =idyes then.com.commandText: ='UPDATE zayavka SET datav_za= NULL where (id_za='+tmp+') ';.com. Execute;('Выполнение заявки отменено');. vz. Requery ();;;TFVipZ. N2Click (Sender: TObject);dm. vz. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. vz. Fields [0]. AsString;. Caption: =n2. Caption;. DBGrid1. PopupMenu: =nil;. nr. Active: =false;. nr.commandText: ='Select id_nr,nazv_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') ';. nr. Active: =true;. ShowModal;;.TFZayavka. BitBtn2Click (Sender: TObject);. date: =date; dtp2. Date: =date; cb1. Clear;tm=1 then.com.commandText: ='Update zayavka set log_za=FALSE WHERE (id_za='+tmp+') ';.com. Execute;;id_zl<>'' then.com.commandText: ='Update zilci set log_zl=false WHERE id_zl='+id_zl+'';.com. Execute;_zl: ='';;. Visible: =false;;TFZayavka. N1Click (Sender: TObject);. Visible: =true;: =0;. Clear; dtp1. date: =date; dtp2. Date: =date;. temp. Active: =false;. temp.commandText: ='Select ([adr_z] &", кв. "& [kv_zl]) from zil,zilci WHERE (id_z=id_z_zl) order by adr_z,kv_zl';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;;TFZayavka. cb1Change (Sender: TObject);id_zl<>'' then.com.commandText: ='Update zilci set log_zl=false WHERE id_zl='+id_zl+'';.com. Execute;_zl: ='';;. temp. Active: =false;. temp.commandText: ='Select id_zl from zil,zilci WHERE (id_z=id_z_zl) AND ( ([adr_z] &", кв. "& [kv_zl]) ="'+cb1. Text+'") and (log_zl=false) ';. temp. Active: =true;dm. temp. RecordCount=0 then('Текущая запись занята');. Text: ='';_zl: =dm. temp. fields [0]. asstring;.com.commandText: ='Update zilci set log_zl=true WHERE id_zl='+id_zl+'';.com. Execute;;;TFZayavka. N2Click (Sender: TObject);dm. za. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. za. Fields [0]. AsString; tm: =1;

// ******************************fmain. Update ('za','zayavka') =false then('Данная запись используется другим пользователем');;;

// ******************************. Clear;. temp. Active: =false;. temp.commandText: ='Select ([adr_z] &", кв. "& [kv_zl]) from zil,zilci WHERE (id_z=id_z_zl) order by adr_z,kv_zl';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;. Date: =dm. za. fieldbyname ('dataz_za'). AsDateTime;. Text: =dm. za. fieldbyname ('adr'). AsString;. Text: =dm. za. fieldbyname ('soder_za'). AsString;. Date: =dm. za. fieldbyname ('datapv_za'). AsDateTime;Change (Sender);. Visible: =true;;TFZayavka. N4Click (Sender: TObject);dm. za. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. za. Fields [0]. AsString; tm: =1;fmain. Delete ('za','zayavka',tmp) =false then('Данная запись используется другим пользователем');;dm. za. Requery ();;TFZayavka. BitBtn1Click (Sender: TObject);(cb1. Text='') then showmessage ('Вы не заполнили одно или несколько полей')dtp1. Date>dtp2. Date then('Неправильная последовательность дат');;;tm=0 then. temp. Active: =false;. temp.commandText: ='Select id_za from zayavka where (id_zl_za='+id_zl+') and (dataz_za=#'+fmain. data (dtp1. date) +'#) ';. temp. Active: =true;dm. temp. RecordCount>0 then showmessage ('Подобная запись уже существует').com.commandText: ='Insert into zayavka (id_zl_za,dataz_za,datapv_za,soder_za) values ('+id_zl+',"'+datetostr (dtp1. Date) +'","'+datetostr (dtp2. Date) +'","'+e1. Text+'") ';.com. Execute;('Запись успешно добавлена');. za. Requery ();Click (Sender);;. temp. Active: =false;. temp.commandText: ='Select id_za from zayavka where (id_zl_za='+id_zl+') and (dataz_za=#'+fmain. data (dtp1. date) +'#) ';. temp. Active: =true;(dm. temp. RecordCount>0) and (tmp<>dm. temp. Fields [0]. asstring) then showmessage ('Подобная запись уже существует').com.commandText: ='Update zayavka SET id_zl_za="'+id_zl+'",dataz_za="'+datetostr (dtp1. Date) +'",datapv_za="'+datetostr (dtp2. date) +'",soder_za="'+e1. Text+'" WHERE (id_za='+tmp+') ';.com. Execute;('Запись успешно изменена');. za. Requery ();Click (Sender);;;;;TFZayavka. cb1KeyPress (Sender: TObject; var Key: Char);: =#0;;TFZayavka. FormCloseQuery (Sender: TObject; var CanClose: Boolean);panel1. Visible=true thenClick (Sender);;;TFZayavka. N7Click (Sender: TObject);. za. Active: =false;. za.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,dataz_za,datapv_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is null) and (dataot_za is null) ';. za. Active: =true;;TFZayavka. N6Click (Sender: TObject);: ='';trim (tmp) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmp) ='' then showmessage ('Задайте фильтр'). za. Active: =false;. za.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,dataz_za,datapv_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and ( ([adr_z] &", кв. "& [kv_zl]) like "%'+tmp+'%") and (datav_za is null) and (dataot_za is null) ';. za. Active: =true;;;;TFZayavka. N9Click (Sender: TObject);. za. Active: =false;. za.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,dataz_za,datapv_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is null) and (dataot_za is null) ORDER BY dataz_za';. za. Active: =true;;TFZayavka. N10Click (Sender: TObject);. za. Active: =false;. za.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,dataz_za,datapv_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (datav_za is null) and (dataot_za is null) ORDER BY datapv_za';. za. Active: =true;;TFZayavka. N11Click (Sender: TObject);dm. za. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. za. Fields [0]. AsString;. Caption: =n11. Caption;. DBGrid1. PopupMenu: =fnaznr. PopupMenu1;. nr. Active: =false;. nr.commandText: ='Select id_nr,nazv_rr,edi_rr,st_rr_nr,st_rr,ob_nr,st_nr from naznR,Remr where (id_rr=id_rr_nr) and (id_za_nr='+tmp+') ';. nr. Active: =true;. ShowModal;;TFZayavka. N15Click (Sender: TObject);dm. za. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. za. Fields [0]. AsString;. temp. Active: =false;. temp.commandText: ='Select * from naznR where (id_za_nr='+tmp+') ';. temp. Active: =true;dm. temp. RecordCount=0 then showmessage ('Невозможно выполнить заявку'+#13+'Вы не назначили ни одной работы! ').com.commandText: ='UPDATE zayavka SET datav_za=date () where (id_za='+tmp+') ';.com. Execute;('Заявка выполнена');. za. Requery ();;;TFZayavka. N13Click (Sender: TObject);dm. za. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. za. Fields [0]. AsString;application. MessageBox ('Вы хотите отклонить заявку? ','Заявка',mb_yesno+mb_iconquestion) =idyes then: ='';trim (tmp2) ='' do: =inputbox (n13. Caption,'Задайте причину отказа','');trim (tmp2) ='' then showmessage ('Задайте причину отказа').com.commandText: ='UPDATE zayavka SET dataot_za=date (),prich_za="'+tmp2+'" where (id_za='+tmp+') ';.com. Execute;('Заявка отклонена');. za. Requery ();;;;;.TFZil. BitBtn2Click (Sender: TObject);. Clear; e2. Clear; cb1. Text: =''; cb2. Text: =''; cb3. Text: ='';tm=1 then.com.commandText: ='Update zil set log_z=FALSE WHERE (id_z='+tmp+') ';.com. Execute;;. Visible: =false;;TFZil. BitBtn1Click (Sender: TObject);(e1. Text='') or (e2. Text='') or (cb1. Text='') or (cb2. Text='') or (cb3. text='') then showmessage ('Вы не заполнили одно или несколько полей'). Text: =floattostr (roundto (strtofloat ( (e2. Text)),-2));('Некорректный ввод числовых значений');;;tm=0 then. temp. Active: =false;. temp.commandText: ='Select id_z from zil where (adr_z="'+e1. Text+'") ';. temp. Active: =true;dm. temp. RecordCount>0 then showmessage ('Подобная запись уже существует').com.commandText: ='Insert into Zil (adr_z,tdom_z,tkr_z,pl_z,lift_z) values ("'+e1. Text+'","'+cb1. Text+'","'+cb2. Text+'","'+e2. Text+'","'+cb3. Text+'") ';.com. Execute;('Запись успешно добавлена');. z. Requery ();Click (Sender);;. temp. Active: =false;. temp.commandText: ='Select id_z from zil where (adr_z="'+e1. Text+'") ';. temp. Active: =true;(dm. temp. RecordCount>0) and (tmp<>dm. temp. Fields [0]. asstring) then showmessage ('Подобная запись уже существует').com.commandText: ='Update zil SET adr_z="'+e1. Text+'",tdom_z="'+cb1. Text+'",tkr_z="'+cb2. Text+'",pl_z="'+e2. Text+'",lift_z="'+cb3. Text+'" WHERE (id_z='+tmp+') ';.com. Execute;('Запись успешно изменена');. z. Requery ();Click (Sender);;;;;TFZil. cb1KeyPress (Sender: TObject; var Key: Char);: =#0;;TFZil. N1Click (Sender: TObject);. Visible: =true;: =0;;TFZil. N2Click (Sender: TObject);dm. z. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. z. Fields [0]. AsString; tm: =1;

// ******************************fmain. Update ('z','zil') =false then('Данная запись используется другим пользователем');;;

// ******************************. Text: =dm. z. fieldbyname ('adr_z'). AsString;. Text: =dm. z. fieldbyname ('tdom_z'). AsString;. Text: =dm. z. fieldbyname ('tkr_z'). AsString;. Text: =dm. z. fieldbyname ('lift_z'). AsString;. Text: =dm. z. fieldbyname ('pl_z'). AsString;. Visible: =true;;TFZil. N4Click (Sender: TObject);dm. z. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. z. Fields [0]. AsString; tm: =1;fmain. Delete ('z','zil',tmp) =false then('Данная запись используется другим пользователем');;dm. z. Requery ();;TFZil. FormCloseQuery (Sender: TObject; var CanClose: Boolean);panel1. Visible=true thenClick (Sender);;;TFZil. N6Click (Sender: TObject);: ='';trim (tmp) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmp) ='' then showmessage ('Задайте фильтр'). z. Active: =false;. z.commandText: ='select id_z, adr_z, tdom_z, tkr_z, pl_z, lift_z from Zil WHERE (adr_z like "%'+tmp+'%") ';. z. Active: =true;;;;TFZil. N7Click (Sender: TObject);. z. Active: =false;. z.commandText: ='select id_z, adr_z, tdom_z, tkr_z, pl_z, lift_z from Zil';. z. Active: =true;;TFZil. N9Click (Sender: TObject);. z. Active: =false;. z.commandText: ='select id_z, adr_z, tdom_z, tkr_z, pl_z, lift_z from Zil order by pl_z';. z. Active: =true;;.TFZilci. BitBtn2Click (Sender: TObject);. Clear; e2. Clear; cb1. Clear;tm=1 then.com.commandText: ='Update zilci set log_zl=FALSE WHERE (id_zl='+tmp+') ';.com. Execute;;. Visible: =false;;TFZilci. FormCloseQuery (Sender: TObject; var CanClose: Boolean);panel1. Visible=true thenClick (Sender);;;TFZilci. BitBtn1Click (Sender: TObject);(e1. Text='') or (e2. Text='') or (cb1. Text='') then showmessage ('Вы не заполнили одно или несколько полей')(e2. Text);('Некорректный ввод числовых значений');;;tm=0 then. temp. Active: =false;. temp.commandText: ='Select id_zl from zilci where (id_z_zl='+id_z+') and (kv_zl='+e2. Text+') ';. temp. Active: =true;dm. temp. RecordCount>0 then showmessage ('Подобная запись уже существует').com.commandText: ='Insert into Zilci (fio_zl, id_z_zl,kv_zl) values ("'+e1. Text+'",'+id_z+','+e2. Text+') ';.com. Execute;('Запись успешно добавлена');. zl. Requery ();Click (Sender);;. temp. Active: =false;. temp.commandText: ='Select id_zl from zilci where (id_z_zl='+id_z+') and (kv_zl='+e2. Text+') ';. temp. Active: =true;(dm. temp. RecordCount>0) and (tmp<>dm. temp. Fields [0]. asstring) then showmessage ('Подобная запись уже существует').com.commandText: ='Update zilci SET fio_zl="'+e1. Text+'", id_z_zl="'+id_z+'",kv_zl="'+e2. Text+'" WHERE (id_zl='+tmp+') ';.com. Execute;('Запись успешно изменена');. zl. Requery ();Click (Sender);;;;;TFZilci. N1Click (Sender: TObject);. Visible: =true;: =0;. Clear;. temp. Active: =false;. temp.commandText: ='Select adr_z from zil order by adr_z';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;;TFZilci. N2Click (Sender: TObject);dm. zl. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. zl. Fields [0]. AsString; tm: =1;

// ******************************fmain. Update ('zl','zilci') =false then('Данная запись используется другим пользователем');;;

// ******************************. Clear;. temp. Active: =false;. temp.commandText: ='Select adr_z from zil order by adr_z';. temp. Active: =true;not dm. temp. Eof do. Items. Add (dm. temp. Fields [0]. AsString);. temp. Next;;. Text: =dm. zl. fieldbyname ('fio_zl'). AsString;. Text: =dm. zl. fieldbyname ('adr_z'). AsString;. Text: =dm. zl. fieldbyname ('kv_zl'). AsString;Change (Sender);. Visible: =true;;TFZilci. cb1Change (Sender: TObject);. temp. Active: =false;. temp.commandText: ='Select id_z from zil WHERE (adr_z="'+cb1. Text+'") ';. temp. Active: =true;_z: =dm. temp. fields [0]. asstring;;TFZilci. N4Click (Sender: TObject);dm. zl. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. zl. Fields [0]. AsString; tm: =1;fmain. Delete ('zl','zilci',tmp) =false then('Данная запись используется другим пользователем');;dm. zl. Requery ();;TFZilci. N6Click (Sender: TObject);: ='';trim (tmp) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmp) ='' then showmessage ('Задайте фильтр'). zl. Active: =false;. zl.commandText: ='Select id_zl,fio_zl,adr_z,kv_zl from zil,zilci where (id_z=id_z_zl) and (fio_zl like "%'+tmp+'%") ';. zl. Active: =true;;;;TFZilci. N7Click (Sender: TObject);. zl. Active: =false;. zl.commandText: ='Select id_zl,fio_zl,adr_z,kv_zl from zil,zilci where (id_z=id_z_zl) ';. zl. Active: =true;;TFZilci. N9Click (Sender: TObject);. zl. Active: =false;. zl.commandText: ='Select id_zl,fio_zl,adr_z,kv_zl from zil,zilci where (id_z=id_z_zl) order by kv_zl';. zl. Active: =true;;TFZilci. e1KeyPress (Sender: TObject; var Key: Char);not (Key in [#8, 'а'. 'я','А'. 'Я',' ','. ']) then: = #0;;;.TFZOtk. N13Click (Sender: TObject);dm. otz. Fields [0]. AsString='' then('Запись для редактирования отсутствует');;;: =dm. otz. Fields [0]. AsString;application. MessageBox ('Вы хотите отменить отклонение заявки? ','Заявка',mb_yesno+mb_iconquestion) =idyes then.com.commandText: ='UPDATE zayavka SET dataot_za= NULL,prich_za = NULL where (id_za='+tmp+') ';.com. Execute;('Выполнение заявки отменено');. otz. Requery ();;;TFZOtk. N6Click (Sender: TObject);: ='';trim (tmp) ='' do: =inputbox (n6. Caption,'Задайте фильтр','');trim (tmp) ='' then showmessage ('Задайте фильтр'). otz. Active: =false;. otz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,prich_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (dataot_za is not null) and ( ([adr_z] &", кв. "& [kv_zl]) like "%'+tmp+'%") ';. otz. Active: =true;;;;TFZOtk. N7Click (Sender: TObject);. otz. Active: =false;. otz.commandText: ='Select id_za, ([adr_z] &", кв. "& [kv_zl]) as adr,soder_za,prich_za from zayavka,zil,zilci where (id_z=id_z_zl) and (id_zl=id_zl_za) and (dataot_za is not null) ';. otz. Active: =true;;.


Содержание Введение 1. Теоретическая часть. CASE средство Designer/2000 2. Проектная часть 2.1 Постановка задачи 2.2 Анализ предметной област

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ