Автоматизированная информационная система "Подписка"

Требования к функциональным характеристикам информационной системы "Подписка". Функциональное проектирование автоматизированной системы ведения учета основных средств на предприятии. Проектирование базы данных автоматизированной системы ведения учета.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.01.2015
Размер файла 753,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Обработчик нажатия кнопки «Удалить». Удаляет выбранную запись из таблицы «Поставщик».

TfmSupplier.buEditClick

Обработчик нажатия кнопки «Изменить». Вносит указанные изменения в выбранную запись таблицы «Поставщик».

TfmSupplier.buInsertClick

Обработчик нажатия кнопки «Добавить». Добавляет запись с указанными данными в таблицу «Поставщик».

TfmSupplier.DBGrid1CellClick

Обработчик клика по строке таблицы «Поставщик». Вводит данные полей выбранной записи в соответствующие текстовые поля на форме.

TfmSupplier.Edit4KeyPress

Обработчик ввода данных с клавиатуры в поле ввода «ИНН». Запрещает ввод символов, не являющихся цифрами

TfmSupplier.Edit5KeyPress

Обработчик ввода данных с клавиатуры в поле ввода «КПП». Запрещает ввод символов, не являющихся цифрами

TfmSupplier.Edit6KeyPress

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

TfmSupplier.Edit7KeyPress

Обработчик ввода данных с клавиатуры в поле ввода «БИК». Запрещает ввод символов, не являющихся цифрами

TfmSupplier.Edit8KeyPress

Обработчик ввода данных с клавиатуры в поле ввода «Корреспондентский счет». Запрещает ввод символов, не являющихся цифрами

TfmSupplier.FormClose

Обработчик закрытия формы «Справочники - Поставщики».

Writeoff

TfmWriteoff.buExitClick

Обработчик нажатия кнопки «Выход». Закрывает форму «Списание основных средств»

TfmWriteoff.buInsertClick

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

TfmWriteoff.buPrintClick

Обработчик нажатия кнопки «На печать». Выводит на экран печатную форму документа «Акт о списании».

TfmWriteoff.DBGrid2CellClick

Обработчик клика по строке таблицы «Ввод в эксплуатацию».

TfmWriteoff.Edit2KeyPress

Обработчик ввода данных с клавиатуры в поле ввода «Стоимость». Запрещает ввод символов, не являющихся цифрами

TfmWriteoff.FormClose

Обработчик закрытия формы «Списание основных средств».

TfmWriteoff.FormShow

Обработчик события отображения на экране формы «Списание основных средств».

Report1

TfmReport1.buPushClick

Обработчик нажатия кнопки «Сформировать». Выводит печатную форму отчета на экран.

TfmReport1.FormClose

Обработчик закрытия формы «Отчеты - Отчет о поступлении основных средств»

Report2

TfmReport2.buPushClick

Обработчик нажатия кнопки «Сформировать». Выводит печатную форму отчета на экран.

TfmReport2.FormClose

Обработчик закрытия формы «Отчеты - Отчет по начислению амортизации»

Для вывода отчетов на печать на форме модуля данных DataM были добавлены компоненты FastReport классов TfrxReport: frxR1 для отчета по подписке и frxR2 для приходного журнала. В редакторе отчетов FastReport настроен внешний вид формируемых отчетов. Текст запросов SQL для формирования отчетов приведен в приложении В.

6.4 Используемые технические средства

Информационная система разработана на ПК со следующими характеристиками: процессор Core i5-2410M c тактовой частотой 2,3 ГГц; оперативная память - 4 Гб; с наличием клавиатуры, мыши и принтера. Приложение занимает около 10 Мб на жестком диске.

6.5 Вызов и загрузка

В папке с курсовым проектом, находится файл .EXE под названием Subscription. Следует щелкнуть по нему два раза кнопкой мыши для запуска приложения.

6.6 Входные данные

Входные данные системы:

- информация по изданию;

- информация о поступлении;

- личные данные подписчика;

- счет-фактура;

- заявка на подписку;

- информация по доставке;

- личные данные сотрудника.

6.7 Выходные данные

Выходные данные системы:

- отчет по подписке;

- справочные данные о подписчике;

- справочные данные по изданию;

- приходный журнал;

- доставочный лист.

7. Программа и методика испытаний

7.1 Объект испытаний

Объектом испытаний является приложение «Автоматизированная информационная система «Подписка».

7.2 Цель испытаний

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

7.3 Требования к программе

Информационная система должна автоматизировать учет следующих операций на предприятии:

- поступление изданий в городское отделение связи;

- оформление подписок на издания;

- доставка изданий подписчикам;

- учет сведений об изданиях;

- учет сведений о подписчиках;

- учет сведений о сотрудниках городского отделения связи.

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

- отчет по подписке;

- справочные данные о подписчике;

- справочные данные по изданию;

- приходный журнал;

- доставочный лист.

7.4 Требования к программной документации

Программная документация к разрабатываемому проекту должна содержать:

- анализ предметной области;

- техническое задание;

- описание применения.

7.5 Средства и порядок испытаний

Для проведения испытаний необходимо наличие ПК с процессором тактовой частоты 866 МГц, оперативной памятью 512 МБ, свободное дисковое пространство 50 Мбайт, клавиатура, мышь, принтер. Также необходимо наличие установленной среды программирования Delphi 2006, СУБД Firebird 2.5 и редактора Microsoft Word. Испытание программы должно проводиться на основе контрольно-отладочных примеров.

7.6 Методы испытаний

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

Попытаемся добавить в справочник «Виды изданий» запись с пустым наименованием. При нажатии на кнопку «Добавить» будет выведено сообщение о необходимости заполнить все обязательные поля. Аналогичное сообщение будет выведено также при незаполненном поле «Наименование» во время нажатия кнопки «Изменить». Также данное сообщение выводится и при работе с другими таблицами БД в аналогичных ситуациях. Стоит отметить, что не все поля всех таблиц являются обязательными.

Попытаемся удалить запись из справочника «Виды изданий» с наименованием «журнал». При нажатии на кнопку «Удалить» будет выведено сообщение, оповещающее о невозможности удаления данной записи в связи с наличием в БД зависимых записей в других таблицах. В данном случае в таблице «Издания», т.к. в БД уже хранятся записи об изданиях, тип которых - журнал. Чтобы удалить запись с наименованием «журнал» из БД необходимо сначала удалить все зависимые записи.

При попытке пользователя ввести буквенные символы, например, в поле «Цена» таблицы «Издания» данные символы вводится не будут. Во всех необходимых случаях предусмотрен запрет ввода буквенных и других неразрешенных символов в полях, предназначенных для численных данных. Кроме того, во всех полях предусмотрено ограничение на количество вводимых символов. Эти ограничения соответствуют длине полей, предусмотренной в разработанной базе данных.

Рассмотрим пример расчета суммы подписки. На форме «Оформление подписки на издания» введем количество подписки и выберем наименование издания. При этом будет проведен автоматический расчет суммы подписки согласно цене издания и количеству выписанных номеров. Это значение выводится в поле «Сумма подписки» на форме. В данном случае количество выписанных изданий - 10 штук, цена одного экземпляра издания - 100 руб. Сумма подписки рассчитывается по формуле:

Сумма подписки=Цена экземпляра издания*Количество подписки

В данном случае она должна быть равна 1000 руб. Именно такое значение было записано в поле «Сумма подписки».

Результаты примеров тестовых испытаний приведены в приложении Д.

8. Описание применения

8.1 Назначение применения

Автоматизированная информационная система предназначена для ведения учета подписок на периодические издания в городском отделении связи.

8.2 Условия применения

Разработанная программа имеет наименование Subscription. Программа написана в среде Borland Delphi 2006, её текст содержится в файлах uStart.pas, About.pas, DataM.pas, uArea.pas, uCategory.pas, uCity.pas, uEdition.pas, uEditionType.pas, uJob.pas, uPublisher.pas, uReceipt.pas, uStreet.pas, uSubscriber.pas, uSubscription.pas, uWorker.pas, Report1.pas, Report2.pas, uStart.dfm, About.dfm, DataM.dfm, uArea.dfm, uCategory.dfm, uCity.dfm, uEdition.dfm, uEditionType.dfm, uJob.dfm, uPublisher.dfm, uReceipt.dfm, uStreet.dfm, uSubscriber.dfm, uSubscription.dfm, uWorker.dfm, Report1.dfm, Report2.dfm, Subscription.dpr. Программа должна корректно работать на ПК, сертифицированном на работу под управлением операционной системы Windows XP и выше с процессором Pentium III и тактовой частотой 866 МГц, оперативной памятью 512 МБ, свободным дисковым пространством не менее 50 Мб, а также наличием клавиатуры, мыши, принтера.

8.3 Описание задачи

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

8.4 Входные и выходные данные

Входными параметрами являются:

- информация по изданию;

- информация о поступлении;

- личные данные подписчика;

- счет-фактура;

- заявка на подписку;

- информация по доставке;

- личные данные сотрудника.

Выходными параметрами являются:

- отчет по подписке;

- справочные данные о подписчике;

- справочные данные по изданию;

- приходный журнал;

- доставочный лист.

Заключение

В курсовой работе описаны этапы создания автоматизированной информационной системы «Подписка».

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

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

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

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

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

2 www.interface.ru;

3 www.wikipedia.ru;

4 www.ms.by.ru;

5 www.firebird-server.narod.ru.

ПРИЛОЖЕНИЕ В

SQL-запросы

Запрос к отчету «Отчет о подписках»:

SELECT

SUBSCRIPTION.ID_SUBSCRIPTION,

SUBSCRIPTION.ID_SUBSCRIBER,

SUBSCRIBER.NAME,

SUBSCRIPTION.SDATE,

SUBSCRIPTION.AMOUNT,

SUBSCRIPTION.TOTAL,

SUBSCRIPTION.ID_EDITION,

EDITION.NAME,

EDITION.COST,

EDITION_TYPE.NAME

FROM

SUBSCRIPTION,

SUBSCRIBER,

EDITION,

EDITION_TYPE

WHERE

(SUBSCRIPTION.ID_SUBSCRIBER=SUBSCRIBER.ID_SUBSCRIBER)

AND (SUBSCRIPTION.ID_EDITION=EDITION.ID_EDITION)

AND (EDITION.ID_EDITION_TYPE=EDITION_TYPE.ID_EDITION_TYPE)

AND (SUBSCRIPTION.SDATE BETWEEN :X AND :Y)

Запрос к отчету «Приходный журнал»:

SELECT

RECEIPT.ID_RECEIPT,

RECEIPT.ID_EDITION,

RECEIPT.RDATE,

RECEIPT.AMOUNT,

EDITION.NAME,

EDITION_TYPE.NAME,

PUBLISHER.NAME

FROM

RECEIPT,

EDITION,

EDITION_TYPE,

PUBLISHER

WHERE

(RECEIPT.ID_EDITION=EDITION.ID_EDITION)

AND (EDITION.ID_EDITION_TYPE=EDITION_TYPE.ID_EDITION_TYPE)

AND (EDITION.ID_PUBLISHER=PUBLISHER.ID_PUBLISHER)

AND (RECEIPT.RDATE BETWEEN :X AND :Y)

Запрос к документу «Справочные данные подписчика»:

SELECT

ID_SUBSCRIBER,

NAME,

ADDRESS,

PHONE

FROM

SUBSCRIBER

WHERE

ID_SUBSCRIBER=:X

Запрос к документу «Доставочный лист»:

SELECT

DELIVERY.ID_DELIVERY,

DELIVERY.ID_SUBSCRIPTION,

DELIVERY.DDATE,

DELIVERY.ID_AREA,

DELIVERY.ID_WORKER,

WORKER.NAME,

SUBSCRIPTION.ID_SUBSCRIBER,

SUBSCRIPTION.ID_EDITION,

EDITION.NAME,

SUBSCRIBER.NAME

FROM

DELIVERY,

SUBSCRIPTION,

EDITION,

SUBSCRIBER,

WORKER

WHERE

(DELIVERY.ID_DELIVERY=:X)

AND (DELIVERY.ID_SUBSCRIPTION=SUBSCRIPTION.ID_SUBSCRIPTION)

AND (SUBSCRIPTION.ID_SUBSCRIBER=SUBSCRIBER.ID_SUBSCRIBER)

AND (SUBSCRIPTION.ID_EDITION=EDITION.ID_EDITION)

AND (DELIVERY.ID_WORKER=WORKER.ID_WORKER)

ПРИЛОЖЕНИЕ Г

Текст программы

Текст модуля uStart.pas:

unit uStart;

interface

uses

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

Dialogs, Menus, DataM, uArea, uCategory, uCity, uDelivery, uEdition,

uEditionType, uJob, uPublisher, uReceipt, uStreet, uSubscriber, uSubscription,

uWorker, uAbout, uReport1, uReport2;

type

TfmStart = class(TForm)

MainMenu1: 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;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

N22: TMenuItem;

procedure N21Click(Sender: TObject);

procedure N20Click(Sender: TObject);

procedure N22Click(Sender: TObject);

procedure N19Click(Sender: TObject);

procedure N18Click(Sender: TObject);

procedure N17Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmStart: TfmStart;

implementation

{$R *.dfm}

procedure TfmStart.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dbSubscription.Connected:=False;

end;

procedure TfmStart.FormShow(Sender: TObject);

begin

DM.dbSubscription.Connected:=True;

end;

procedure TfmStart.N10Click(Sender: TObject);

begin

fmEdition:=TfmEdition.Create(Application);

fmEdition.ShowModal;

end;

procedure TfmStart.N11Click(Sender: TObject);

begin

fmSubscriber:=TfmSubscriber.Create(Application);

fmSubscriber.ShowModal;

end;

procedure TfmStart.N12Click(Sender: TObject);

begin

fmWorker:=TfmWorker.Create(Application);

fmWorker.ShowModal;

end;

procedure TfmStart.N13Click(Sender: TObject);

begin

fmPublisher:=TfmPublisher.Create(Application);

fmPublisher.ShowModal;

end;

procedure TfmStart.N14Click(Sender: TObject);

begin

fmEditionType:=TfmEditionType.Create(Application);

fmEditionType.ShowModal;

end;

procedure TfmStart.N15Click(Sender: TObject);

begin

fmJob:=TfmJob.Create(Application);

fmJob.ShowModal;

end;

procedure TfmStart.N16Click(Sender: TObject);

begin

fmCategory:=TfmCategory.Create(Application);

fmCategory.ShowModal;

end;

procedure TfmStart.N17Click(Sender: TObject);

begin

fmCity:=TfmCity.Create(Application);

fmCity.ShowModal;

end;

procedure TfmStart.N18Click(Sender: TObject);

begin

fmStreet:=TfmStreet.Create(Application);

fmStreet.ShowModal;

end;

procedure TfmStart.N19Click(Sender: TObject);

begin

fmArea:=TfmArea.Create(Application);

fmArea.ShowModal;

end;

procedure TfmStart.N20Click(Sender: TObject);

begin

fmReport1:=TfmReport1.Create(Application);

fmReport1.ShowModal;

end;

procedure TfmStart.N21Click(Sender: TObject);

begin

fmReport2:=TfmReport2.Create(Application);

fmReport2.ShowModal;

end;

procedure TfmStart.N22Click(Sender: TObject);

begin

fmAbout:=TfmAbout.Create(Application);

fmAbout.ShowModal;

end;

procedure TfmStart.N2Click(Sender: TObject);

begin

Application.Terminate;

end;

procedure TfmStart.N7Click(Sender: TObject);

begin

fmReceipt:=TfmReceipt.Create(Application);

fmReceipt.ShowModal;

end;

procedure TfmStart.N8Click(Sender: TObject);

begin

fmSubscription:=TfmSubscription.Create(Application);

fmSubscription.ShowModal;

end;

procedure TfmStart.N9Click(Sender: TObject);

begin

fmDelivery:=TfmDelivery.Create(Application);

fmDelivery.ShowModal;

end;

end.

Текст модуля DataM.pas:

unit DataM;

interface

uses

SysUtils, Classes, DB, frxClass, frxDBSet, FIBDatabase, pFIBDatabase,

FIBDataSet, pFIBDataSet;

type

TDM = class(TDataModule)

dbSubscription: TpFIBDatabase;

dstEditionType: TpFIBDataSet;

trRead: TpFIBTransaction;

trUpdate: TpFIBTransaction;

frxR1: TfrxReport;

frxDBdst1: TfrxDBDataset;

dsEditionType: TDataSource;

dstArea: TpFIBDataSet;

dsArea: TDataSource;

dstCategory: TpFIBDataSet;

dsCategory: TDataSource;

dstCity: TpFIBDataSet;

dsCity: TDataSource;

dstDelivery: TpFIBDataSet;

dsDelivery: TDataSource;

dstEdition: TpFIBDataSet;

dsEdition: TDataSource;

dstJob: TpFIBDataSet;

dsJob: TDataSource;

dstPublisher: TpFIBDataSet;

dsPublisher: TDataSource;

dstReceipt: TpFIBDataSet;

dsReceipt: TDataSource;

dstStreet: TpFIBDataSet;

dsStreet: TDataSource;

dstSubscriber: TpFIBDataSet;

dsSubscriber: TDataSource;

dstSubscription: TpFIBDataSet;

dsSubscription: TDataSource;

dstWorker: TpFIBDataSet;

dsWorker: TDataSource;

dstEditionTypeID_EDITION_TYPE: TFIBIntegerField;

dstEditionTypeNAME: TFIBStringField;

dstAreaID_AREA: TFIBIntegerField;

dstAreaID_STREET: TFIBIntegerField;

dstCategoryID_CATEGORY: TFIBIntegerField;

dstCategoryNAME: TFIBIntegerField;

dstCityID_CITY: TFIBIntegerField;

dstCityNAME: TFIBStringField;

dstDeliveryID_DELIVERY: TFIBIntegerField;

dstDeliveryID_SUBSCRIPTION: TFIBIntegerField;

dstDeliveryDDATE: TFIBDateField;

dstDeliveryID_AREA: TFIBIntegerField;

dstDeliveryID_WORKER: TFIBIntegerField;

dstEditionID_EDITION: TFIBIntegerField;

dstEditionNAME: TFIBStringField;

dstEditionPERIODICITY: TFIBIntegerField;

dstEditionCOST: TFIBFloatField;

dstEditionID_EDITION_TYPE: TFIBIntegerField;

dstEditionID_PUBLISHER: TFIBIntegerField;

dstJobID_JOB: TFIBIntegerField;

dstJobNAME: TFIBStringField;

dstPublisherID_PUBLISHER: TFIBIntegerField;

dstPublisherNAME: TFIBStringField;

dstPublisherID_CITY: TFIBIntegerField;

dstReceiptID_RECEIPT: TFIBIntegerField;

dstReceiptID_EDITION: TFIBIntegerField;

dstReceiptRDATE: TFIBDateField;

dstReceiptAMOUNT: TFIBIntegerField;

dstStreetID_STREET: TFIBIntegerField;

dstStreetNAME: TFIBStringField;

dstSubscriberID_SUBSCRIBER: TFIBIntegerField;

dstSubscriberNAME: TFIBStringField;

dstSubscriberADDRESS: TFIBStringField;

dstSubscriberPHONE: TFIBStringField;

dstSubscriptionID_SUBSCRIPTION: TFIBIntegerField;

dstSubscriptionID_SUBSCRIBER: TFIBIntegerField;

dstSubscriptionSDATE: TFIBDateField;

dstSubscriptionAMOUNT: TFIBIntegerField;

dstSubscriptionTOTAL: TFIBFloatField;

dstSubscriptionID_EDITION: TFIBIntegerField;

dstWorkerID_WORKER: TFIBIntegerField;

dstWorkerNAME: TFIBStringField;

dstWorkerBIRTHDATE: TFIBDateField;

dstWorkerID_JOB: TFIBIntegerField;

dstWorkerID_CATEGORY: TFIBIntegerField;

dstEditionTypeNull: TpFIBDataSet;

FIBIntegerField1: TFIBIntegerField;

FIBStringField1: TFIBStringField;

FIBIntegerField2: TFIBIntegerField;

FIBFloatField1: TFIBFloatField;

FIBIntegerField3: TFIBIntegerField;

FIBIntegerField4: TFIBIntegerField;

dsEditionTypeNull: TDataSource;

dstStreetNull: TpFIBDataSet;

FIBIntegerField5: TFIBIntegerField;

FIBIntegerField6: TFIBIntegerField;

dsStreetNull: TDataSource;

dstCityNull: TpFIBDataSet;

FIBIntegerField7: TFIBIntegerField;

FIBStringField2: TFIBStringField;

FIBIntegerField8: TFIBIntegerField;

dsCityNull: TDataSource;

dstJobNull: TpFIBDataSet;

FIBIntegerField9: TFIBIntegerField;

FIBStringField3: TFIBStringField;

FIBDateField1: TFIBDateField;

FIBIntegerField10: TFIBIntegerField;

FIBIntegerField11: TFIBIntegerField;

dsJobNull: TDataSource;

dstCategoryNull: TpFIBDataSet;

FIBIntegerField12: TFIBIntegerField;

FIBStringField4: TFIBStringField;

FIBDateField2: TFIBDateField;

FIBIntegerField13: TFIBIntegerField;

FIBIntegerField14: TFIBIntegerField;

dsCategoryNull: TDataSource;

dstAreaNAME: TStringField;

dstAreaNull: TpFIBDataSet;

FIBIntegerField15: TFIBIntegerField;

FIBIntegerField16: TFIBIntegerField;

FIBDateField3: TFIBDateField;

FIBIntegerField17: TFIBIntegerField;

FIBIntegerField18: TFIBIntegerField;

dsAreaNull: TDataSource;

dstArea1: TpFIBDataSet;

FIBIntegerField19: TFIBIntegerField;

FIBIntegerField20: TFIBIntegerField;

StringField1: TStringField;

dsArea1: TDataSource;

dstPublisher1: TpFIBDataSet;

FIBIntegerField21: TFIBIntegerField;

FIBStringField5: TFIBStringField;

FIBIntegerField22: TFIBIntegerField;

dsPublisher1: TDataSource;

dstPublisherNull: TpFIBDataSet;

FIBIntegerField23: TFIBIntegerField;

FIBStringField6: TFIBStringField;

FIBIntegerField24: TFIBIntegerField;

FIBFloatField2: TFIBFloatField;

FIBIntegerField25: TFIBIntegerField;

FIBIntegerField26: TFIBIntegerField;

dsPublisherNull: TDataSource;

dstPublisherCITY: TStringField;

dstWorker1: TpFIBDataSet;

FIBIntegerField27: TFIBIntegerField;

FIBStringField7: TFIBStringField;

FIBDateField4: TFIBDateField;

FIBIntegerField28: TFIBIntegerField;

FIBIntegerField29: TFIBIntegerField;

dsWorker1: TDataSource;

dstWorkerNull: TpFIBDataSet;

FIBIntegerField30: TFIBIntegerField;

FIBIntegerField31: TFIBIntegerField;

FIBDateField5: TFIBDateField;

FIBIntegerField32: TFIBIntegerField;

FIBIntegerField33: TFIBIntegerField;

dsWorkerNull: TDataSource;

dstWorkerJOB: TStringField;

dstWorkerCATEGORY: TStringField;

dstEdition1: TpFIBDataSet;

FIBIntegerField38: TFIBIntegerField;

FIBStringField9: TFIBStringField;

FIBIntegerField39: TFIBIntegerField;

FIBFloatField4: TFIBFloatField;

FIBIntegerField40: TFIBIntegerField;

FIBIntegerField41: TFIBIntegerField;

dsEdition1: TDataSource;

dstEditionNull1: TpFIBDataSet;

FIBIntegerField34: TFIBIntegerField;

FIBIntegerField35: TFIBIntegerField;

FIBDateField6: TFIBDateField;

FIBIntegerField36: TFIBIntegerField;

dsEditionNull1: TDataSource;

dstEditionNull2: TpFIBDataSet;

FIBIntegerField37: TFIBIntegerField;

FIBIntegerField42: TFIBIntegerField;

FIBDateField7: TFIBDateField;

FIBIntegerField43: TFIBIntegerField;

FIBFloatField3: TFIBFloatField;

FIBIntegerField44: TFIBIntegerField;

dsEditionNull2: TDataSource;

dstEditionEDITION_TYPE: TStringField;

dstEditionPUBLISHER: TStringField;

dstSubscriberNull: TpFIBDataSet;

FIBIntegerField45: TFIBIntegerField;

FIBIntegerField46: TFIBIntegerField;

FIBDateField8: TFIBDateField;

FIBIntegerField47: TFIBIntegerField;

FIBFloatField5: TFIBFloatField;

FIBIntegerField48: TFIBIntegerField;

dsSubscriberNull: TDataSource;

dstReceipt1: TpFIBDataSet;

FIBIntegerField49: TFIBIntegerField;

FIBIntegerField50: TFIBIntegerField;

FIBDateField9: TFIBDateField;

FIBIntegerField51: TFIBIntegerField;

dsReceipt1: TDataSource;

dstReceiptNAME: TStringField;

dstSubscription1: TpFIBDataSet;

FIBIntegerField52: TFIBIntegerField;

FIBIntegerField53: TFIBIntegerField;

FIBDateField10: TFIBDateField;

FIBIntegerField54: TFIBIntegerField;

FIBFloatField6: TFIBFloatField;

FIBIntegerField55: TFIBIntegerField;

dsSubscription1: TDataSource;

dstSubscriptionNull: TpFIBDataSet;

FIBIntegerField56: TFIBIntegerField;

FIBIntegerField57: TFIBIntegerField;

FIBDateField11: TFIBDateField;

FIBIntegerField58: TFIBIntegerField;

FIBIntegerField59: TFIBIntegerField;

dsSubscriptionNull: TDataSource;

dstSubscriptionSUBSCRIBER: TStringField;

dstSubscriptionEDITION: TStringField;

dstCost: TpFIBDataSet;

dsCost: TDataSource;

dstCostCOST: TFIBFloatField;

dstDelivery1: TpFIBDataSet;

FIBIntegerField60: TFIBIntegerField;

FIBIntegerField61: TFIBIntegerField;

FIBDateField12: TFIBDateField;

FIBIntegerField62: TFIBIntegerField;

FIBIntegerField63: TFIBIntegerField;

dsDelivery1: TDataSource;

dstDeliveryNAME: TStringField;

dstR1: TpFIBDataSet;

dsR1: TDataSource;

dstR1ID_SUBSCRIPTION: TFIBIntegerField;

dstR1ID_SUBSCRIBER: TFIBIntegerField;

dstR1NAME: TFIBStringField;

dstR1SDATE: TFIBDateField;

dstR1AMOUNT: TFIBIntegerField;

dstR1TOTAL: TFIBFloatField;

dstR1ID_EDITION: TFIBIntegerField;

dstR1NAME1: TFIBStringField;

dstR1COST: TFIBFloatField;

dstR1NAME2: TFIBStringField;

frxR2: TfrxReport;

frxDBdst2: TfrxDBDataset;

dstR2: TpFIBDataSet;

dsR2: TDataSource;

frxR4: TfrxReport;

frxDBdst4: TfrxDBDataset;

dstR4: TpFIBDataSet;

dsR4: TDataSource;

frxR3: TfrxReport;

frxDBdst3: TfrxDBDataset;

dstR3: TpFIBDataSet;

dsR3: TDataSource;

dstR2ID_RECEIPT: TFIBIntegerField;

dstR2ID_EDITION: TFIBIntegerField;

dstR2RDATE: TFIBDateField;

dstR2AMOUNT: TFIBIntegerField;

dstR2NAME: TFIBStringField;

dstR2NAME1: TFIBStringField;

dstR2NAME2: TFIBStringField;

dstR3ID_SUBSCRIBER: TFIBIntegerField;

dstR3NAME: TFIBStringField;

dstR3ADDRESS: TFIBStringField;

dstR3PHONE: TFIBStringField;

dstR4ID_DELIVERY: TFIBIntegerField;

dstR4ID_SUBSCRIPTION: TFIBIntegerField;

dstR4DDATE: TFIBDateField;

dstR4ID_AREA: TFIBIntegerField;

dstR4ID_WORKER: TFIBIntegerField;

dstR4NAME: TFIBStringField;

dstR4ID_SUBSCRIBER: TFIBIntegerField;

dstR4ID_EDITION: TFIBIntegerField;

dstR4NAME1: TFIBStringField;

dstR4NAME2: TFIBStringField;

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

{$R *.dfm}

end.

Текст модуля uArea.pas:

unit uArea;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls;

type

TfmArea = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

DBGrid1: TDBGrid;

DBLookupComboBox1: TDBLookupComboBox;

procedure DBGrid1CellClick(Column: TColumn);

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure buExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmArea: TfmArea;

implementation

{$R *.dfm}

procedure TfmArea.buDeleteClick(Sender: TObject);

begin

if DM.dstArea.RecordCount=0 then Exit;

DM.dstAreaNull.Close;

DM.dstAreaNull.ParamByName('X').AsInteger:=

DM.dstArea.FBN('ID_AREA').AsInteger;

DM.dstAreaNull.Open;

if DM.dstAreaNull.IsEmpty then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstArea.Delete;

if DM.dstArea.UpdateTransaction.InTransaction then

DM.dstArea.UpdateTransaction.Commit;

DM.dstArea.FullRefresh;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmArea.buEditClick(Sender: TObject);

begin

DM.dstArea.Edit;

DM.dstArea.FBN('ID_STREET').AsInteger:=

DM.dstArea1.FBN('ID_STREET').AsInteger;

DM.dstArea.Post;

if DM.dstArea.UpdateTransaction.InTransaction then

DM.dstArea.UpdateTransaction.Commit;

DM.dstArea.FullRefresh;

end;

procedure TfmArea.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmArea.buInsertClick(Sender: TObject);

begin

DM.dstArea.Insert;

DM.dstArea.FBN('ID_STREET').AsInteger:=

DM.dstArea1.FBN('ID_STREET').AsInteger;

DM.dstArea.Post;

if DM.dstArea.UpdateTransaction.InTransaction then

DM.dstArea.UpdateTransaction.Commit;

DM.dstArea.FullRefresh;

end;

procedure TfmArea.DBGrid1CellClick(Column: TColumn);

begin

DM.dstArea1.Edit;

DM.dstArea1.FBN('ID_STREET').AsInteger:=

DM.dstArea.FBN('ID_STREET').AsInteger;

end;

procedure TfmArea.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstArea.Close;

DM.dstArea1.Close;

DM.dstStreet.Close;

DM.dstAreaNull.Close;

Action:=caFree;

fmArea:=nil;

end;

procedure TfmArea.FormShow(Sender: TObject);

begin

DM.dstArea.Open;

DM.dstArea1.Open;

DM.dstStreet.Open;

end;

end.

Текст модуля uCategory.pas:

unit uCategory;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, StdCtrls, ExtCtrls;

type

TfmCategory = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

Edit1: TEdit;

DBGrid1: TDBGrid;

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

procedure DBGrid1CellClick(Column: TColumn);

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure buExitClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmCategory: TfmCategory;

implementation

{$R *.dfm}

procedure TfmCategory.buDeleteClick(Sender: TObject);

begin

if DM.dstCategory.RecordCount=0 then Exit;

DM.dstCategoryNull.Close;

DM.dstCategoryNull.ParamByName('X').AsInteger:=

DM.dstCategory.FBN('ID_CATEGORY').AsInteger;

DM.dstCategoryNull.Open;

if DM.dstCategoryNull.IsEmpty then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstCategory.Delete;

if DM.dstCategory.UpdateTransaction.InTransaction then

DM.dstCategory.UpdateTransaction.Commit;

DM.dstCategory.FullRefresh;

Edit1.Clear;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmCategory.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstCategory.Edit;

DM.dstCategory.FBN('NAME').AsString:=Edit1.Text;

DM.dstCategory.Post;

if DM.dstCategory.UpdateTransaction.InTransaction then

DM.dstCategory.UpdateTransaction.Commit;

DM.dstCategory.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmCategory.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmCategory.buInsertClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstCategory.Insert;

DM.dstCategory.FBN('NAME').AsString:=Edit1.Text;

DM.dstCategory.Post;

if DM.dstCategory.UpdateTransaction.InTransaction then

DM.dstCategory.UpdateTransaction.Commit;

DM.dstCategory.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmCategory.DBGrid1CellClick(Column: TColumn);

begin

Edit1.Text:=DM.dstCategory.FBN('NAME').AsString;

end;

procedure TfmCategory.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', #8]) then Key:=#0;

end;

procedure TfmCategory.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstCategory.Close;

DM.dstCategoryNull.Close;

Action:=caFree;

fmCategory:=nil;

end;

procedure TfmCategory.FormShow(Sender: TObject);

begin

DM.dstCategory.Open;

end;

end.

Текст модуля uCity.pas:

unit uCategory;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, StdCtrls, ExtCtrls;

type

TfmCategory = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

Edit1: TEdit;

DBGrid1: TDBGrid;

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

procedure DBGrid1CellClick(Column: TColumn);

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure buExitClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmCategory: TfmCategory;

implementation

{$R *.dfm}

procedure TfmCategory.buDeleteClick(Sender: TObject);

begin

if DM.dstCategory.RecordCount=0 then Exit;

DM.dstCategoryNull.Close;

DM.dstCategoryNull.ParamByName('X').AsInteger:=

DM.dstCategory.FBN('ID_CATEGORY').AsInteger;

DM.dstCategoryNull.Open;

if DM.dstCategoryNull.IsEmpty then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstCategory.Delete;

if DM.dstCategory.UpdateTransaction.InTransaction then

DM.dstCategory.UpdateTransaction.Commit;

DM.dstCategory.FullRefresh;

Edit1.Clear;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmCategory.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstCategory.Edit;

DM.dstCategory.FBN('NAME').AsString:=Edit1.Text;

DM.dstCategory.Post;

if DM.dstCategory.UpdateTransaction.InTransaction then

DM.dstCategory.UpdateTransaction.Commit;

DM.dstCategory.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmCategory.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmCategory.buInsertClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstCategory.Insert;

DM.dstCategory.FBN('NAME').AsString:=Edit1.Text;

DM.dstCategory.Post;

if DM.dstCategory.UpdateTransaction.InTransaction then

DM.dstCategory.UpdateTransaction.Commit;

DM.dstCategory.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmCategory.DBGrid1CellClick(Column: TColumn);

begin

Edit1.Text:=DM.dstCategory.FBN('NAME').AsString;

end;

procedure TfmCategory.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', #8]) then Key:=#0;

end;

procedure TfmCategory.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstCategory.Close;

DM.dstCategoryNull.Close;

Action:=caFree;

fmCategory:=nil;

end;

procedure TfmCategory.FormShow(Sender: TObject);

begin

DM.dstCategory.Open;

end;

end.

Текст модуля uDelivery.pas:

unit uDelivery;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, ComCtrls, StdCtrls, DBCtrls, ExtCtrls;

type

TfmDelivery = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

Label4: TLabel;

Label5: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

DBLookupComboBox2: TDBLookupComboBox;

dtp1: TDateTimePicker;

DBGrid1: TDBGrid;

Panel5: TPanel;

Panel6: TPanel;

DBGrid2: TDBGrid;

buPrint: TButton;

procedure buPrintClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure DBGrid2CellClick(Column: TColumn);

procedure buExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmDelivery: TfmDelivery;

implementation

{$R *.dfm}

procedure TfmDelivery.buDeleteClick(Sender: TObject);

begin

if DM.dstDelivery.RecordCount=0 then Exit;

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstDelivery.Delete;

if DM.dstDelivery.UpdateTransaction.InTransaction then

DM.dstDelivery.UpdateTransaction.Commit;

DM.dstDelivery.FullRefresh;

end;

procedure TfmDelivery.buEditClick(Sender: TObject);

begin

DM.dstDelivery.Edit;

DM.dstDelivery.FBN('DDATE').AsDateTime:=dtp1.DateTime;

DM.dstDelivery.FBN('ID_AREA').AsInteger:=

DM.dstDelivery1.FBN('ID_AREA').AsInteger;

DM.dstDelivery.FBN('ID_WORKER').AsInteger:=

DM.dstDelivery1.FBN('ID_WORKER').AsInteger;

DM.dstDelivery.FBN('ID_SUBSCRIPTION').AsInteger:=

DM.dstSubscription.FBN('ID_SUBSCRIPTION').AsInteger;

DM.dstDelivery.Post;

if DM.dstDelivery.UpdateTransaction.InTransaction then

DM.dstDelivery.UpdateTransaction.Commit;

DM.dstDelivery.FullRefresh;

end;

procedure TfmDelivery.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmDelivery.buInsertClick(Sender: TObject);

begin

DM.dstDelivery.Insert;

DM.dstDelivery.FBN('DDATE').AsDateTime:=dtp1.DateTime;

DM.dstDelivery.FBN('ID_AREA').AsInteger:=

DM.dstDelivery1.FBN('ID_AREA').AsInteger;

DM.dstDelivery.FBN('ID_WORKER').AsInteger:=

DM.dstDelivery1.FBN('ID_WORKER').AsInteger;

DM.dstDelivery.FBN('ID_SUBSCRIPTION').AsInteger:=

DM.dstSubscription.FBN('ID_SUBSCRIPTION').AsInteger;

DM.dstDelivery.Post;

if DM.dstDelivery.UpdateTransaction.InTransaction then

DM.dstDelivery.UpdateTransaction.Commit;

DM.dstDelivery.FullRefresh;

end;

procedure TfmDelivery.buPrintClick(Sender: TObject);

begin

DM.dstR4.Close;

DM.dstR4.ParamByName('X').AsInteger:=

DM.dstDelivery.FBN('ID_DELIVERY').AsInteger;

DM.dstR4.Open;

DM.frxR4.ShowReport();

end;

procedure TfmDelivery.DBGrid1CellClick(Column: TColumn);

begin

DM.dstDelivery1.Edit;

DM.dstDelivery1.FBN('ID_AREA').AsInteger:=

DM.dstDelivery.FBN('ID_AREA').AsInteger;

DM.dstDelivery1.FBN('ID_WORKER').AsInteger:=

DM.dstDelivery.FBN('ID_WORKER').AsInteger;

dtp1.DateTime:=DM.dstDelivery.FBN('DDATE').AsDateTime;

end;

procedure TfmDelivery.DBGrid2CellClick(Column: TColumn);

begin

DM.dstDelivery.Close;

DM.dstDelivery.ParamByName('X').AsInteger:=

DM.dstSubscription.FBN('ID_SUBSCRIPTION').AsInteger;

DM.dstDelivery.Open;

end;

procedure TfmDelivery.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstDelivery.Close;

DM.dstDelivery1.Close;

DM.dstWorker.Close;

DM.dstArea.Close;

DM.dstSubscription.Close;

DM.dstR4.Close;

Action:=caFree;

fmDelivery:=nil;

end;

procedure TfmDelivery.FormShow(Sender: TObject);

begin

DM.dstDelivery1.Open;

DM.dstWorker.Open;

DM.dstArea.Open;

DM.dstSubscription.Open;

end;

end.

Текст модуля uEdition.pas:

unit uEdition;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls;

type

TfmEdition = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

Edit1: TEdit;

DBLookupComboBox2: TDBLookupComboBox;

DBGrid1: TDBGrid;

Label5: TLabel;

Edit2: TEdit;

Edit3: TEdit;

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

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

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

procedure DBGrid1CellClick(Column: TColumn);

procedure buExitClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmEdition: TfmEdition;

implementation

{$R *.dfm}

procedure TfmEdition.buDeleteClick(Sender: TObject);

begin

if DM.dstEdition.RecordCount=0 then Exit;

DM.dstEditionNull1.Close;

DM.dstEditionNull1.ParamByName('X').AsInteger:=

DM.dstEdition.FBN('ID_EDITION').AsInteger;

DM.dstEditionNull1.Open;

DM.dstEditionNull2.Close;

DM.dstEditionNull2.ParamByName('X').AsInteger:=

DM.dstEdition.FBN('ID_EDITION').AsInteger;

DM.dstEditionNull2.Open;

if (DM.dstEditionNull1.IsEmpty) and (DM.dstEditionNull2.IsEmpty) then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstEdition.Delete;

if DM.dstEdition.UpdateTransaction.InTransaction then

DM.dstEdition.UpdateTransaction.Commit;

DM.dstEdition.FullRefresh;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmEdition.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstEdition.Edit;

DM.dstEdition.FBN('NAME').AsString:=Edit1.Text;

DM.dstEdition.FBN('COST').AsFloat:=StrToFloat(Edit2.Text);

DM.dstEdition.FBN('PERIODICITY').AsInteger:=StrToInt(Edit3.Text);

DM.dstEdition.FBN('ID_PUBLISHER').AsInteger:=

DM.dstEdition1.FBN('ID_PUBLISHER').AsInteger;

DM.dstEdition.FBN('ID_EDITION_TYPE').AsInteger:=

DM.dstEdition1.FBN('ID_EDITION_TYPE').AsInteger;

DM.dstEdition.Post;

if DM.dstEdition.UpdateTransaction.InTransaction then

DM.dstEdition.UpdateTransaction.Commit;

DM.dstEdition.FullRefresh;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

end;

end;

procedure TfmEdition.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmEdition.buInsertClick(Sender: TObject);

begin

if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstEdition.Insert;

DM.dstEdition.FBN('NAME').AsString:=Edit1.Text;

DM.dstEdition.FBN('COST').AsFloat:=StrToFloat(Edit2.Text);

DM.dstEdition.FBN('PERIODICITY').AsInteger:=StrToInt(Edit3.Text);

DM.dstEdition.FBN('ID_PUBLISHER').AsInteger:=

DM.dstEdition1.FBN('ID_PUBLISHER').AsInteger;

DM.dstEdition.FBN('ID_EDITION_TYPE').AsInteger:=

DM.dstEdition1.FBN('ID_EDITION_TYPE').AsInteger;

DM.dstEdition.Post;

if DM.dstEdition.UpdateTransaction.InTransaction then

DM.dstEdition.UpdateTransaction.Commit;

DM.dstEdition.FullRefresh;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

end;

end;

procedure TfmEdition.DBGrid1CellClick(Column: TColumn);

begin

DM.dstEdition1.Edit;

DM.dstEdition1.FBN('ID_PUBLISHER').AsInteger:=

DM.dstEdition.FBN('ID_PUBLISHER').AsInteger;

DM.dstEdition1.FBN('ID_EDITION_TYPE').AsInteger:=

DM.dstEdition.FBN('ID_EDITION_TYPE').AsInteger;

Edit1.Text:=DM.dstEdition.FBN('NAME').AsString;

Edit2.Text:=DM.dstEdition.FBN('COST').AsString;

Edit3.Text:=DM.dstEdition.FBN('PERIODICITY').AsString;

end;

procedure TfmEdition.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', ',', #8]) then Key:=#0;

end;

procedure TfmEdition.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', #8]) then Key:=#0;

end;

procedure TfmEdition.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstEdition.Close;

DM.dstEdition1.Close;

DM.dstEditionType.Close;

DM.dstPublisher.Close;

DM.dstEditionNull1.Close;

DM.dstEditionNull2.Close;

Action:=caFree;

fmEdition:=nil;

end;

procedure TfmEdition.FormShow(Sender: TObject);

begin

DM.dstEdition.Open;

DM.dstEdition1.Open;

DM.dstEditionType.Open;

DM.dstPublisher.Open;

end;

end.

Текст модуля uEditionType.pas:

unit uEditionType;

interface

uses

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

Dialogs, ExtCtrls, DataM, StdCtrls, Grids, DBGrids;

type

TfmEditionType = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

DBGrid1: TDBGrid;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Edit1: TEdit;

Label1: TLabel;

procedure buDeleteClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure DBGrid1CellClick(Column: TColumn);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure buExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmEditionType: TfmEditionType;

implementation

{$R *.dfm}

procedure TfmEditionType.buDeleteClick(Sender: TObject);

begin

if DM.dstEditionType.RecordCount=0 then Exit;

DM.dstEditionTypeNull.Close;

DM.dstEditionTypeNull.ParamByName('X').AsInteger:=

DM.dstEditionType.FBN('ID_EDITION_TYPE').AsInteger;

DM.dstEditionTypeNull.Open;

if DM.dstEditionTypeNull.IsEmpty then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstEditionType.Delete;

if DM.dstEditionType.UpdateTransaction.InTransaction then

DM.dstEditionType.UpdateTransaction.Commit;

DM.dstEditionType.FullRefresh;

Edit1.Clear;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmEditionType.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstEditionType.Edit;

DM.dstEditionType.FBN('NAME').AsString:=Edit1.Text;

DM.dstEditionType.Post;

if DM.dstEditionType.UpdateTransaction.InTransaction then

DM.dstEditionType.UpdateTransaction.Commit;

DM.dstEditionType.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmEditionType.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmEditionType.buInsertClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstEditionType.Insert;

DM.dstEditionType.FBN('NAME').AsString:=Edit1.Text;

DM.dstEditionType.Post;

if DM.dstEditionType.UpdateTransaction.InTransaction then

DM.dstEditionType.UpdateTransaction.Commit;

DM.dstEditionType.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmEditionType.DBGrid1CellClick(Column: TColumn);

begin

Edit1.Text:=DM.dstEditionType.FBN('NAME').AsString;

end;

procedure TfmEditionType.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstEditionType.Close;

DM.dstEditionTypeNull.Close;

Action:=caFree;

fmEditionType:=nil;

end;

procedure TfmEditionType.FormShow(Sender: TObject);

begin

DM.dstEditionType.Open;

end;

end.

Текст модуля uJob.pas:

unit uJob;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, StdCtrls, ExtCtrls;

type

TfmJob = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

Edit1: TEdit;

DBGrid1: TDBGrid;

procedure DBGrid1CellClick(Column: TColumn);

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure buExitClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmJob: TfmJob;

implementation

{$R *.dfm}

procedure TfmJob.buDeleteClick(Sender: TObject);

begin

if DM.dstJob.RecordCount=0 then Exit;

DM.dstJobNull.Close;

DM.dstJobNull.ParamByName('X').AsInteger:=

DM.dstJob.FBN('ID_JOB').AsInteger;

DM.dstJobNull.Open;

if DM.dstJobNull.IsEmpty then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstJob.Delete;

if DM.dstJob.UpdateTransaction.InTransaction then

DM.dstJob.UpdateTransaction.Commit;

DM.dstJob.FullRefresh;

Edit1.Clear;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmJob.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstJob.Edit;

DM.dstJob.FBN('NAME').AsString:=Edit1.Text;

DM.dstJob.Post;

if DM.dstJob.UpdateTransaction.InTransaction then

DM.dstJob.UpdateTransaction.Commit;

DM.dstJob.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmJob.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmJob.buInsertClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstJob.Insert;

DM.dstJob.FBN('NAME').AsString:=Edit1.Text;

DM.dstJob.Post;

if DM.dstJob.UpdateTransaction.InTransaction then

DM.dstJob.UpdateTransaction.Commit;

DM.dstJob.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmJob.DBGrid1CellClick(Column: TColumn);

begin

Edit1.Text:=DM.dstJob.FBN('NAME').AsString;

end;

procedure TfmJob.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstJob.Close;

DM.dstJobNull.Close;

Action:=caFree;

fmJob:=nil;

end;

procedure TfmJob.FormShow(Sender: TObject);

begin

DM.dstJob.Open;

end;

end.

Текст модуля uPublisher.pas:

unit uPublisher;

interface

uses

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

Dialogs, DataM, StdCtrls, Grids, DBGrids, DBCtrls, ExtCtrls;

type

TfmPublisher = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label1: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

DBGrid1: TDBGrid;

Label2: TLabel;

Edit1: TEdit;

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure buExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmPublisher: TfmPublisher;

implementation

{$R *.dfm}

procedure TfmPublisher.buDeleteClick(Sender: TObject);

begin

if DM.dstPublisher.RecordCount=0 then Exit;

DM.dstPublisherNull.Close;

DM.dstPublisherNull.ParamByName('X').AsInteger:=

DM.dstPublisher.FBN('ID_PUBLISHER').AsInteger;

DM.dstPublisherNull.Open;

if DM.dstPublisherNull.IsEmpty then begin

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstPublisher.Delete;

if DM.dstPublisher.UpdateTransaction.InTransaction then

DM.dstPublisher.UpdateTransaction.Commit;

DM.dstPublisher.FullRefresh;

end

else ShowMessage('Необходимо сперва удалить зависимые записи.');

end;

procedure TfmPublisher.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstPublisher.Edit;

DM.dstPublisher.FBN('NAME').AsString:=Edit1.Text;

DM.dstPublisher.FBN('ID_CITY').AsInteger:=

DM.dstPublisher1.FBN('ID_CITY').AsInteger;

DM.dstPublisher.Post;

if DM.dstPublisher.UpdateTransaction.InTransaction then

DM.dstPublisher.UpdateTransaction.Commit;

DM.dstPublisher.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmPublisher.buExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmPublisher.buInsertClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstPublisher.Insert;

DM.dstPublisher.FBN('NAME').AsString:=Edit1.Text;

DM.dstPublisher.FBN('ID_CITY').AsInteger:=

DM.dstPublisher1.FBN('ID_CITY').AsInteger;

DM.dstPublisher.Post;

if DM.dstPublisher.UpdateTransaction.InTransaction then

DM.dstPublisher.UpdateTransaction.Commit;

DM.dstPublisher.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmPublisher.DBGrid1CellClick(Column: TColumn);

begin

DM.dstPublisher1.Edit;

DM.dstPublisher1.FBN('ID_CITY').AsInteger:=

DM.dstPublisher.FBN('ID_CITY').AsInteger;

Edit1.Text:=DM.dstPublisher.FBN('NAME').AsString;

end;

procedure TfmPublisher.FormClose(Sender: TObject; var Action: TCloseAction);

begin

DM.dstPublisher.Close;

DM.dstPublisher1.Close;

DM.dstCity.Close;

DM.dstPublisherNull.Close;

Action:=caFree;

fmPublisher:=nil;

end;

procedure TfmPublisher.FormShow(Sender: TObject);

begin

DM.dstPublisher.Open;

DM.dstPublisher1.Open;

DM.dstCity.Open;

end;

end.

Текст модуля uReceipt.pas:

unit uReceipt;

interface

uses

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

Dialogs, DataM, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls, ComCtrls;

type

TfmReceipt = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

buEdit: TButton;

buInsert: TButton;

buDelete: TButton;

buExit: TButton;

Panel4: TPanel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

Edit1: TEdit;

DBGrid1: TDBGrid;

dtp1: TDateTimePicker;

procedure buDeleteClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buInsertClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

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

procedure DBGrid1CellClick(Column: TColumn);

procedure buExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmReceipt: TfmReceipt;

implementation

{$R *.dfm}

procedure TfmReceipt.buDeleteClick(Sender: TObject);

begin

if DM.dstReceipt.RecordCount=0 then Exit;

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then DM.dstReceipt.Delete;

if DM.dstReceipt.UpdateTransaction.InTransaction then

DM.dstReceipt.UpdateTransaction.Commit;

DM.dstReceipt.FullRefresh;

end;

procedure TfmReceipt.buEditClick(Sender: TObject);

begin

if (Edit1.Text='') then

ShowMessage('Заполните все обязательны поля')

else begin

DM.dstReceipt.Edit;

DM.dstReceipt.FBN('AMOUNT').AsInteger:=StrToInt(Edit1.Text);

DM.dstReceipt.FBN('RDATE').AsDateTime:=dtp1.DateTime;

DM.dstReceipt.FBN('ID_EDITION').AsInteger:=

DM.dstReceipt1.FBN('ID_EDITION').AsInteger;

DM.dstReceipt.Post;

if DM.dstReceipt.UpdateTransaction.InTransaction then

DM.dstReceipt.UpdateTransaction.Commit;

DM.dstReceipt.FullRefresh;

Edit1.Clear;

end;

end;

procedure TfmReceipt.buExitClick(Sender: TObject);


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.