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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,66 Мб
  • Опубликовано:
    2014-03-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Модель данных по стандарту 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 Сведения о невыполненных заявках с указанием причины их невыполнения (заявка, причина отказа и т.д.).

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

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

8 Многопользовательский режим работы.

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

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

10Осуществлять поиск по разнообразным признакам (не менее одного в каждой из информационных категорий, например, адрес и т.д.).

11Осуществлять сортировку по различным признакам (не менее одного в каждой из информационных категорий, например, по адресу и т.д.).

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

13Вывод информации о том, как изменялась стоимость ремонтных работ (стоимость за единицу) за заданный пользователем промежуток времени.

14Формирование списка объектов, которые необходимо отремонтировать в периоде, заданном пользователем. Организовать возможность вывода списка объектов в MSWord (или MSExcel).

15Формирование отчета (с возможностью вывода на печать) всех своевременно не обеспеченных заявках на текущую дату с указанием причины.

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

Числовой

Адрес жильца делающего заявку, подстановка из таблицы Zilci

dataz_za

Дата/время

Дата заявки

datapv_za

Дата/время

Предполагаемая дата выполнения заявки

prich_za

Текстовый

Причина отказа

Дата/время

Дата выполнения заявки


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

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

Наименование поляТип даныхОписание



id_nr

Счетчик

Код назначенной работы

id_rr_nr

Числовой

Код работы, подстановка из таблицы remr

st_rr_nr

Числовой

Стоимость работы

ob_nr

Числовой

Объем работ

st_nr

Числовой

Общая стоимость

id_za_nr

Числовой

Код заявки, подстановка из таблицы Zayavka


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

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

Наименование поля

Тип даных

Описание

id_rc

Счетчик

Код изменения

id_rr_rc

Числовой

Код работы, подстановка из таблицы remr

data_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 - выполнение запросов пользователей

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

 

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

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;;.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!