96823

Разработка базы данных «Аптека»

Курсовая

Информатика, кибернетика и программирование

Задачи курсовой работы: получить возможность просматривать, редактировать, добавлять данные в базу данных, получать результаты запросов. В качестве приложения для разработки базы данных использован язык MySQL, а в качестве разработки СУБД использован программный продукт Borland Delphi 7.

Русский

2015-10-11

2.35 MB

20 чел.

БД «Аптека»

Содержание

[1] Содержание

[2]


Введение

За последние двадцать лет значительно возрос объём и оборот информации во всех сферах жизнедеятельности человека: экономической, финансовой, политической, духовной. И процесс накопления, обработки и использования знаний постоянно ускоряется. Учёные утверждают, что каждые десять лет количество информации увеличивается вдвое. В связи с этим возникает необходимость использования автоматических средств, позволяющих эффективно хранить, обрабатывать и распределять накопленные данные.

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

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

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

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

Данные в базе организуются в единую целостную систему, что обеспечивает более производительную работу пользователей с большими объемами данных.

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

СУБД становятся наиболее популярным средством обработки табличной информации. Они являются инструментальным средством проектирования баз данных при обработке больших объемов информации.

СУБД реляционного типа являются наиболее распространенным на всех классах ЭВМ, а на ПК занимают доминирующее положение. СУБД позволяет структурировать, систематизировать и организовать данные для их компьютерного хранения и обработки.

Целью  курсовой работы является разработка базы данных «Аптека».

Задачи курсовой работы: получить возможность просматривать, редактировать, добавлять данные в базу данных, получать результаты запросов. В качестве приложения для разработки базы данных использован язык MySQL, а в качестве разработки СУБД использован программный продукт Borland Delphi 7. Разработанная программа предназначена для работы на компьютерах с операционными системами семейства Windows. Программа не требовательна к ресурсам системы и проста в использовании, благодаря удобному пользовательскому интерфейсу.


  1.  Этапы разработки базы данных «Аптека»
    1.  Анализ предметной области базы данных «Аптека»

В качестве предметной области рассмотрим работу Аптеки, деятельность которой заключается в продаже лекарств покупателям. Этот процесс можно представить так: в аптеку приходит покупатель и узнает, есть ли в
наличии необходимое ему лекарство. Он может просто спросить у аптекаря о наличии лекарства или предъявить ему рецепт, выписанный врачом. Апт
екарь смотрит по базе, данных имеется ли необходимое лекарство в наличии,
его цену, количество. Если лекарство имеется, то аптекарь идет на склад, приносит лекарство и продает его покупателю. Если данного лекарства нет в наличии, аптекарь сообщает об этом покупателю.

Регулярно ведется отчетность о проданных товарах, о прибыли аптеки за определенный период, о заработной плате сотрудников, о поставках новых товаров.

  1.  Концептуальная модель базы данных «Аптека»

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

Объект «Продажи», хранит информацию о проданных товарах,  количестве, дате продажи, цене и т.д.

Объект «ПОСТАВКИ», хранит информацию о поставляемых товарах, их описание и о поставщиках.

Объект «БУХГАЛТЕРИЯ», хранить информацию о доходах и о заработной плате сотрудников.

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

  1.  Логическая модель базы данных «Аптека». Нормализация отношений

Логическая модель отражает логические связи между элементами данных вне зависимости от их содержания и среде хранения.

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

Как видно из логической модели (см. рисунок 1.), база данных будет состоять из трех сущностей:

  1.  ПОСТАВКИ. Сюда заносится вся информация о поставщиках, о товарах и их описание. Сущность ПОСТАВКИ разбита на 3 "подсущности", которые логически связанны между собой:
  •  СПИСОК ТОВАРОВ
  •  ПОСТАВЩИКИ
  •  ОПИСАНИЕ ТОВАРОВ
  1.  ПРОДАЖИ. Здесь хранится информация о продажах. Разбита на 4 "подсущности":
  •  СОТРУДНИКИ
  •  ПРОДАЖА
  •  ПРОДАНО
  •  СПИСОК ТОВАРОВ

3)БУХГАЛТЕРИЯ. Здесь хранится информация о доходах, о заработной плате и о сотруднике, который продал товар. Разбита на 3 "подсущности":

  •  ЗАРАБОТНАЯ ПЛАТА
  •  ПРОДАНО
  •  СПИСОК СОТРУДНИКОВ

Рисунок 1 - Логическая модель данных

Теория нормализации баз данных разработана Коддом (IBM) в начале  70г. Им были сформулированы несколько правил, именуемых нормальными формами, которые помогают организовать хранение данных в реляционных базах данных. Нормализация помогает сократить избыточность данных, сохраняя их целостность. База данных называется нормализованной если её таблицы отвечают правилам нормальных форм.

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


  1.  Физическая модель базы данных «Аптека»

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

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

Все актуальные требования предметной области и адекватные им «скрытые» требования на стадии проектирования должны найти свое отражение в концептуальной модели. Конечно, нельзя предусмотреть все возможные варианты использования и изменения базы данных. Но в большинстве предметных областей такие основные данные, как объекты и их взаимосвязи, относительно стабильны. Меняются только информационные требования, то есть способы использования данных для получения информации.

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

  1.  Структура таблицы ПОСТАВЩИКИ

Значение

Название поля в БД

Тип данных

Код поставщика

Id_Dill

INT(5), PRIMARY KEY

Название

Nazvanie

VARCHAR(25)

Представитель

Predstvl

VARCHAR(20)

Должность

Doljnost

VARCHAR(20)

Адрес

Adres

VARCHAR(35)

Страна

Strana

VARCHAR(20)

Телефон

Telefon

BIGINT(12)

  1.  Структура таблицы ПРЕПАРАТЫ

Значение

Название поля в БД

Тип данных

Код препарата

Id_prep

BIGINT(10), PRIMARY KEY

Название

Nazv_prep

VARCHAR(30)

Код поставщика

Id_postav

INT(5)

Код назначения

Id_use

VARCHAR(10)

Количество

Kol_vo

INT(8)

Цена закупочная

Price_zakup

FLOAT(8,2)

Цена реализации

Price_real

FLOAT(8,2)

Фото товара

Foto

LONGBLOB

  1.  Структура таблицы СОТРУДНИКИ

Значение

Название поля в БД

Тип данных

Код сотрудника

Id_sotr

INT(2), AUTO INC., PRIMARY KEY

ФИО

Id_fio

VARCHAR(20)

Должность

Doljnost

VARCHAR(25)

Дата рождения

Datf_Rojd

DATE

Дата принятия

Prinyat

DATE

Адрес

Afdres

VARCHAR(35)

Телефон

Telefon

BIGINT(12)

Фото сотрудника

Foto

LONGBLOB

  1.  Структура таблицы ЗАРАБОТНАЯ ПЛАТА  

Значение

Название поля в БД

Тип данных

ФИО сотрудника

Id_fio

VARCHAR(20), PRIMARY KEY

Должность

Doljnost

VARCHAR(25)

Оклад

Id_zp_rub

FLOAT(8,2)

Премия

Premiya_proc

FLOAT(4,2)

Штраф

Chtraf

FLOAT(8,2)

Налог

Nalog_proc

FLOAT(4,2)

  1.  Структура таблицы ПРОДАЖА

Значение

Название поля в БД

Тип данных

Название препарата

Preparat

VARCHAR(20), PRIMARY KEY

Цена

Price

FLOAT(8,2)

Количество

Kol_vo

INT(5)

Сумма

Summa

FLOAT(8,2)

Дата продажи

SaleDate

DATE

Время продажи

SaleTime

TIME

  1.  Структура таблицы НАЗНАЧЕНИЕ

Значение

Название поля в БД

Тип данных

Код назначения

Id_use

VARCHAR(10), PRIMARY KEY

Категория препарата

Group_prep

VARCHAR(20)

Описание

Specific_prep

VARCHAR(255)

  1.  Структура таблицы ЛЕЧЕНИЕ

Значение

Название поля в БД

Тип данных

Болезни

Id_sick

VARCHAR(255)

Код назначения

Id_use_sk

VARCHAR(10), PRIMARY KEY

  1.  Структура таблицы ПРОДАНО

Значение

Название поля в БД

Тип данных

Номер

Nomer

INT(8), AUTO INC.

Название препарата

Preparat

VARCHAR(20), PRIMARY KEY

Цена

Price

FLOAT(8,2)

Количество

Kol_vo

INT(5)

Сумма

Summa

FLOAT(8,2)

Дата продажи

SaleDate

DATE

Время продажи

SaleTime

TIME

ФИО сотрудника

Id_FIO

VARCHAR(20)

 2. Проектирование приложения для работы с базой данных  «Аптека». Выбор среды программирования

2.1. MySQL

Для разработки базы была выбрана бесплатная свободно-распространяемая СУБД MySQL. Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Работы по созданию базы проводились в приложении MySQL Workbench CE 6.0 (Рисунок 2), которое предоставляет:

  •  Интуитивно понятный графический интерфейс, через который удобно контролировать состояние сервера БД, вносить изменения в структуру базы.
  •  Позволяет наглядно представить модель базы данных в графическом виде.
  •  Предлагает наглядный и функциональный механизм установки связей между таблицами, в том числе «многие ко многим» с созданием таблицы связей.
  •  Умеет восстанавливать структуры таблиц из уже существующей на сервере БД (связи восстанавливаются в InnoDB, при использовании MyISAM — связи необходимо устанавливать вручную).
  •  Предоставляет удобный редактор SQL запросов, позволяющий сразу же отправлять их серверу и получать ответ в виде таблицы, и возможность редактирования данных в таблице в визуальном режиме.
  •  Также, приложение позволяет создавать новых пользователей на сервере БД и выдавать им различные права доступа к базе.

Рисунок 2 - Приложение MySQL Workbench

Connector/ODBC 5.2.6 - это стандартный драйвер, который обеспечивает доступ к базе данных MySQL через Open Database Connectivity (ODBC) API. Включает в себя функциональность Unicode и ANSI драйверов ранее разделённых на MySQL ODBC 5.3 ANSI Driver и MySQL ODBC 5.3 Unicode Driver.

2.2. Borland Delphi 7

Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI). В принципе. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию Open Data Base Connectivity (ODBC) фирмы Microsoft.

Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, «наследуются» BDE, и поэтому этими же особенностями обладает и Delphi.

Одним из преимуществ Delphi является то, что он поддерживает все SQL-БД, доступ к которым осуществляется через Borland Database Engine, ADO или драйверы InterBase. Через Borland SQL Links BDE так же возможен доступ к Oracle, Sybase, Informix, MS SQL Server, DB2 и InterBase.

В Delphi 7 применяется технология ADO, для которой предназначены семь компонентов, расположенных на закладке ADO палитры компонентов.

Рисунок 3 - Компоненты страницы ADO

Название

Описание

ADOConnection

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

ADOCommand

Предназначен для выполнения SQL–команды без возврата результирующего набора данных

ADODataset

Предназначен для получения набора данных из одной или нескольких таблиц БД. Позволяет работать с возвращённым набором данных визуальным компонентам

ADOTable

Аналог компонента Table, расположенного на закладке BDE. Используется для доступа к таблице с помощью механизма ADO

ADOQuery

Аналог Query. Позволяет формировать запросы к БД, которые возвращают данные из базы (например, командой SELECT) или не формируют результирующего набора данных (например, INSERT)

ADOStoredProc

Предназначен для вызова процедуры, хранимой на сервере базы данных. Является потомком TDataSet, в отличие от BDE и InterBase позволяет возвращать набор данных, поэтому может выступать источником данных в компонентах типа DataSource

RDSConnection

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

Таблица 1 - Компоненты ADO

  1.  Разработка интерфейса

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

Рисунок 4 - Окно доступа к БД

Рисунок 5 – Начальное окно программы «Аптека»

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

Рис. 6- Меню программы

      При нажатии кнопки «Касса»,  программа запросит имя пользователя(Рисунок 7), и если он есть в списке сотрудников, то откроется окно кассы.

Рисунок 7 – Доступ в кассу

Рисунок 8 – Окно «Касса»

         Кнопка «Склад» откроет доступ к списку препаратов, их описанию и фото каждого препарата и к списку поставщиков. В окне «Склад» возможно редактирование списка препаратов, их описание и сортировка, редактирование списка поставщиков, поиск по названию и категории.

Рисунок 9 – Окно «Склад»

С помощью кнопки «Оформить поставку» можно осуществить быструю поставку и добавление новых препаратов в базу. Если такой препарат уже существует в базе, то при его добавлении автоматически увеличивается количество данного. Так же при открытии данного окна, идентификатору товара присваивается значение следующего относительно идентификатору последнего.


Рисунок 10 – Окно «Поставка товара»

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

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


Рисунок 11 – Окно «Список сотрудников»

Доступ к отчетам базы данных «Аптека» можно получить нажав кнопку «Отчетность», где можно просмотреть продажи и доходы за требуемый пользователю период.

Рисунок 12 – Окно «Отчетность»

3. Разработка запросов базы данных «Аптека»

3.1.Получение информации из других таблиц

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

Рисунок 13 - Результат выборки информации о поставщиках по выделенному препарату в списке

Кнопка «Описание/лечение» осуществит переход с выполнением выборки для выделенного препарата в списке.

3.2. Прибыль аптеки

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

Рисунок 14 – Результат подсчета прибыли по проданным товарам за последние 6 месяцев

3.3. Отчёты

Данный отчет сформирован на основании выборки по проданным товарам в которых выполняется предоставления наиболее нужной информации.

Рисунок 15 - Отчёт по продажам за последние 7 дней

Заключение

С помощью спроектированной СУБД можно наглядно демонстрировать и искать информацию о товарах, сотрудникам,  доходах и о заработной плате.

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

Возможен просмотр отчётов с удобно предоставленной информацией.

На основе достигнутых результатов можно сформулировать рекомендации по улучшению программы:

  1.  Использование web-технологий для доступа к данным через Интернет;
  2.  Разработка новых таблиц для новых данных о предметной области, а также дополнение существующих таблиц новыми столбцами;
  3.  Разработать сложную систему отчётов, которые помогут осуществлять некоторые функции бухгалтерского учёта, а также осуществить печать накладной, чека и выборочных данных;
  4.  Создание серверной версии программы с расширенным функционалом и большими возможностями.


Список использованной литературы

  1.  Фёдоров А.Г. Создание Windows–приложений в среде Delphi. – М.: ТОО  «Компьютер Пресс», 1995. – 287 с.
  2.  Хоменко А.Д. Delphi 7. –СПб.: БХВ–Петербург, 2003. – 1216с.
  3.  Хоменко А.Д. Основы современных компьютерных технологий. – М.: ТОО «Компьютер Пресс», 2000г. – 467 с.
  4.  Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. — СПб.: БХВ-Петербург, 2003. — 288 с.: ил.
  5.  Шупрута В.В. Delphi 2005. Учимся программировать. – М.:НТ Пресс 2005. – 346 с.: ил.
  6.  Баженова И.Ю. Delphi 7 Самоучитель программиста. – М.: Кудиц-Образ, 2003. – 448 с.: ил.
  7.  Кандзюба С.П., Громов В.Н. Delphi 6/7. Базы данных и приложения – М.: DiaSoft, 2002. – 261 с.: ил.
  8.  Пестриков В.М., Маслобоев А.Н. Delphi на примерах. – СПб.: БВХ-Петербург, 2005. – 496 с.: ил.
  9.  Фараонов, В. В. Система программирования Delphi – СПб.: БХВ - Петербург, 2012. – 912 с.: ил.


Приложения

Листинг 1. Файл Unit1.pas, форма «Аптека»

unit Unit1;

interface

uses

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

 Dialogs, StdCtrls, jpeg, ExtCtrls, Menus;

type

 TForm1 = class(TForm)

   btn1: TButton;

   btn2: TButton;

   btn3: TButton;

   btn5: TButton;

   btn6: TButton;

   img1: TImage;

   btn4: TButton;

   mm1: TMainMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   N5: TMenuItem;

   N6: TMenuItem;

   N7: TMenuItem;

   N8: TMenuItem;

   N9: TMenuItem;

   N10: TMenuItem;

   N11: TMenuItem;

   N12: TMenuItem;

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

   procedure btn6Click(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn5Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure N2Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure N7Click(Sender: TObject);

   procedure N10Click(Sender: TObject);

   procedure N8Click(Sender: TObject);

   procedure N9Click(Sender: TObject);

   procedure N11Click(Sender: TObject);

   procedure N12Click(Sender: TObject);

   procedure N6Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit6, Unit7, Unit5, Unit10, Unit8;

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);

var user, fio:string;

   i:Integer;

   flag:Boolean;

begin

 if(Form2.edt6.Text='') then

 begin

 flag:=False;

 user:=InputBox('Доступ к кассе','Введите ваше имя','');

 Form2.qry1.SQL.Clear;

 Form2.qry1.SQL.Add('select id_fio from sotrudniki');

 Form2.qry1.Open;

 for i:=0 to Form2.qry1.RecordCount-1 do

 begin

    fio:=Form2.qry1.Fields[0].AsString;

    if(user=fio) then

    begin

      flag:=True;

      Break;

    end

    else

    Form2.qry1.Next;

 end;

 if flag=True then

 begin

   Form2.Show;

   Form1.Hide;

   Form2.edt6.Text:=user;

 end

 else

 ShowMessage('У вас нет доступа!');

 end

 else

 begin

 Form1.Close;

 Form2.Show;

 end;

end;

procedure TForm1.btn2Click(Sender: TObject);

begin

 Form3.Show;

 Form1.Hide;

 Form3.ds1.DataSet.Close;

 Form3.ds1.DataSet.Active:=True;

end;

procedure TForm1.btn6Click(Sender: TObject);

begin

 Form1.Close;

 PasswordDlg.Close;

end;

procedure TForm1.btn3Click(Sender: TObject);

begin

 Form7.Show;

 Form1.Hide;

end;

procedure TForm1.btn5Click(Sender: TObject);

begin

 Form6.Show;

 Form1.Hide;

end;

procedure TForm1.btn4Click(Sender: TObject);

var i:Integer;

   s:string;

begin

 Form1.Hide;

 form5.show;

 form5.qry1.SQL.Clear;

 Form5.qry1.SQL.Add('select max(id_prep) from preparat');

 form5.qry1.Open;

 i:=StrToInt(Form5.qry1.Fields[0].AsString);

 s:=IntToStr(i+1);

 Form5.edt1.Text:=s;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

 Form2.Show;

 Form1.Hide;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

 Form5.Show;

 Form1.Hide;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

  Form1.Close;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

 Form3.Show;

 Form1.Hide;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

 Form10.show;

 Form10.ts1.show;

 Form1.Hide;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

 Form10.Show;

 Form10.ts2.Show;

 Form1.Hide;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

 Form7.Show;

 Form1.Hide;

end;

procedure TForm1.N12Click(Sender: TObject);

begin

 Form4.Show;

 Form1.Hide;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

 Form6.Show;

 Form1.Hide;

end;

end.

Листинг 2. Файл Unit2.pas, форма «Касса»

unit Unit2;

interface

uses

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

 Dialogs, StdCtrls, jpeg, ExtCtrls, DB, ADODB, Grids, DBGrids, Mask,

 DBCtrls;

type

 TForm2 = class(TForm)

   btn1: TButton;

   btn2: TButton;

   img1: TImage;

   dbgrd1: TDBGrid;

   tbl1: TADOTable;

   con1: TADOConnection;

   ds1: TDataSource;

   lbl1: TLabel;

   edt2: TEdit;

   lbl2: TLabel;

   edt3: TEdit;

   lbl3: TLabel;

   btn3: TButton;

   edt4: TEdit;

   lbl4: TLabel;

   edt5: TEdit;

   lbl5: TLabel;

   qry1: TADOQuery;

   ds2: TDataSource;

   btn4: TButton;

   btn5: TButton;

   edt1: TEdit;

   edt6: TEdit;

   lbl6: TLabel;

   qry2: TADOQuery;

   procedure btn2Click(Sender: TObject);

   procedure btn1Click(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure btn5Click(Sender: TObject);

   procedure edt2Change(Sender: TObject);

   procedure edt5Change(Sender: TObject);

   procedure edt4Change(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form2: TForm2;

implementation

uses Unit1, Unit3, Unit8;

{$R *.dfm}

procedure TForm2.btn2Click(Sender: TObject);

begin

 Form1.Show;

 Form2.Close;

 edt1.Clear;

 edt2.Clear;

 edt3.Clear;

end;

procedure TForm2.btn1Click(Sender: TObject);

begin

 PasswordDlg.Close;

end;

procedure TForm2.btn3Click(Sender: TObject);

var

 str,r:string;

 k,p:Integer;

begin

 qry1.SQL.Clear;

 str:=edt4.Text;

 k:=StrToInt(edt5.Text);

 qry1.SQL.Add('select kol_vo from preparat where nazv_prep ='+#39+str+#39+';');

 qry1.Open;

 p:=StrToInt(qry1.Fields[0].AsString);

 qry1.SQL.Clear;

 r:=IntToStr(p-k);

 qry1.SQL.Add('update preparat set kol_vo='+#39+r+#39+' where nazv_prep='+#39+str+#39+'');

 qry1.ExecSQL;

 qry1.SQL.Clear;

 qry1.SQL.Add('insert into cash set preparat = '+#39+str+#39+', price =(select price_real from preparat where nazv_prep = '+#39+str+#39+'), summa = 0, kol_vo ='+#39+edt5.text+#39+', saledate = (select curdate()), saletime = (select curtime())');

 qry1.ExecSQL;

 qry1.SQL.Clear;

 qry1.SQL.Add('update cash set summa = (select price*kol_vo from(select price*kol_vo from cash where preparat ='+#39+str+#39+')as zak)');

 qry1.ExecSQL;

 ds1.DataSet.Close;

 DBGrd1.DataSource:=ds1;

 dbgrd1.DataSource.DataSet.Active:=true;

 qry1.SQL.Clear;

 qry1.SQL.Add('select sum(summa) as sum_p from cash');

 qry1.Open;

 edt1.Text:=qry1.Fields[0].AsString;

 edt4.Clear;

 edt5.Clear;

 btn3.Enabled:=False;

end;

procedure TForm2.btn4Click(Sender: TObject);

begin

 form3.show;

 Form3.ds1.DataSet.Close;

 Form3.ds1.DataSet.Active:=True;

end;

procedure TForm2.btn5Click(Sender: TObject);

var sum, p, k:Real;

   str:string;

begin

 str:=edt6.Text;

 qry2.SQl.Clear;

 qry2.SQL.Add('select preparat, price, summa, kol_vo, saletime from cash');

 qry2.Open;

 qry1.SQL.Clear;

 qry1.SQL.Add('insert into sales set preparat='+#39+qry2.Fields[0].AsString+#39+', price='+#39+qry2.Fields[1].AsString+#39+', summa='+#39+qry2.Fields[2].AsString+#39+', kol_vo='+#39+qry2.Fields[3].AsString+#39+', saledate=(select curdate()), saletime='+#39+qry2.Fields[4].AsString+#39+', id_fio='+#39+str+#39'');

 qry1.ExecSQL;

 p:=StrToFloat(edt2.Text);

 k:=StrToFloat(edt1.Text);

 sum:=p-k;

 edt3.Text:=FloatToStr(sum);

 qry1.SQL.Clear;

 qry1.SQL.Add('delete from cash');

 qry1.ExecSQL;

 ds1.DataSet.Close;

 DBGrd1.DataSource:=ds1;

 dbgrd1.DataSource.DataSet.Active:=true;

end;

procedure TForm2.edt2Change(Sender: TObject);

begin

 btn5.Enabled:=True;

end;

procedure TForm2.edt5Change(Sender: TObject);

begin

 btn3.Enabled:=True;

end;

procedure TForm2.edt4Change(Sender: TObject);

begin

 edt2.Clear;

 edt3.Clear;

end;

end.

Листинг 3. Файл Unit3.pas, форма «Склад»

unit Unit3;

interface

uses

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

 Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, Mask,

 ComCtrls, ExtDlgs;

type

 TForm3 = class(TForm)

   btn1: TButton;

   btn2: TButton;

   con1: TADOConnection;

   tbl1: TADOTable;

   ds1: TDataSource;

   dbgrd1: TDBGrid;

   dbnvgr1: TDBNavigator;

   btn3: TButton;

   edt1: TEdit;

   cbb1: TComboBox;

   cbb3: TComboBox;

   cbb4: TComboBox;

   cbb5: TComboBox;

   btn5: TButton;

   qry1: TADOQuery;

   btn4: TButton;

   edt2: TEdit;

   btn6: TButton;

   dbimgFoto: TDBImage;

   btn7: TButton;

   dlgOpenPic1: TOpenPictureDialog;

   ds2: TDataSource;

   btn8: TButton;

   btn9: TButton;

   lbl1: TLabel;

   btn10: TButton;

   btn11: TButton;

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

   procedure btn5Click(Sender: TObject);

   procedure cbb1Change(Sender: TObject);

   procedure cbb3Change(Sender: TObject);

   procedure cbb4Change(Sender: TObject);

   procedure cbb5Change(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure btn6Click(Sender: TObject);

   procedure btn7Click(Sender: TObject);

   procedure btn8Click(Sender: TObject);

   procedure btn9Click(Sender: TObject);

   procedure btn10Click(Sender: TObject);

   procedure btn11Click(Sender: TObject);

   procedure dbnvgr1Click(Sender: TObject; Button: TNavigateBtn);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form3: TForm3;

implementation

uses Unit1, Unit2, Unit9, Unit10, Unit8;

{$R *.dfm}

procedure TForm3.btn1Click(Sender: TObject);

begin

 PasswordDlg.Close;

end;

procedure TForm3.btn2Click(Sender: TObject);

begin

 Form1.Show;

 Form3.Close;

end;

procedure TForm3.btn5Click(Sender: TObject);

begin

   ds1.DataSet.Close;

   DBGrd1.DataSource:=ds1;

   dbgrd1.DataSource.DataSet.Active:=true;

   cbb1.Text:='По названию';

   cbb3.Text:='По количеству';

   cbb4.Text:='Годен до';

   cbb5.Text:='По цене';

   edt1.Clear;

   edt2.Clear;

   qry1.SQL.Clear;

end;

procedure TForm3.cbb1Change(Sender: TObject);

begin

 qry1.SQL.Clear;

 if(Cbb1.Text='От Я до А')

 then

 qry1.SQL.Add('select*from preparat order by nazv_prep desc')

 else

 qry1.SQL.Add('select*from preparat order by nazv_prep');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm3.cbb3Change(Sender: TObject);

begin

 qry1.SQL.Clear;

 if(Cbb3.Text='Убывание')

 then

 qry1.SQL.Add('select*from preparat order by kol_vo desc')

 else

 qry1.SQL.Add('select*from preparat order by kol_vo');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm3.cbb4Change(Sender: TObject);

var d1:tDATE;

s:string;

begin

 qry1.SQL.Clear;

 if(Cbb4.Text='Убывание')

 then

 qry1.SQL.Add('select*from preparat order by godnost desc')

 else

 begin

   d1:=StrToDate(InputBox('Введите дату','',''));

   s:=FormatDateTime('yyyy-mm-dd',d1);

   qry1.SQL.Add('select*from preparat where godnost ='+#39+s+#39'');

 end;

 if(Cbb4.Text='Возрастание')

 then

 qry1.SQL.Add('select*from preparat order by godnost desc');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm3.cbb5Change(Sender: TObject);

begin

 qry1.SQL.Clear;

 if(Cbb5.Text='Убывание')

 then

 qry1.SQL.Add('select*from preparat order by price_real desc')

 else

 qry1.SQL.Add('select*from preparat order by price_real');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True

end;

procedure TForm3.btn3Click(Sender: TObject);

var str:string;

begin

 qry1.sql.clear;

 str:=edt1.Text;

 qry1.SQL.Add('select*from preparat where nazv_prep ='+#39+str+#39';');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm3.btn4Click(Sender: TObject);

var str:string;

begin

 qry1.sql.clear;

 str:=edt2.Text;

 qry1.SQL.Add('select*from preparat,use_prep where preparat.id_use=use_prep.id_use and group_prep ='+#39+str+#39';');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm3.btn6Click(Sender: TObject);

var user, fio:string;

   i:Integer;

   flag:Boolean;

begin

 if(Form2.edt6.Text='') then

 begin

 flag:=False;

 user:=InputBox('Доступ к кассе','Введите ваше имя','');

 Form2.qry1.SQL.Clear;

 Form2.qry1.SQL.Add('select id_fio from sotrudniki');

 Form2.qry1.Open;

 for i:=0 to Form2.qry1.RecordCount-1 do

 begin

    fio:=Form2.qry1.Fields[0].AsString;

    if(user=fio) then

    begin

      flag:=True;

      Break;

    end

    else

    Form2.qry1.Next;

 end;

 if flag=True then

 begin

   Form2.Show;

   Form1.Hide;

   Form2.edt6.Text:=user;

 end

 else

 ShowMessage('У вас нет доступа!');

 end

 else

 begin

 Form3.Close;

 Form2.Show;

 Form2.edt2.Clear;

 Form2.edt3.Clear;

 end;

end;

procedure TForm3.btn7Click(Sender: TObject);

begin

 if dlgOpenPic1.Execute then

begin

 dbimgFoto.Picture.LoadFromFile(dlgOpenPic1.FileName);

 tbl1.Edit;

 TBLOBField(tbl1.FieldByName('foto')).LoadFromFile(dlgOpenPic1.FileName);

 tbl1.Post;

 end;

end;

procedure TForm3.btn8Click(Sender: TObject);

var i:Integer;

   s:String;

begin

 Form9.Show;

 Form9.ts1.Show;

 i:=dbgrd1.SelectedIndex;

 s:=IntToStr(DBGrd1.DataSource.DataSet.Fields.Fields[i].Value);

 Form9.qry1.SQL.Clear;

 Form9.qry1.SQL.Add('select nazv_prep, nazvanie, predstavl, doljnost, adres, strana, telefon, id_dill, id_prep, nazv_prep, id_postav, id_use, kol_vo, godnost, price_zakup, price_real from preparat, dillers where preparat.id_postav=dillers.id_dill and preparat.id_prep='+#39+s+#39';');

 Form9.qry1.Open;

 Form9.ds3.DataSet.Close;

 Form9.ds3.DataSet:=Form9.qry1;

 Form9.dbedtNazv_prep.DataSource:=Form9.ds3;

 form9.dbedtNAZVANIE.DataSource:= Form9.ds3;

 Form9.dbedtPREDSTAVL.DataSource:= Form9.ds3;

 Form9.dbedtDOLJNOST.DataSource:= Form9.ds3;

 Form9.dbedtADRES.DataSource:= Form9.ds3;

 Form9.dbedtStrana.DataSource:= Form9.ds3;

 Form9.dbedtTELEFON.DataSource:= Form9.ds3;

 Form9.dbedtId_Dill.DataSource:=Form9.ds3;

 Form9.ds3.DataSet.Active:=True;

end;

procedure TForm3.btn9Click(Sender: TObject);

var i:Integer;

   s:String;

begin

 Form9.Show;

 Form9.ts3.Show;

 i:=dbgrd1.SelectedIndex;

 s:=IntToStr(DBGrd1.DataSource.DataSet.Fields.Fields[i].Value);

 Form9.qry2.SQL.Clear;

 Form9.qry2.SQL.Add('select nazv_prep, group_prep, specific_prep from preparat, use_prep where preparat.id_use=use_prep.id_use and preparat.id_prep='+#39+s+#39';');

 Form9.qry2.Open;

 form9.qry3.SQL.Clear;

 Form9.qry3.SQL.Add('select id_sick, id_use_sk from sickness, preparat where preparat.id_use=sickness.id_use_sk and preparat.id_prep='+#39+s+#39'');

 Form9.qry3.Open;

 Form9.ds4.DataSet.Close;

 Form9.ds4.DataSet:=Form9.qry2;

 Form9.dbedtNazv_prep1.DataSource:=Form9.ds4;

 Form9.dbedtgroup_prep.DataSource:=Form9.ds4;

 Form9.dbmmospecific_prep.DataSource:=Form9.ds4;

 Form9.ds4.DataSet.Active:=True;

 Form9.ds7.DataSet.Close;

 Form9.ds7.DataSet:=Form9.qry3;

 Form9.dbmmoid_sick.DataSource:=Form9.ds7;

 Form9.ds7.DataSet.Active:=True;

end;

procedure TForm3.btn10Click(Sender: TObject);

begin

 Form3.Hide;

 form10.show;

 Form10.ts1.Show;

end;

procedure TForm3.btn11Click(Sender: TObject);

begin

 form3.Hide;

 Form10.Show;

 Form10.ts2.Show;

end;

procedure TForm3.dbnvgr1Click(Sender: TObject; Button: TNavigateBtn);

var

 BtnName, s: string;

begin

 case Button of

   nbFirst  : BtnName := 'nbFirst';

   nbPrior  : BtnName := 'nbPrior';

   nbNext   : BtnName := 'nbNext';

   nbLast   : BtnName := 'nbLast';

   nbInsert : BtnName := 'nbInsert';

   nbDelete : BtnName := 'nbDelete';

   nbEdit   : BtnName := 'nbEdit';

   nbPost   : BtnName := 'nbPost';

   nbCancel : BtnName := 'nbCancel';

   nbRefresh: BtnName := 'nbRefresh';

 end;

 if(btnname='nbPost') then

 begin

   ds1.DataSet.Close;

   ds1.DataSet.Active:=True;

 end;

end;

end.

Листинг 4. Файл Unit4.pas, форма «Заработная плата»

unit Unit4;

interface

uses

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

 Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, Mask,

 ExtDlgs;

type

 TForm4 = class(TForm)

   btn1: TButton;

   btn2: TButton;

   con1: TADOConnection;

   tbl1: TADOTable;

   ds1: TDataSource;

   dbnvgr1: TDBNavigator;

   btn4: TButton;

   dbgrd1: TDBGrid;

   dbedtid_zp_rub: TDBEdit;

   dbedtpremiya_proc: TDBEdit;

   dbedtchtraf: TDBEdit;

   dbedtnalog_proc: TDBEdit;

   lbl1: TLabel;

   lbl2: TLabel;

   lbl3: TLabel;

   lbl4: TLabel;

   qry1: TADOQuery;

   ds2: TDataSource;

   lbl5: TLabel;

   lbl6: TLabel;

   lbl7: TLabel;

   lbl8: TLabel;

   lbl9: TLabel;

   dbedtnacisl: TDBEdit;

   dbedtpremiya: TDBEdit;

   lbl10: TLabel;

   lbl11: TLabel;

   dbedtnalog: TDBEdit;

   lbl12: TLabel;

   btn3: TButton;

   tbl2: TADOTable;

   ds3: TDataSource;

   btn5: TButton;

   edt1: TEdit;

   btn6: TButton;

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn5Click(Sender: TObject);

   procedure btn6Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form4: TForm4;

implementation

uses Unit1, Unit7, Unit8;

{$R *.dfm}

procedure TForm4.btn1Click(Sender: TObject);

begin

 PasswordDlg.Close;

end;

procedure TForm4.btn2Click(Sender: TObject);

begin

 Form1.Show;

 Form4.Close;

end;

procedure TForm4.btn4Click(Sender: TObject);

begin

 form4.Close;

 form7.show;

end;

procedure TForm4.btn3Click(Sender: TObject);

begin

 qry1.SQL.Clear;

 qry1.SQL.Add('select*from nacisl_zp');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbnvgr1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

 dbedtid_zp_rub.DataSource:=dbgrd1.DataSource;

 dbedtpremiya_proc.DataSource:=dbgrd1.DataSource;

 dbedtchtraf.DataSource:=dbgrd1.DataSource;

 dbedtnalog_proc.DataSource:=dbgrd1.DataSource;

 dbedtpremiya.DataSource:=dbgrd1.DataSource;

 dbedtnalog.DataSource:=dbgrd1.DataSource;

 dbedtnacisl.DataSource:=dbgrd1.DataSource;

end;

procedure TForm4.btn5Click(Sender: TObject);

begin

 dbgrd1.DataSource:=ds1;

 dbnvgr1.DataSource:=ds1;

 dbgrd1.DataSource.DataSet.Active:=True;

 dbedtid_zp_rub.DataSource:=dbgrd1.DataSource;

 dbedtpremiya_proc.DataSource:=dbgrd1.DataSource;

 dbedtchtraf.DataSource:=dbgrd1.DataSource;

 dbedtnalog_proc.DataSource:=dbgrd1.DataSource;

 dbedtpremiya.Text:='';

 dbedtnalog.Text:='';

 dbedtnacisl.Text:='';

end;

procedure TForm4.btn6Click(Sender: TObject);

var str:string;

begin

  qry1.SQL.Clear;

  str:=edt1.Text;

 qry1.SQL.Add('select*from nacisl_zp where id_fio='+#39+str+#39'');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbnvgr1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

 dbedtid_zp_rub.DataSource:=dbgrd1.DataSource;

 dbedtpremiya_proc.DataSource:=dbgrd1.DataSource;

 dbedtchtraf.DataSource:=dbgrd1.DataSource;

 dbedtnalog_proc.DataSource:=dbgrd1.DataSource;

 dbedtpremiya.DataSource:=dbgrd1.DataSource;

 dbedtnalog.DataSource:=dbgrd1.DataSource;

 dbedtnacisl.DataSource:=dbgrd1.DataSource;

end;

end.

Листинг 5. Файл Unit5.pas, форма «Поставки товара»

unit Unit5;

interface

uses

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

 Dialogs, StdCtrls, DB, ADODB, jpeg, ExtCtrls;

type

 TForm5 = class(TForm)

   btn2: TButton;

   edt1: TEdit;

   edt2: TEdit;

   edt3: TEdit;

   edt4: TEdit;

   edt5: TEdit;

   edt7: TEdit;

   edt8: TEdit;

   lbl1: TLabel;

   lbl2: TLabel;

   lbl3: TLabel;

   lbl4: TLabel;

   lbl5: TLabel;

   lbl7: TLabel;

   lbl8: TLabel;

   btn3: TButton;

   btn4: TButton;

   con1: TADOConnection;

   qry1: TADOQuery;

   ds1: TDataSource;

   lbl9: TLabel;

   img1: TImage;

   procedure btn1Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure edt1Change(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form5: TForm5;

implementation

uses Unit1, Unit8;

{$R *.dfm}

procedure TForm5.btn1Click(Sender: TObject);

begin

 form1.close;

end;

procedure TForm5.btn4Click(Sender: TObject);

var j, i, kol:Integer;

   prep, vvod, sum:string;

   post, cat:string;

   flag:Boolean;

   d1:tDATE;

   s:string;

begin

 flag:=True;

 kol:=StrToInt(edt5.Text);

 vvod:=edt2.Text;

 qry1.SQL.Clear;

 qry1.SQL.Add('select nazv_prep, kol_vo from preparat');

 qry1.Open;

 for j:=0 to qry1.RecordCount-1 do

 begin

    prep:=qry1.Fields[0].AsString;

    if(prep=vvod) then

    begin

      flag:=False;

      Break;

    end

    else

    qry1.Next;

 end;

 i:=StrToInt(qry1.Fields[1].AsString);

 if(flag=False) then

   begin

     sum:=IntToStr(i+kol);

     qry1.SQL.Clear;

     qry1.SQL.Add('update preparat set kol_vo='+#39+sum+#39+' where nazv_prep='+#39+vvod+#39'');

     qry1.ExecSQL;

    end

 else

   begin

     qry1.SQL.Clear;

     qry1.SQL.Add('select id_dill from dillers where nazvanie='+#39+edt3.Text+#39'');

     qry1.Open;

     post:=qry1.Fields[0].AsString;

     qry1.SQL.Clear;

     qry1.SQL.Add('select id_use from use_prep where group_prep='+#39+edt4.Text+#39'');

     qry1.Open;

     cat:=qry1.Fields[0].AsString;

     qry1.SQL.Clear;

     qry1.SQL.Add('insert into preparat set id_prep='+#39+edt1.text+#39+', nazv_prep='+#39+edt2.Text+#39+', id_postav='+#39+post+#39+', id_use='+#39+cat+#39+', kol_vo='+#39+edt5.Text+#39+', price_zakup='+#39+edt7.Text+#39', price_real='+#39+edt8.Text+#39'');

     qry1.ExecSQL;

   end;

   edt1.Clear;

   edt2.Clear;

   edt3.Clear;

   edt4.Clear;

   edt5.Clear;

   edt7.Clear;

   edt8.Clear;

   lbl9.Caption:='Данные успешно добавлены';

end;

procedure TForm5.edt1Change(Sender: TObject);

begin

 lbl9.Caption:='';

end;

procedure TForm5.btn3Click(Sender: TObject);

begin

 Form5.Close;

 Form1.Show;

end;

procedure TForm5.btn2Click(Sender: TObject);

begin

 PasswordDlg.Close;

end;

end.

Листинг 6. Файл Unit6.pas, форма «Отчетность»

unit Unit6;

interface

uses

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

 Dialogs, StdCtrls, RpCon, RpConDS, RpConBDE, RpDefine, RpRave, DB, ADODB;

type

 TForm6 = class(TForm)

   btn1: TButton;

   btn2: TButton;

   btn3: TButton;

   btn4: TButton;

   btn5: TButton;

   rvprjct1: TRvProject;

   con2: TADOConnection;

   qry1: TADOQuery;

   con3: TRvDataSetConnection;

   tbl1: TADOTable;

   cbb1: TComboBox;

   cbb2: TComboBox;

   cbb3: TComboBox;

   con1: TRvDataSetConnection;

   rvprjct2: TRvProject;

   tbl2: TADOTable;

   btn7: TButton;

   btn8: TButton;

   btn9: TButton;

   btn10: TButton;

   btn6: TButton;

   btn11: TButton;

   con4: TRvDataSetConnection;

   rvprjct3: TRvProject;

   con5: TRvDataSetConnection;

   rvprjct4: TRvProject;

   tbl3: TADOTable;

   tbl4: TADOTable;

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure btn5Click(Sender: TObject);

   procedure btn7Click(Sender: TObject);

   procedure btn8Click(Sender: TObject);

   procedure btn9Click(Sender: TObject);

   procedure btn10Click(Sender: TObject);

   procedure btn6Click(Sender: TObject);

   procedure btn11Click(Sender: TObject);

   procedure btn12Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form6: TForm6;

implementation

uses Unit5, Unit1, Unit8;

{$R *.dfm}

procedure TForm6.btn1Click(Sender: TObject);

begin

 PasswordDlg.Close;

end;

procedure TForm6.btn2Click(Sender: TObject);

begin

 Form1.Show;

 Form6.Close;

end;

procedure TForm6.btn3Click(Sender: TObject);

var d1:tDATE;

   s:string;

   d:string;

begin

 if(cbb1.Text='сегодняшний день') then

 begin

   qry1.SQL.Clear;

   qry1.SQL.Add('select*from sales where dayofmonth(saledate)=dayofmonth(curdate())');

   qry1.ExecSQL;

 end;

 if(cbb1.Text='указанный день') then

 begin

   d1:=StrToDate(InputBox('День','Укажите день, месяц и год','dd.mm.yyyy'));

   s:=FormatDateTime('yyyy-mm-dd',d1);

   qry1.SQL.Clear;

   qry1.SQL.Add('select*from sales where dayofmonth(saledate)=dayofmonth('+#39+s+#39+') and month(saledate)=month('+#39+s+#39+') and year(saledate)=year('+#39+s+#39+')');

   qry1.ExecSQL;

 end;

 if(cbb1.Text='последние N дней/дня') then

 begin

   d:=InputBox('Количество дней','N','');

   qry1.SQL.Clear;

   qry1.SQL.Add('select*from sales where saledate between subdate(curdate(), interval '+d+' day) and curdate()');

   qry1.ExecSQL;

 end;

 cbb1.Text:='День';

 con3.DataSet:=qry1;

 rvprjct1.Execute;

end;

procedure TForm6.btn4Click(Sender: TObject);

var d1:tDATE;

   d:string;

   s:string;

begin

 if(cbb2.Text='указанный месяц') then

 begin

  d:=InputBox('Месяц','Укажите месяц и год','mm.yyyy');

  d1:=StrToDate('01.'+d);

  s:=FormatDateTime('yyyy-mm-dd',d1);

  qry1.SQL.Clear;

  qry1.SQL.Add('select*from sales where month(saledate)=month('+#39+s+#39+') and year(saledate)=year('+#39+s+#39+')');

  qry1.ExecSQL;

 end;

 if(cbb2.Text='последние N месяцев/месяца') then

 begin

  d:=InputBox('Количество месяцев','N','');

  qry1.SQL.Clear;

  qry1.SQL.Add('select*from sales where saledate between subdate(curdate(), interval '+d+' month) and curdate()');

  qry1.ExecSQL;

 end;

  cbb2.Text:='Месяц';

  con3.DataSet:=qry1;

  rvprjct1.Execute;

end;

procedure TForm6.btn5Click(Sender: TObject);

var d:string;

begin

 if(cbb3.Text='указанный год') then

 begin

   d:=InputBox('Год','Укажите год','yyyy');

   qry1.SQL.Clear;

   qry1.SQL.Add('select*from sales where year(saledate)='+#39+d+#39'');

   qry1.ExecSQL;

 end;

 if(cbb3.Text='последние N года/лет') then

 begin

  d:=InputBox('Количество годов','N','');

  qry1.SQL.Clear;

  qry1.SQL.Add('select*from sales where saledate between subdate(curdate(), interval '+d+' year) and curdate()');

  qry1.ExecSQL;

 end;

 cbb3.Text:='Год';

 con3.DataSet:=qry1;

 rvprjct1.Execute;

end;

procedure TForm6.btn7Click(Sender: TObject);

begin

 rvprjct2.Execute;

end;

procedure TForm6.btn8Click(Sender: TObject);

var d1:tDATE;

   s:string;

   d:string;

begin

 if(cbb1.Text='сегодняшний день') then

 begin

   qry1.SQL.Clear;

   qry1.SQL.Add('select sum(summa) as dohod from sales where dayofmonth(saledate)=dayofmonth(curdate())');

   qry1.Open;

 end;

 if(cbb1.Text='указанный день') then

 begin

   d1:=StrToDate(InputBox('День','Укажите день, месяц и год','dd.mm.yyyy'));

   s:=FormatDateTime('yyyy-mm-dd',d1);

   qry1.SQL.Clear;

   qry1.SQL.Add('select sum(summa) as dohod from sales where dayofmonth(saledate)=dayofmonth('+#39+s+#39+') and month(saledate)=month('+#39+s+#39+') and year(saledate)=year('+#39+s+#39+')');

   qry1.Open;

 end;

 if(cbb1.Text='последние N дней/дня') then

 begin

   d:=InputBox('Количество дней','N','');

   qry1.SQL.Clear;

   qry1.SQL.Add('select sum(summa) as dohod from sales where saledate between subdate(curdate(), interval '+d+' day) and curdate()');

   qry1.Open;

 end;

 ShowMessage(qry1.Fields[0].AsString+'руб.');

 cbb1.Text:='День';

end;

procedure TForm6.btn9Click(Sender: TObject);

var d1:tDATE;

   d:string;

   s:string;

begin

 if(cbb2.Text='указанный месяц') then

 begin

  d:=InputBox('Месяц','Укажите месяц и год','mm.yyyy');

  d1:=StrToDate('01.'+d);

  s:=FormatDateTime('yyyy-mm-dd',d1);

  qry1.SQL.Clear;

  qry1.SQL.Add('select sum(summa) as dohod from sales where month(saledate)=month('+#39+s+#39+') and year(saledate)=year('+#39+s+#39+')');

  qry1.Open;

 end;

 if(cbb2.Text='последние N месяцев/месяца') then

 begin

  d:=InputBox('Количество месяцев','N','');

  qry1.SQL.Clear;

  qry1.SQL.Add('select sum(summa) as dohod from sales where saledate between subdate(curdate(), interval '+d+' month) and curdate()');

  qry1.Open;

 end;

 ShowMessage(qry1.Fields[0].AsString+'руб.');

 cbb2.Text:='Месяц';

end;

procedure TForm6.btn10Click(Sender: TObject);

var d:string;

begin

 if(cbb3.Text='указанный год') then

 begin

   d:=InputBox('Год','Укажите год','yyyy');

   qry1.SQL.Clear;

   qry1.SQL.Add('select sum(summa) as dohod from sales where year(saledate)='+#39+d+#39'');

   qry1.Open;

 end;

 if(cbb3.Text='последние N года/лет') then

 begin

  d:=InputBox('Количество годов','N','');

  qry1.SQL.Clear;

  qry1.SQL.Add('select sum(summa) as dohod from sales where saledate between subdate(curdate(), interval '+d+' year) and curdate()');

  qry1.Open;

 end;

 ShowMessage(qry1.Fields[0].AsString+'руб.');

 cbb3.Text:='Год';

end;

procedure TForm6.btn6Click(Sender: TObject);

begin

 rvprjct3.Execute;

end;

procedure TForm6.btn11Click(Sender: TObject);

begin

 rvprjct4.Execute;

end;

procedure TForm6.btn12Click(Sender: TObject);

begin

 qry1.SQL.Clear;

 qry1.SQL.Add('truncate table sales');

 qry1.ExecSQL;

end;

end.

Листинг 7. Файл Unit7.pas, форма «Список сотрудников»

unit Unit7;

interface

uses

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

 Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, ExtDlgs,

 Mask;

type

 TForm7 = class(TForm)

   tbl1: TADOTable;

   con1: TADOConnection;

   ds1: TDataSource;

   dbgrd1: TDBGrid;

   dbnvgr1: TDBNavigator;

   cbb1: TComboBox;

   cbb2: TComboBox;

   cbb3: TComboBox;

   cbb4: TComboBox;

   btn1: TButton;

   btn3: TButton;

   edt1: TEdit;

   btn4: TButton;

   btn5: TButton;

   qry1: TADOQuery;

   ds2: TDataSource;

   btn2: TButton;

   dbimgFoto: TDBImage;

   btn6: TButton;

   dlgOpenPic1: TOpenPictureDialog;

   qry2: TADOQuery;

   ds3: TDataSource;

   procedure btn1Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

   procedure btn5Click(Sender: TObject);

   procedure cbb1Change(Sender: TObject);

   procedure cbb2Change(Sender: TObject);

   procedure cbb3Change(Sender: TObject);

   procedure cbb4Change(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure cbb4KeyPress(Sender: TObject; var Key: Char);

   procedure btn2Click(Sender: TObject);

   procedure btn6Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form7: TForm7;

implementation

uses Unit1, Unit4, Unit8;

{$R *.dfm}

procedure TForm7.btn1Click(Sender: TObject);

begin

 PasswordDlg.Close;

end;

procedure TForm7.btn4Click(Sender: TObject);

begin

   DBGrd1.DataSource:=ds1;

   dbgrd1.DataSource.DataSet.Active:=true;

   qry1.SQL.Clear;

   cbb1.Text:='По ФИО';

   cbb2.Text:='По дате рождения';

   cbb3.Text:='По дате приема';

   cbb4.Text:='По должности';

   edt1.Text:='';

end;

procedure TForm7.btn5Click(Sender: TObject);

begin

 form7.Close;

 Form1.show;

end;

procedure TForm7.cbb1Change(Sender: TObject);

begin

 qry1.SQL.Clear;

 if(Cbb1.Text='От Я до А')

 then

 qry1.SQL.Add('select*from sotrudniki order by id_fio desc')

 else

 qry1.SQL.Add('select*from sotrudniki order by id_fio');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm7.cbb2Change(Sender: TObject);

var d1, d2:tDATE;

s, s1:string;

begin

 qry1.SQL.Clear;

 if(Cbb2.Text='Убывание')

 then

 qry1.SQL.Add('select*from sotrudniki order by date_rojd desc')

 else

 qry1.SQL.Add('select*from sotrudniki order by date_rojd');

 if(cbb2.Text='Ввести дату') then

 begin

   d1:=StrToDate(InputBox('Дата рождения','Введите дату',''));

   s:=FormatDateTime('yyyy-mm-dd',d1);

   qry1.SQL.Add('select*from sotrudniki where date_rojd ='+#39+s+#39';');

 end;

 if(cbb2.Text='В промежутке с') then

 begin

   d1:=StrToDate(InputBox('Дата рождения','Начальная дата',''));

   d2:=StrToDate(InputBox('Дата рождения','Конечная дата',''));

   s:=FormatDateTime('yyyy-mm-dd', d1);

   s1:=FormatDateTime('yyyy-mm-dd', d2);

   qry1.SQL.Add('select*from sotrudniki where date_rojd between '+#39+s+#39+' and '+#39+s1+#39'');

 end;

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm7.cbb3Change(Sender: TObject);

var d1, d2:tDATE;

s, s1:string;

begin

 qry1.SQL.Clear;

 if(Cbb3.Text='Убывание')

 then

 qry1.SQL.Add('select*from sotrudniki order by prinyat desc')

 else

 qry1.SQL.Add('select*from sotrudniki order by prinyat');

 if(cbb3.Text='Ввести дату') then

 begin

   d1:=StrToDate(InputBox('Дата принятия','Введите дату',''));

   s:=FormatDateTime('yyyy-mm-dd',d1);

   qry1.SQL.Add('select*from sotrudniki where prinyat ='+#39+s+#39';');

 end;

 if(cbb3.Text='В промежутке с') then

 begin

   d1:=StrToDate(InputBox('Дата принятия','Начальная дата',''));

   d2:=StrToDate(InputBox('Дата принятия','Конечная дата',''));

   s:=FormatDateTime('yyyy-mm-dd', d1);

   s1:=FormatDateTime('yyyy-mm-dd', d2);

   qry1.SQL.Add('select*from sotrudniki where prinyat between'+#39+s+#39+' and '+#39+s1+#39'');

 end;

 

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm7.cbb4Change(Sender: TObject);

begin

 qry1.SQL.Clear;

 if(Cbb4.Text='заведующий-провизор') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'заведующий-провизор'+#39';');

 if(cbb4.Text='провизор-аналитик') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'провизор-аналитик'+#39';');

 if(cbb4.Text='заместитель заведующего') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'заместитель заведующего'+#39';');

 if(cbb4.Text='провизор-технолог') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'провизор-технолог'+#39';');

 if(cbb4.Text='дефектар') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'дефектар'+#39';');

 if(cbb4.Text='фармацевт') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'фармацевт'+#39';');

 if(cbb4.Text='провизор-клиницист') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'провизор-клиницист'+#39';');

 if(cbb4.Text='фасовщица') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'фасовщица'+#39';');

 if(cbb4.Text='санитар') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'санитар'+#39';');

 if(cbb4.Text='бухгалтер-фармацевт') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'бухгалтер-фармацевт'+#39';');

 if(cbb4.Text='инженер') then

 qry1.SQL.Add('select*from sotrudniki where doljnost ='+#39+'инженер'+#39';');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm7.btn3Click(Sender: TObject);

var str:string;

begin

 qry1.sql.clear;

 str:=edt1.Text;

 qry1.SQL.Add('select*from sotrudniki where id_fio='+#39+str+#39';');

 qry1.Open;

 ds2.DataSet.Close;

 ds2.DataSet:=qry1;

 dbgrd1.DataSource:=ds2;

 dbgrd1.DataSource.DataSet.Active:=True;

end;

procedure TForm7.cbb4KeyPress(Sender: TObject; var Key: Char);

var s2:array[0..0] of Char;

begin

   s2[0]:=Key;

   if  DBGrd1.Font.Charset=OEM_CHARSET then CharToOEM(s2,s2);

   Key:=s2[0];

end;

procedure TForm7.btn2Click(Sender: TObject);

begin

 form7.Close;

 form4.Show;

 Form4.ds1.DataSet.Close;

 Form4.ds1.DataSet.Active:=True;

 Form4.dbedtpremiya.Text:='';

 Form4.dbedtnalog.Text:='';

 Form4.dbedtnacisl.Text:='';

end;

procedure TForm7.btn6Click(Sender: TObject);

begin

   if dlgOpenPic1.Execute then

   begin

    dbimgFoto.Picture.LoadFromFile(dlgOpenPic1.FileName);

    tbl1.Edit;

    TBLOBField(tbl1.FieldByName('foto')).LoadFromFile(dlgOpenPic1.FileName);

    tbl1.Post;

   end;

end;

end.

Листинг 8. Файл Unit8.pas, форма «Ввод пароля»

unit Unit8;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

 Buttons;

type

 TPasswordDlg = class(TForm)

   Label1: TLabel;

   Password: TEdit;

   OKBtn: TButton;

   CancelBtn: TButton;

   lbl1: TLabel;

   procedure OKBtnClick(Sender: TObject);

   procedure CancelBtnClick(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 PasswordDlg: TPasswordDlg;

implementation

uses Unit1;

{$R *.dfm}

procedure TPasswordDlg.OKBtnClick(Sender: TObject);

begin

 if Password.Text='12345' then

 begin

   Form1.Show;

   PasswordDlg.Hide;

 end

 else

 lbl1.Caption:='Неверный пароль!';

end;

procedure TPasswordDlg.CancelBtnClick(Sender: TObject);

begin

Close;

end;

end.

Листинг 9. Файл Unit9.pas, форма «Дополнительная информация»

unit Unit9;

interface

uses

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

 Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, Mask,

 ComCtrls;

type

 TForm9 = class(TForm)

   con1: TADOConnection;

   tbl1: TADOTable;

   ds1: TDataSource;

   pgc1: TPageControl;

   ts1: TTabSheet;

   lbl1: TLabel;

   lbl2: TLabel;

   lbl3: TLabel;

   lbl4: TLabel;

   lbl6: TLabel;

   lbl7: TLabel;

   dbedtNAZVANIE: TDBEdit;

   dbedtPREDSTAVL: TDBEdit;

   dbedtDOLJNOST: TDBEdit;

   dbedtADRES: TDBEdit;

   dbedtStrana: TDBEdit;

   dbedtTELEFON: TDBEdit;

   btn8: TButton;

   ts3: TTabSheet;

   lbl8: TLabel;

   lbl14: TLabel;

   dbedtgroup_prep: TDBEdit;

   dbmmospecific_prep: TDBMemo;

   btn9: TButton;

   tbl2: TADOTable;

   ds2: TDataSource;

   qry1: TADOQuery;

   ds3: TDataSource;

   qry2: TADOQuery;

   ds4: TDataSource;

   tbl3: TADOTable;

   ds5: TDataSource;

   dbedtNazv_prep: TDBEdit;

   lbl5: TLabel;

   lbl9: TLabel;

   dbedtNazv_prep1: TDBEdit;

   dbedtId_Dill: TDBEdit;

   lbl10: TLabel;

   btn1: TButton;

   btn2: TButton;

   dbmmoid_sick: TDBMemo;

   lbl11: TLabel;

   tbl4: TADOTable;

   ds6: TDataSource;

   qry3: TADOQuery;

   ds7: TDataSource;

   procedure btn9Click(Sender: TObject);

   procedure btn8Click(Sender: TObject);

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form9: TForm9;

implementation

uses Unit10, Unit3;

{$R *.dfm}

procedure TForm9.btn9Click(Sender: TObject);

var i:Integer;

   s:String;

begin

 ts1.Show;

 i:=form3.dbgrd1.SelectedIndex;

 s:=IntToStr(Form3.DBGrd1.DataSource.DataSet.Fields.Fields[i].Value);

 qry1.SQL.Clear;

 qry1.SQL.Add('select nazv_prep, nazvanie, predstavl, doljnost, adres, strana, telefon, id_dill, id_prep, nazv_prep, id_postav, id_use, kol_vo, godnost, price_zakup, price_real from preparat, dillers where preparat.id_postav=dillers.id_dill and preparat.id_prep='+#39+s+#39';');

 qry1.Open;

 ds3.DataSet.Close;

 ds3.DataSet:=qry1;

 dbedtNazv_prep.DataSource:=ds3;

 dbedtNAZVANIE.DataSource:=ds3;

 dbedtPREDSTAVL.DataSource:=ds3;

 dbedtDOLJNOST.DataSource:=ds3;

 dbedtADRES.DataSource:=ds3;

 dbedtStrana.DataSource:=ds3;

 dbedtTELEFON.DataSource:=ds3;

 dbedtId_Dill.DataSource:=ds3;

 ds3.DataSet.Active:=True;

end;

procedure TForm9.btn8Click(Sender: TObject);

var i:Integer;

   s:String;

begin

 ts3.Show;

 i:=form3.dbgrd1.SelectedIndex;

 s:=IntToStr(Form3.DBGrd1.DataSource.DataSet.Fields.Fields[i].Value);

 qry2.SQL.Clear;

 qry2.SQL.Add('select nazv_prep, group_prep, specific_prep from preparat, use_prep where preparat.id_use=use_prep.id_use and preparat.id_prep='+#39+s+#39';');

 qry2.Open;

 qry3.SQL.Clear;

 qry3.SQL.Add('select id_sick, id_use_sk from sickness, preparat where preparat.id_use=sickness.id_use_sk and preparat.id_prep='+#39+s+#39'');

 qry3.Open;

 ds4.DataSet.Close;

 ds4.DataSet:=qry2;

 dbedtNazv_prep1.DataSource:=ds4;

 dbedtgroup_prep.DataSource:=ds4;

 dbmmospecific_prep.DataSource:=ds4;

 ds4.DataSet.Active:=True;

 ds7.DataSet.Close;

 ds7.DataSet:=qry3;

 dbmmoid_sick.DataSource:=ds7;

 ds7.DataSet.Active:=True;

end;

procedure TForm9.btn1Click(Sender: TObject);

begin

 Form9.Close;

 form3.Show;

end;

procedure TForm9.btn2Click(Sender: TObject);

begin

 Form9.Close;

 Form3.Show;

end;

end.

Листинг 10. Файл Unit10.pas, форма «Ввод/редактирование данных»

unit Unit10;

interface

uses

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

 Dialogs, StdCtrls, ComCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls,

 Mask;

type

 TForm10 = class(TForm)

   pgc1: TPageControl;

   con1: TADOConnection;

   qry1: TADOQuery;

   ds1: TDataSource;

   ts1: TTabSheet;

   ts2: TTabSheet;

   tbl1: TADOTable;

   dbgrd1: TDBGrid;

   ds2: TDataSource;

   btn1: TButton;

   btn2: TButton;

   dbnvgr1: TDBNavigator;

   dbedtId_Dill: TDBEdit;

   dbedtPredstavl: TDBEdit;

   dbedtDoljnost: TDBEdit;

   dbedtAdres: TDBEdit;

   dbedtStrana: TDBEdit;

   dbedtTelefon: TDBEdit;

   lbl1: TLabel;

   lbl2: TLabel;

   lbl3: TLabel;

   lbl4: TLabel;

   lbl5: TLabel;

   lbl6: TLabel;

   tbl2: TADOTable;

   ds3: TDataSource;

   dbgrd2: TDBGrid;

   dbnvgr2: TDBNavigator;

   dbedtid_use: TDBEdit;

   lbl7: TLabel;

   dbmmospecific_prep: TDBMemo;

   lbl8: TLabel;

   dbmmoid_sick: TDBMemo;

   tbl3: TADOTable;

   ds4: TDataSource;

   lbl9: TLabel;

   dbnvgr3: TDBNavigator;

   dbedtid_use_sk: TDBEdit;

   lbl10: TLabel;

   btn3: TButton;

   btn4: TButton;

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

   procedure btn3Click(Sender: TObject);

   procedure btn4Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form10: TForm10;

implementation

uses Unit9, Unit3, Unit1;

{$R *.dfm}

procedure TForm10.btn1Click(Sender: TObject);

begin

 Form10.Close;

 Form3.Show;

end;

procedure TForm10.btn2Click(Sender: TObject);

begin

 Form10.Close;

 Form3.Show;

end;

procedure TForm10.btn3Click(Sender: TObject);

begin

 Form1.Show;

 Form10.Close;

end;

procedure TForm10.btn4Click(Sender: TObject);

begin

 Form1.Show;

 Form10.Close;

end;

end.


 

А также другие работы, которые могут Вас заинтересовать

8584. Учение Б. Спинозы о субстанции 30.5 KB
  Учение Б. Спинозы о субстанции. Онтологическая функция понятия Бога, в особенности пантеистического, состоящая в максимальном заострении проблемы единства мира, в высокой степени присуща философской доктрине Спинозы. Уже в первом своем произведении ...
8585. Субъективный идеализм Беркли и агностицизм Д. Юма 33 KB
  Субъективный идеализм Беркли и агностицизм Д. Юма. Субъективный идеализм Беркли. Учение, созданное Беркли это - субъективный идеализм. Отвергнув бытие материи, оно признает существование только человеческого сознания, в котором Беркли различает иде...
8586. Критическая философия И. Канта 32.5 KB
  Критическая философия И. Канта Основоположником немецкой классической философии является Иммануил Кант. Все творчество И. Канта можно разделить на два больших периода: докритический и критический. В докритический период И. Кант стоял н...
8587. Объективный идеализм Г.В.Ф. Гегеля 31.5 KB
  Объективный идеализм Г.В.Ф. Гегеля. Гегель в своей философии преимущество и первенство отдавал духу (философскому мышлению) над материей, то его справедливо называют идеалистом а поскольку он отрицал взгляды субъективных идеалистов и считал, что в ...
8588. Антропологический материализм Л.Фейербаха 33 KB
  Антропологический материализм Л.Фейербаха. Фейербах - последовательный и воинствующий материалист. Для него в мире существует лишь одно бытие - материя. Для него Материя и Бытие понятия тождественные, и он часто употребляет одно понятие вместо д...
8589. Кризис классической философии. Становление и развитие неклассической философии, ее основные черты 32 KB
  Кризис классической философии. Становление и развитие неклассической философии, ее основные черты. Кризис классической философии. Кризис классической философии и рациональности во второй половине XIX в. обнажает проблемы иррационального, интуитивног...
8590. Гуманитарно-антропологическое направление постклассической философии: философия жизни, экзистенциализм, неотомизм 34 KB
  Гуманитарно-антропологическое направление постклассической философии: философия жизни, экзистенциализм, неотомизм. Философия жизни. Философия жизни - направление в западно-европейской философской мысли, сложившееся в последней трети 19 в. в Гер...
8591. Сциентистское направление: позитивизм. Формы позитивизма 29.5 KB
  Сциентистское направление: позитивизм. Формы позитивизма. Сциентистское направление: позитивизм. Сциентизм в философии возникает как реакция на натурфилософичность и абстрактность схем классической философии, которые, по мнению представителей данног...
8592. Постпозитивизм и философия науки 31 KB
  Постпозитивизм и философия науки. Понятие постпозитивизм охватывает собой пришедшую на смену неопозитивизму широкую совокупность концепций. Постпозитивизм в настоящее время не отличается большой внутренней однородностью: по многим вопросам существуе...