Розробка гнучкої системи управління інформаційними потоками магазину комп’ютерної техніки

Різновиди архітектур баз даних. Архітектура "файл-сервер" і локальні бази даних. Обґрунтування вибору архітектури стосовно проектованої системи. Основні концепції мови SQL. Структура запитів до окремих таблиць. Інтерфейс користувача проектованої системи.

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

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

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

База даних SalesRecord представлена виді 6 таблиць й 7 подань.

Таблиці бази даних мають наступну структуру:

Таблиця 4.1

Структура полів таблиці «Типи компонентів КТ» - dbo.TypeComponent

Ім'я поля

Тип поля

Опис

IDTypeComponent

int

(Autoincrement)

Код типу компонента КТ

(ключове поле)

TypeComponent

char[30]

Тип компонента КТ

Таблиця 4.2

Структура полів таблиці «Виробники компонентів КТ» - dbo.Mainframer

Ім'я поля

Тип поля

Опис

IDMainframer

int

(Autoincrement)

Код виробника компонента КТ

(ключове поле)

Mainframer

char[20]

Виробник компонента КТ

Таблиця 4.3

Структура полів таблиці «Компоненти КТ» - dbo.Component

Ім'я поля

Тип поля

Опис

IDComponent

int

(Autoincrement)

Код компонента КТ

(ключове поле)

TypeComponent

int

Код типу компонента КТ

Mainframer

int

Код виробника компонента КТ

Model

char[200]

Найменування компонента КТ

Characteristic

char[200]

Характеристики компонента КТ

Image

image

Зображення компонента КТ

NoSupply

bit

Припинити поставки

Minimal

int

Мінімальна партія на складі компонента КТ

Таблиця 4.4

Структура полів таблиці «Постачальники компонентів КТ» - dbo. Supplier

Ім'я поля

Тип поля

Опис

IDSupplier

int

(Autoincrement)

Код постачальника компонентів КТ(ключове поле)

Supplier

char[30]

Найменування фірми постачальника

Crucial

char[50]

П. І. Б. відповідального за поставки

Post

char[30]

Посада відповідального за поставки

Address

char[50]

Адреса фірми постачальника

[Index]

int

Індекс

Land

char[20]

Країна

Region

char[30]

Регіон

City

char[30]

Місто

Phone

int

Телефон

Fax

int

Факс

Email

char[50]

Email

Таблиця 4.5

Структура полів таблиці «Компоненти КТ, що отримані на склад» - dbo.Warehouse

Ім'я поля

Тип поля

Опис

IDWarehouse

int

(Autoincrement)

Код одержання компонентів КТ на склад

(ключове поле)

Component

int

Код компонента КТ

Supplier

int

Код постачальника компонента КТ

Delivery

datetime

Дата одержання компонента КТ на склад

Counts

int

Кількість отриманих компонентів КТ

Val

money

Ціна по який були придбані компоненти КТ

Markup

int

Відсоток націнки на компоненти КТ при продажу

Таблиця 4.6

Структура полів таблиці «Компоненти КТ продані зі складу» - dbo.Offtake

Ім'я поля

Тип поля

Опис

IDOfftake

int

(Autoincrement)

Код продажів компонентів КТ зі складу

(ключове поле)

Warehouse

int

Код одержання компонентів КТ на склад

DataOfftake

datetime

Дата продажу компонентів КТ

Counts

int

Кількість проданих компонентів КТ

Структурна схема взаємозв'язку таблиць бази даних SalesRecord представлена на рисунку:

Рис. 4.2 Структурна схема взаємозв'язку таблиць бази даних

Подання бази даних мають наступну структуру:

Структура подання «Всі поставки асортиментів комп'ютерної техніки» - dbo.FindCount

Рис. 4.3 Структурна схема взаємозв'язку таблиць подання dbo.FindCount

Нижче наведений лістінг запиту подання dbo.FindCount

SELECT

dbo.Component.IDComponent,

dbo.TypeComponent.TypeComponent,

dbo.Mainframer.Mainframer,

dbo.Component.Model,

dbo.Component.Characteristic,

SUM(dbo.Warehouse.Counts) AS FindCount,

dbo.Component.Minimal,

dbo.Component.NoSupply,

dbo.Mainframer.IDMainframer

FROM

dbo.Warehouse RIGHT OUTER JOIN

dbo.Component INNER JOIN

dbo.TypeComponent ON dbo.Component.TypeComponent = dbo.TypeComponent.IDTypeComponent INNER JOIN

dbo.Mainframer ON dbo.Component.Mainframer = dbo.Mainframer.IDMainframer ON

dbo.Warehouse.Component = dbo.Component.IDComponent

GROUP BY

dbo.Component.IDComponent, dbo.TypeComponent.TypeComponent, dbo.Mainframer.Mainframer, dbo.Component.Model,

dbo.Component.Characteristic, dbo.Component.Minimal, dbo.Component.NoSupply, dbo.Mainframer.IDMainframer

Таблиця 4.7

Структура полів подання dbo.FindCount

Ім'я поля

Тип поля

Опис

IDComponent

int

Код компонента КТ

IDMainframer

int

Код виробника компонента КТ

TypeComponent

char[30]

Тип компонента КТ

Mainframer

char[20]

Виробник компонента КТ

Model

char[200]

Найменування компонента КТ

Characteristic

char[200]

Характеристики компонента КТ

FindCount

int

Кількість поставлених асортиментів КТ

Minimal

bit

Припинити поставки

NoSupply

int

Мінімальна партія на складі компонента КТ

Структура подання «Всі продажі асортиментів комп'ютерної техніки» - dbo.SellCount

Рис. 4.4 Структурна схема взаємозв'язку таблиць подання dbo.SellCount

Нижче наведений лістінг запиту подання dbo.SellCount

SELECT

dbo.Warehouse.Component,

SUM(dbo.Offtake.Counts) AS SellCount

FROM

dbo.Offtake RIGHT OUTER JOIN

dbo.Warehouse ON dbo.Offtake.Warehouse = dbo.Warehouse.IDWarehouse

GROUP BY dbo.Warehouse.Component

Таблиця 4.8

Структура полів подання dbo.SellCount

Ім'я поля

Тип поля

Опис

Component

int

Код компонента КТ

SellCount

int

Кількість проданих асортиментів КТ

Структура подання «Всі поставки й продажі асортиментів комп'ютерної техніки» - dbo. OrderWarehouse

Рис. 4.5 Структурна схема взаємозв'язку таблиць подання dbo.OrderWarehouse

Нижче наведений лістінг запиту подання dbo.OrderWarehouse

SELECT

dbo.FindCount.IDComponent,

dbo.FindCount.TypeComponent,

dbo.FindCount.Mainframer,

dbo.FindCount.Model,

dbo.FindCount.Characteristic,

dbo.FindCount.FindCount,

dbo.SellCount.SellCount,

dbo.FindCount.Minimal,

dbo.FindCount.NoSupply

FROM

dbo.FindCount LEFT OUTER JOIN

dbo.SellCount ON dbo.FindCount.IDComponent = dbo.SellCount.Component

Таблиця 4.9

Структура полів подання dbo.OrderWarehouse

Ім'я поля

Тип поля

Опис

IDComponent

int

Код компонента КТ

TypeComponent

char[30]

Тип компонента КТ

Mainframer

char[20]

Виробник компонента КТ

Model

char[200]

Найменування компонента КТ

Characteristic

char[200]

Характеристики компонента КТ

FindCount

int

Кількість поставлених асортиментів КТ

SellCount

int

Кількість проданих асортиментів КТ

Minimal

bit

Припинити поставки

NoSupply

int

Мінімальна партія на складі компонента КТ

Структура подання «Всі поставки й продажі асортиментів комп'ютерної техніки зі складу» - dbo.RemWarehouse

Рис. 4.6 Структурна схема взаємозв'язку таблиць подання dbo.RemWarehouse

Нижче наведений лістінг запиту подання dbo.RemWarehouse

SELECT

dbo.Component.IDComponent,

dbo.Warehouse.IDWarehouse,

dbo.Supplier.IDSupplier,

dbo.TypeComponent.TypeComponent,

dbo.Mainframer.Mainframer,

dbo.Component.Model,

dbo.Component.Characteristic,

dbo.Warehouse.Delivery,

dbo.Warehouse.Counts AS FindCouns,

dbo.Warehouse.Val,

dbo.Warehouse.Markup,

SUM(dbo.Offtake.Counts) AS SellCount,

dbo.Supplier.Supplier

FROM

dbo.Supplier INNER JOIN

dbo.Warehouse ON dbo.Supplier.IDSupplier = dbo.Warehouse.Supplier INNER JOIN

dbo.Component ON dbo.Warehouse.Component = dbo.Component.IDComponent INNER JOIN

dbo.TypeComponent ON dbo.Component.TypeComponent = dbo.TypeComponent.IDTypeComponent INNER JOIN

dbo.Mainframer ON dbo.Component.Mainframer = dbo.Mainframer.IDMainframer LEFT OUTER JOIN

dbo.Offtake ON dbo.Warehouse.IDWarehouse = dbo.Offtake.Warehouse

GROUP BY

dbo.Offtake.Warehouse,

dbo.Supplier.Supplier,

dbo.TypeComponent.TypeComponent,

dbo.Mainframer.Mainframer,

dbo.Component.IDComponent,

dbo.Component.Model,

dbo.Component.Characteristic,

dbo.Warehouse.Delivery,

dbo.Warehouse.Counts,

dbo.Warehouse.Val,

dbo.Warehouse.Markup,

dbo.Warehouse.IDWarehouse,

dbo.Supplier.IDSupplier

ORDER BY

dbo.Component.IDComponent

Таблиця 4.10

Структура полів подання dbo.RemWarehouse

Ім'я поля

Тип поля

Опис

IDComponent

int

Код компонента КТ

IDWarehouse

int

Код одержання компонентів КТ на склад

IDSupplier

int

Код постачальника компонентів КТ

TypeComponent

char[30]

Тип компонента КТ

Mainframer

char[20]

Виробник компонента КТ

Model

char[200]

Найменування компонента КТ

Characteristic

char[200]

Характеристики компонента КТ

Delivery

datetime

Дата одержання компонента КТ на склад

FindCount

int

Кількість поставлених асортиментів КТ на склад

Val

money

Ціна по який були придбані компоненти КТ

Markup

int

Відсоток націнки на компоненти КТ для продажу

SellCount

int

Кількість проданих асортиментів КТ зі складу

Supplier

char[30]

Найменування фірми постачальника

Структура подання «Всі поставки асортиментів комп'ютерної техніки на склад» - dbo.FindCountWarehouse

Рис. 4.7 Структурна схема взаємозв'язку таблиць подання dbo.FindCountWarehouse

Нижче наведений лістінг запиту подання dbo.FindCountWarehouse

SELECT

dbo.Component.IDComponent,

dbo.Warehouse.IDWarehouse,

dbo.TypeComponent.TypeComponent,

dbo.Mainframer.Mainframer,

dbo.Component.Model,

dbo.Component.Characteristic,

SUM(dbo.Warehouse.Counts) AS FindCount,

dbo.Component.Minimal,

dbo.Component.NoSupply,

dbo.Warehouse.Val,

dbo.Warehouse.Markup,

dbo.Mainframer.IDMainframer

FROM

dbo.Warehouse RIGHT OUTER JOIN

dbo.Component INNER JOIN

dbo.TypeComponent ON dbo.Component.TypeComponent = dbo.TypeComponent.IDTypeComponent INNER JOIN

dbo.Mainframer ON dbo.Component.Mainframer = dbo.Mainframer.IDMainframer ON

dbo.Warehouse.Component = dbo.Component.IDComponent

GROUP BY

dbo.Component.IDComponent,

dbo.TypeComponent.TypeComponent,

dbo.Mainframer.Mainframer,

dbo.Component.Model,

dbo.Component.Characteristic,

dbo.Component.Minimal,

dbo.Component.NoSupply,

dbo.Warehouse.Val,

dbo.Warehouse.Markup,

dbo.Warehouse.IDWarehouse,

dbo.Mainframer.IDMainframer

Таблиця 4.11

Структура полів подання dbo.FindCountWarehouse

Ім'я поля

Тип поля

Опис

IDComponent

int

Код компонента КТ

IDMainframer

int

Код виробника компонента КТ

IDWarehouse

int

Код одержання компонентів КТ на склад

TypeComponent

char[30]

Тип компонента КТ

Mainframer

char[20]

Виробник компонента КТ

Model

char[200]

Найменування компонента КТ

Characteristic

char[200]

Характеристики компонента КТ

FindCount

int

Кількість поставлених асортиментів КТ на склад

Minimal

bit

Припинити поставки

NoSupply

int

Мінімальна партія на складі компонента КТ

Val

money

Ціна по який були придбані компоненти КТ

Markup

int

Відсоток націнки на компоненти КТ для продажу

Структура подання «Всі продажі асортиментів комп'ютерної техніки зі складу» - dbo.SellCountWarehouse

Рис. 4.8 Структурна схема взаємозв'язку таблиць подання dbo. SellCountWarehouse

Нижче наведений лістінг запиту подання dbo.SellCountWarehouse

SELECT

Warehouse,

SUM(Counts) AS SellCount

FROM

dbo.Offtake

GROUP BY

Warehouse

Таблиця 4.12

Структура полів подання dbo.SellCountWarehouse

Ім'я поля

Тип поля

Опис

Warehouse

int

Код одержання компонентів КТ на склад

SellCount

int

Кількість проданих асортиментів КТ зі складу

Структура подання «Асортименти комп'ютерної техніки» -

dbo.Report_Component

Рис. 4.9 Структурна схема взаємозв'язку таблиць подання dbo.Report_Component

Нижче наведений лістінг запиту подання dbo.Report_Component

SELECT

dbo.Component.IDComponent,

dbo.TypeComponent.IDTypeComponent,

dbo.Mainframer.IDMainframer,

dbo.TypeComponent.TypeComponent,

dbo.Mainframer.Mainframer,

dbo.Component.Model,

dbo.Component.Characteristic,

dbo.Component.Image,

dbo.Component.NoSupply,

dbo.Component.Minimal

FROM

dbo.TypeComponent INNER JOIN

dbo.Component ON dbo.TypeComponent.IDTypeComponent = dbo.Component.TypeComponent INNER JOIN

dbo.Mainframer ON dbo.Component.Mainframer = dbo.Mainframer.IDMainframer

ORDER BY

dbo.TypeComponent.IDTypeComponent,

dbo.Mainframer.IDMainframer

Таблиця 4.13

Структура полів подання dbo.Report_Component

Ім'я поля

Тип поля

Опис

IDComponent

int

Код компонента КТ

IDTypeComponent

int

Код типу компонента КТ

IDMainframer

int

Код виробника компонента КТ

TypeComponent

char[30]

Тип компонента КТ

Mainframer

char[20]

Виробник компонента КТ

Model

char[200]

Найменування компонента КТ

Characteristic

char[200]

Характеристики компонента КТ

Image

image

Зображення компонента КТ

NoSupply

bit

Припинити поставки

Minimal

int

Мінімальна партія на складі компонента КТ

4.4 Інтерфейс користувача проектованої системи

Інтерфейс користувача представленої системи, максимально адаптований для користувача. Він інтуїтивно зрозумілий і має всі необхідні коментарі й підказки. Розгалужена довідкова система подає вичерпну інформацію про основні функціональні можливості й можливі варіанти експлуатації системи.

Інтерфейс користувача має головне меню, панелі інструментів із кнопками, бічну панель вибору подань інформації.

Кожний з підпунктів забезпечений іконкою й комбінацією гарячих клавіш, що дозволяє прикрасити інтерфейс, а також робить роботу користувача із системою більш продуктивною. Робота із системою починається з підключення до бази даних SalesRecord. Якщо при підключенні до бази даних відбулася помилка, система видасть вікно “Настроювання підключення до бази даних”.

Після зміни або заповнення потрібних полів, активується кнопка «Ok», нажавши її, відбувається підключення до бази даних й у випадку вдалого підключення, настроювання записуються до системного реєстру й наступного разу при запуску системи записані настроювання будуть зчитані з реєстру.

Після запуску системи користувачеві надається інформація із продажів комп'ютерної техніки у вигляді подань і звітних документів.

Для відображення інформації із продажів комп'ютерної техніки в системі передбачені наступні подання:

1. Асортименти комп'ютерної техніки;

2. Постачальники комп'ютерної техніки;

3. Всі поставки комп'ютерної техніки;

4. Всі продажі комп'ютерної техніки;

5. Замовити комп'ютерну техніку;

6. Продати комп'ютерну техніку.

Для перемикання між поданнями необхідно на бічній панелі вибору подання, нажати відповідну кнопку подання.

Нижче описані всі подання системи й процес роботи з ними.

Подання «Асортименти комп'ютерної техніки”

Після запуску системи, в основному вікні програми виводиться подання “Асортименти комп'ютерної техніки” (рис. 4.14 а). У даному поданні виводиться вся інформація про асортименти комп'ютерної техніки, необхідної для продажу.

Інформація представлена в наступному виді:

1. Тип (тип комп'ютерної техніки);

2. Виробник (виробник комп'ютерної техніки);

3. Модель (модель комп'ютерної техніки);

4. Характеристика (характеристика комп'ютерної техніки);

5. Поставки припинені (відмітка про припинення поставок);

6. Мінімальні залишок (мінімальна кількість на складі);

По кожних асортиментах нижче представлена детальна інформація зі складу:

1. надійшло на склад (дата надходження на склад);

2. у кількості (кількість техніки, що надійшла);

3. за ціною (ціна по який придбана техніка);

4. продане (кількість проданої техніки);

5. залишок (залишок техніки на складі);

6. постачальник (постачальник комп'ютерної техніки);

У даному поданні можна проаналізувати попит на КТ і зробити відповідні дії, припинити поставки або збільшити мінімальний залишок на складі.

Для зручності аналізу у всіх поданнях передбачене угруповання по полях, для чого будь-яке поле виділяється мишею й переноситься в поле, що групує, над таблицею. Всі дані в таблиці згрупуються по відповідному полю.

Наступне поле, перенесене в поле угруповання, виводить дані детального угруповання.

Для розкриття або закриття згрупованих списків даних необхідно мишею відкрити або закрити кожне поле списку, нажавши відповідно на кнопку “+” або

“-„ ліворуч від згрупованого списку поля.

Для розкриття всіх згрупованих списків полів необхідно вибрати меню «Дані» і вибрати відповідний пункт меню “розгорнути” або “згорнути”, або ж нажати відповідно кнопки «F2» або «F3».

Так само у всіх поданнях передбачений відбір, фільтрація й сортування по будь-якій умові й полю. Для цього необхідно ліворуч від назви поля нажати на символ й у списку значень поля, що відкрилися, вибрати потрібне значення, а для детального відбору вибрати пункт меню “(Custom…)”,після чого на екрані з'явиться вікно «Custom Filter» , де необхідно заповнити умову вибору й нажати кнопку «Ок».

Після вибору в таблиці будуть відбиті всі рядки відповідному критерію вибору, а в низу таблиці з'явиться поле, що відбиває умови вибору.

Дану умову вибору можна змінити або зберегти для подальшого використання. Для цього необхідно в полі умови вибору нажати кнопку «Customize...», і у вікні, що з'явилося, «Filter builder» додати або змінити умову вибору, після чого нажати кнопку «Apply» для застосування умови вибору або нажати кнопку «SaveAs» для збереження умови вибору.

Так само для зручності перегляду інформації в поданнях можна приховувати або додавати цілі поля інформації. Для цього необхідно в меню «Дані» вибрати відповідний пункт меню “сховище” або нажати кнопку «F3». Після чого над основним вікном програми з'явиться вікно «Customization» (рис. 4.20), у якому зберігаються поля подання. У нього можна перенести непотрібні поля з подання, або з нього додати потрібні в подання.

Для додавання або зміни асортиментів комп'ютерної техніки необхідно вибрати меню «Дані» і вибрати відповідний пункт меню “Додати” або “Змінити”, або ж нажати відповідно кнопки «Ins» або «Ctrl + E». Після чого з'явиться вікно “Додати або змінити асортимент комп'ютерної техніки”, у якому необхідно додати або змінити відповідні поля й нажати кнопку “Ok”.

Для видалення асортиментів комп'ютерної техніки, необхідно вибрати в поданні, потрібний асортимент й у меню «Дані» вибрати пункт меню “Видалити”, після чого система зажадає підтвердження видалення при натисканні на кнопку “Ok”, рядок буде вилучена із подання.

Подання «Постачальники комп'ютерної техніки”

У даному поданні виводиться вся інформація про постачальників комп'ютерної техніки.

Інформація представлена в наступному виді:

1. Постачальник (назва фірми постачальника);

2. Відповідальний (П. І. П. відповідального по поставках фірми);

3. Посада (посада відповідального по поставках фірми);

4. Адреса (адреса фірми постачальника);

5. Індекс;

6. Країна (країна розміщення фірми постачальника);

7. Регіон (регіон або область розміщення фірми постачальника);

8. Місто (місто розміщення фірми постачальника);

9. Телефон (телефон відповідального по поставках фірми);

10. Факс (факс фірми постачальника);

11. Email (Email фірми постачальника);

По кожному постачальнику нижче представлена детальна інформація з поставок на складі:

1. Надійшло на склад (дата надходження на склад);

2. Тип (тип комп'ютерної техніки);

3. Виробник (виробник комп'ютерної техніки);

4. Модель (модель комп'ютерної техніки);

5. Характеристика (характеристика комп'ютерної техніки);

6. у кількості (кількість техніки, що надійшла, на склад);

7. залишок (залишок техніки на складі);

У даному поданні можна переглянути й проаналізувати всі поставки й продажі КТ по кожному постачальнику.

Для додавання або зміни постачальника комп'ютерної техніки необхідно вибрати меню «Дані» і вибрати відповідний пункт меню “Додати” або “Змінити”, або ж нажати відповідно кнопки «Ins» або «Ctrl + E». Після чого з'явиться вікно “Додати або змінити інформацію про постачальників”, у якому необхідно додати або змінити поля й нажати кнопку “Ok”.

Для видалення постачальника комп'ютерної техніки, необхідно вибрати в поданні, потрібного постачальника й у меню «Дані» вибрати пункт меню “Видалити”, після чого система зажадає підтвердження видалення рядка при натисканні на кнопку “Ok”, рядок буде вилучено.

Подання «Всі поставки комп'ютерної техніки”

У даному поданні виводиться вся інформація про поставки комп'ютерної техніки на склад.

Інформація представлена в наступному виді:

1. Тип (тип комп'ютерної техніки);

2. виробник (виробник комп'ютерної техніки);

3. модель (модель комп'ютерної техніки);

4. надійшла (дата надходження на склад);

5. у кількості (кількість техніки, що надійшла, на склад);

6. за ціною (ціна по який придбана техніка);

7. продане (кількість проданої техніки зі складу);

8. залишок (залишок техніки на складі);

9. постачальник (назва фірми постачальника комп'ютерної техніки);

У даному поданні можна переглянути й проаналізувати всі поставки комп'ютерної техніки на склад.

Подання «Всі продажі комп'ютерної техніки”

У даному поданні виводиться вся інформація про продажі комп'ютерної техніки зі складу.

Інформація представлена в наступному виді:

1. Тип (тип комп'ютерної техніки);

2. виробник (виробник комп'ютерної техніки);

3. модель (модель комп'ютерної техніки);

4. характеристика (характеристика комп'ютерної техніки);

5. продано (дата продажу комп'ютерної техніки зі складу);

6. у кількості (кількість проданої техніки зі складу);

7. за ціною (ціна по який продана техніка);

У даному поданні можна переглянути й проаналізувати всі продажі комп'ютерної техніки зі складу.

Подання «Замовити комп'ютерну техніку”

У даному поданні виводиться вся інформація для замовлення комп'ютерної техніки на склад.

Інформація представлена в наступному виді:

1. Замовити (потрібно замовити)

2. Тип (тип комп'ютерної техніки);

3. виробник (виробник комп'ютерної техніки);

4. модель (модель комп'ютерної техніки);

5. залишок (залишок техніки на складі);

6. мінімальний залишок (мінімальна кількість на складі);

7. поставки припинені (відмітка про припинення поставок);

У даному поданні можна переглянути, проаналізувати й визначити необхідні асортименти комп'ютерної техніки, яку необхідно замовити.

Подання «Продати комп'ютерну техніку”

У даному поданні виводиться вся інформація для продажу комп'ютерної техніки зі складу.

Інформація представлена в наступному виді:

1. Тип (тип комп'ютерної техніки);

2. виробник (виробник комп'ютерної техніки);

3. модель (модель комп'ютерної техніки);

4. характеристика (характеристика комп'ютерної техніки);

5. на складі (кількість комп'ютерної техніки на складі);

6. за ціною (ціна по який продається комп'ютерна техніка);

Нижче представлена інформація із продажів у наступному виді:

1. Тип (тип комп'ютерної техніки);

2. виробник (виробник комп'ютерної техніки);

3. модель (модель комп'ютерної техніки);

4. характеристика (характеристика комп'ютерної техніки);

5. продано (дата продажу комп'ютерної техніки зі складу);

6. у кількості (кількість проданої техніки зі складу);

7. за ціною (ціна по якій продана техніка);

У даному поданні можна простежити продажі комп'ютерної техніки, а також одержати на склад або продати зі складу комп'ютерну техніку.

Для одержання комп'ютерної техніки на склад, необхідно в меню «Товар» вибрати пункт меню «Одержати» або нажати комбінацію кнопок «Shift + Ins».

У вікні, що з'явилося, «Одержати на склад комп'ютерну техніку.», вибрати: модель; постачальника; дату одержання; указати: кількість; ціну закупівлі; націнку й нажати кнопку «Ок».

Отримана комп'ютерна техніка буде додана новим рядком у верхній таблиці подання «Продати комп'ютерну техніку».

Для продажу комп'ютерної техніки зі складу, необхідно в меню «Товар» вибрати пункт меню «Продати» або нажати комбінацію кнопок «Shift + Del».

У вікні, що з'явилося, «Продати зі складу комп'ютерну техніку», вибрати: модель; дату продажу; указати кількість і нажати кнопку «Ок».

Продана комп'ютерна техніка, у нижній таблиці подання «Продати комп'ютерну техніку», буде додана новим рядком, якщо із цієї поставки комп'ютерна техніка не продавалася, або додана кількість проданої техніки, якщо із цієї поставки комп'ютерна техніка продавалася. А у верхній таблиці в рядку “на складі” зменшиться кількість залишку на складі.

Для редагування переліку типів комп'ютерної техніки, необхідно в меню «Компонент» вибрати пункт меню «Тип» або нажати комбінацію кнопок «Ctrl + T». І у вікні, що з'явилося, «Тип комп'ютерної техніки.», зробити потрібні зміни й нажати кнопку «Ок».

Для редагування переліку виробників комп'ютерної техніки, необхідно в меню «Компонент» вибрати пункт меню «Виробник» або нажати комбінацію кнопок «Ctrl + M». І у вікні, що з'явилося, «Виробник комп'ютерної техніки, зробити потрібні зміни й нажати кнопку «Ок».

Звіти

У системі обліку продажів комп'ютерної техніки передбачені наступні звіти:

1. Асортименти на складі (отримано, продано, залишок);

2. Постачальники комп'ютерної техніки (поставлено, залишилося, ціна);

3. Необхідно замовити комп'ютерну техніку.

Для виклику звітів необхідно в меню «Звіт» вибрати пункт меню відповідного звітного документа або нажати кнопки швидкого виклику «F5», «F6» або «F7». У вікні, що з'явилося, “Output Options”, вибрати потрібну дію “Печатка”, “Перегляд” або “Файл” і нажати кнопку «Ок».

У режимі “Перегляд”, звітні документи відображаються в наступному виді: звіт «Асортименти на складі» (рис. 4.35); звіт «Постачальники комп'ютерної техніки» (рис.4.36); звіт «Необхідно замовити комп'ютерну техніку».

У режимі «Файл», звітні документи можуть бути збережені у вигляді файлів наступного формату: Rave Snapshot File (*.ndr); Native Printer Output (*.prn); Adobe Acrobat (*.pdf); Web page (*.html); Rich Text Format (*.rtf); Plain text (*.txt).

4.5 Програмна реалізація системи SalesRecord

Головна форма програми “fmSalesRecord” містить: компонент TdxBarManager, за допомогою якого реалізоване головне меню програми й панель інструментів; компоненти TdxSideBar і TdxSideBarStore, за допомогою яких реалізована бічна панель вибору подання інформації; компоненти TImageList утримуючі списки графічних зображень двох розмірів 16x16, для іконок підпунктів головного меню й контекстного меню й 32x32, для іконок кнопок панелі інструментів і бічної панелі вибору подань.

Вся обробка подій, оформлення й настроювання вибору підпунктів головного меню, кнопок панелі інструментів і кнопок бічної панелі вибору подань, зібрані в компоненті списку дій TActionList.

Для підключення до бази даних MS SQLServer 2008 використається компонент TADOConnection. Для зв'язку з таблицями бази даних використаються компоненти TADOTable, для запитів до таблиці бази даних використається компоненти TADOQuery.

Для відображення інформації з подань використаються два компоненти TcxGrid побудовані за принципом головна-детальна таблиця.

Головна й детальна таблиця TcxGrid представлена набором компонентів TcxGridDBTableView призначених для відображення подань системи. Підключення компонентів TcxGridDBTableView до компонентів TcxGrid і зв'язок головної таблиці до детальної відбувається програмно в процедурі ActiveSR за допомогою змінної pdata, якій привласнюється числове значення подання:

0. Асортименти комп'ютерної техніки на складі;

1. Постачальники комп'ютерної техніки

2. Всі поставки комп'ютерної техніки

3. Необхідно замовити комп'ютерну техніку

4. Продати комп'ютерну техніку

5. Вся продана комп'ютерна техніка

Нижче показаний лістінг процедури ActiveSR.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Процедура активує зовнішній вигляд програми

procedure TfmSalesRecord.ActiveSR;

begin

case pdata of

0:begin // Асортименти комп'ютерної техніки на складі

stbSR.Panels[1].Text := асортименти комп'ютерної техніки на складі';

gbAssortiment.Visible := true;

gbSupplier.Visible := false;

sp1.Visible := true;

if spAssortiment then sp1.OpenSplitter else sp1.CloseSplitter;

sp2.Visible := true;

sp2.OpenSplitter;

ActiveEditString(true); // редагувати рядка

glSlave.Visible :=true;

glMaster.GridView := gdbtvComponent;

glSlave.GridView := gdbtvWarehouse;

//----------------------------------------------------

wsTypeComponent.Visible:= false;

wsMainframer.Visible:= false;

wsModel.Visible:= false;

wcCharacteristic.Visible:= false;

wValue.Visible:= true;

wSellCount.Visible:= true;

wsSupplier.Visible:= true;

//------------------------------------------------------

adotOfftake.Close;

adotTypeComponent.Close;

adotMainframer.Close;

adotComponent.Close;

adotRemWarehouse.Close;

adotRemWarehouse.MasterSource := dsComponent;

adotRemWarehouse.MasterFields := 'IDComponent';

adotRemWarehouse.IndexFieldNames := 'IDComponent';

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotOfftake.Close;

adotRemWarehouse.Open;

adotComponent.Locate('IDComponent',bnComponent,[]);

end;

1:begin // Постачальники комп'ютерної техніки

stbSR.Panels[1].Text := 'Постачальники комп'ютерної техніки ';

gbAssortiment.Visible := false;

gbSupplier.Visible := true;

sp1.Visible := true;

if spSupplier then sp1.OpenSplitter else sp1.CloseSplitter;

sp2.Visible := true;

sp2.OpenSplitter;

ActiveEditString(true); // редагувати рядка

glSlave.Visible :=true;

glMaster.GridView := gdbtvSupplier;

glSlave.GridView := gdbtvWarehouse;

//---------------------------------------------

wsTypeComponent.Visible:= true;

wsMainframer.Visible:= true;

wsModel.Visible:= true;

wcCharacteristic.Visible:= true;

wValue.Visible:= false;

wSellCount.Visible:= false;

wsSupplier.Visible:= false;

//-----------------------------------

adotTypeComponent.Close;

adotMainframer.Close;

adotComponent.Close;

adotOfftake.Close;

adotSupplier.Close;

adotRemWarehouse.Close;

adotRemWarehouse.MasterSource := dsSupplier;

adotRemWarehouse.MasterFields := 'IDSupplier';

adotRemWarehouse.IndexFieldNames := 'IDSupplier';

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotOfftake.Open;

adotSupplier.Open;

adotRemWarehouse.Open;

adotSupplier.Locate('IDSupplier',bnSupplier,[]);

end;

2:begin // Всі поставки комп'ютерної техніки.

stbSR.Panels[1].Text := 'Всі поставки комп'ютерної техніки.';

gbAssortiment.Visible := false;

gbSupplier.Visible := False;

sp1.CloseSplitter;

sp1.Visible := false;

sp2.Visible := false;

sp2.CloseSplitter;

ActiveEditString(false); // не редагувати рядка

glSlave.Visible :=false;

glMaster.GridView := gdbtvWarehouses;

glSlave.GridView := nil;

//-----------------------------------

adotOfftake.Close;

adotTypeComponent.Close;

adotMainframer.Close;

adotComponent.Close;

adotSupplier.Close;

adotRemWarehouse.Close;

adotRemWarehouse.MasterSource := nil;

adotRemWarehouse.MasterFields := '';

adotRemWarehouse.IndexFieldNames := '';

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotOfftake.Open;

adotSupplier.Open;

adotRemWarehouse.Open;

adotRemWarehouse.Locate('IDComponent',bnRemWarehouse,[]);

end;

3:begin // Необхідно замовити комп'ютерну техніку.

stbSR.Panels[1].Text := 'Необхідно замовити комп'ютерну техніку.';

gbAssortiment.Visible := false;

gbSupplier.Visible := False;

sp1.CloseSplitter;

sp1.Visible := false;

sp2.Visible := false;

sp2.CloseSplitter;

ActiveEditString(false); // не редагувати рядка

glSlave.Visible :=false;

glMaster.GridView := gdbtvOrderWarehouse;

glSlave.GridView := nil;

//-----------------------------------

adotOfftake.Close;

adotTypeComponent.Close;

adotMainframer.Close;

adotComponent.Close;

adotSupplier.Close;

adotOrderWarehouse.Close;

adotOrderWarehouse.MasterSource := nil;

adotOrderWarehouse.MasterFields := '';

adotOrderWarehouse.IndexFieldNames := '';

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotOfftake.Open;

adotSupplier.Open;

adotOrderWarehouse.Open;

adotOrderWarehouse.Locate('IDComponent',bnOrderWarehouse,[]);

end;

4:begin // Продати комп'ютерну техніку.

stbSR.Panels[1].Text := 'Продати комп'ютерну техніку ';

gbAssortiment.Visible := false;

gbSupplier.Visible := false;

sp1.CloseSplitter;

sp1.Visible := false;

sp2.Visible := true;

sp2.OpenSplitter;

ActiveEditString(false); // не редагувати рядка

glSlave.Visible :=true;

glMaster.GridView := gdbtvRemCountWarehouse;

glSlave.GridView := gdbtvSellCountWarehouse;

//-----------------------------------

adotTypeComponent.Close;

adotMainframer.Close;

adotComponent.Close;

adotWarehouse.Close;

adotOfftake.Close;

adoqRemCountWarehouse.Close;

adoqSellCountWarehouse.Close;

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotWarehouse.Open;

adotOfftake.Open;

adoqRemCountWarehouse.Open;

adoqSellCountWarehouse.Open;

adoqRemCountWarehouse.Locate('IDWarehouse',bnWarehouse,[]);

end;

5:begin // Вся продана комп'ютерна техніка.

stbSR.Panels[1].Text := 'Показати всі продажі комп'ютерної техніки.';

gbAssortiment.Visible := false;

gbSupplier.Visible := False;

sp1.CloseSplitter;

sp1.Visible := false;

sp2.Visible := false;

sp2.CloseSplitter;

ActiveEditString(false); // не редагувати рядка

glSlave.Visible :=false;

glMaster.GridView := gdbtvSellCountWarehouse1;

glSlave.GridView := nil;

//-----------------------------------

adotOfftake.Close;

adotTypeComponent.Close;

adotMainframer.Close;

adotComponent.Close;

adotSupplier.Close;

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotOfftake.Open;

adotSupplier.Open;

adoqSellCountWarehouse.Open;

adoqSellCountWarehouse.Locate('IDComponent',bnSellCountWarehouse,[];

end;

end;

end;

Для відображення детальної інформації з подань: асортименти комп'ютерної техніки й постачальники комп'ютерної техніки, на основній формі програми розміщений компонент TPanel і два компоненти TcxGroupBox, на яких розміщені компоненти TcxDBImage, TcxDBTextEdit, TcxDBMemo, TcxDBCheckBox, підключені до таблиць баз даних через компоненти TDataSource до компонентів TADOTable.

Для зручного перегляду інформації з подань на основну форму програми додані два компоненти TcxSplitter, за допомогою яких можна розкривати й приховувати детальну інформацію з подань.

Для відображення поточного стану системи на основну форму програми доданий компонент TcxStatusBar, у ньому відображається поточне подання й активний стан основних кнопок клавіатури.

При запуску системи, формується основне вікно програми fmSalesRecord і виконується процедура FormCreate, нижче наведено її лістінг.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Форма створюється

procedure TfmSalesRecord.FormCreate(Sender: TObject);

begin

ReadWriteConn;

// Шлях до виконуваного файлу

PathSR:=Application.ExeName;

while PathSR[Length(PathSR)]<>'\' do

delete(PathSR, Length(PathSR),1);

bActive:=true;

spAssortiment:= false;

spSupplier:=false;

end;

У даній процедурі відбувається зчитування із системного реєстру настроювань підключення до сервера баз даних за допомогою процедури ReadWriteConn розміщеної в модулі Registr, нижче наведений лістінг модуля:

unit Registr;

interface

uses

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

Dialogs, StdCtrls, Menus, ImgList, ComCtrls, ToolWin, ExtCtrls, Registry;

var

Reg : TRegistry; // Змінна системного регістра

procedure WriteConn_SQL;

function ReadConn_SQL:Boolean;

procedure ReadWriteConn;

implementation

uses fmSalesRecord_;

//-----------------------------------

//-- Процедура заносить інформацію до системного реєстру

procedure WriteConn_SQL;

begin

Reg:=TRegistry.Create;

with Reg do

begin

OpenKey('software\SalesRecord\ConnectDB',true);

WriteString('NameServer',NameServer);

WriteString('Namedb',Namedb);

WriteString('UNdb',UNdb);

WriteString('PSWdb',PSWdb);

CloseKey;

Free;

end;

end;

//-----------------------------------

//-- Процедура читання з регістра інформації про підключення до SalesRecord бд

function ReadConn_SQL:Boolean;

begin

Reg:=TRegistry.Create;

if (Reg.OpenKey('software',false)) and

(Reg.OpenKey('SalesRecord',false)) and

(Reg.OpenKey('ConnectDB',false)) then

begin // Існує

NameServer:=Reg.ReadString('NameServer');

Namedb:=Reg.ReadString('Namedb');

UNdb:=Reg.ReadString('UNdb');

PSWdb:=Reg.ReadString('PSWdb');

Result:=true;

end

else

Result:=false;

Reg.CloseKey;

Reg.Free;

end;

//-----------------------------------

//-- Процедура читання вмісту регістра якщо він відсутній запис за замовчуванням

procedure ReadWriteConn;

begin

if not ReadConn_SQL then // існує запис?

begin

NameServer:='CORE2Q\ARHIV'; // Немає. Параметри за замовчуванням

Namedb:='SalesRecord';

UNdb:='sa';

PSWdb:='epson';

WriteConn_SQL; // Записати нові параметри

end;

end;

end.

Потім у змінну PathSR зчитується шлях до виконуємого файлу програми, це необхідно для подальшого виклику файлу звітних документів Report.rav. Після чого відбувається первісна ініціалізація змінних spAssortiment, spSupplier, їм привласнюється значення false, за значенням цих змінних відкривається або закривається детальна інформація подань асортименти комп'ютерної техніки й постачальники комп'ютерної техніки.

Після створення основної форми системи fmSalesRecord, перевіряється підключення до бази даних SalesRecord, якщо підключення не відбулося, користувачеві надається можливість вручну настроїти підключення до бази даних за допомогою віконної форми fmSetupConnect.

Нижче наведені лістінг перевірки підключення розміщеного в коді проекту SalesRecord і лістінг форми fmSetupConnect:

var

SetupConect: TfmSetupConect;

bStart: boolean;

begin

Application.Initialize;

Application.CreateForm(TfmSalesRecord, fmSalesRecord);

if not fmSalesRecord.ConnectToSQL then

begin

MessageDlg('Не можу підключиться до баз даних SalesRecord, проверте настроювання підключення.',mtError, [mbOK], 0);

SetupConect:= TfmSetupConect.Create(nil);

if SetupConect.ShowModal = mrOk then

begin

WriteConn_SQL;

fmSalesRecord.bActive := true;

bStart := true;

end

else

begin

bStart := false;

end;

SetupConect.Free;

end else begin

bStart := true;

end;

if bStart then

Application.Run else

Application.Terminate;

end.

// активність кнопки Ок

function TfmSetupConect.ActiveOk:boolean;

begin

if (teSQLName.Text <> NameServer) or

(tedbName.Text <> Namedb) or

(teUN.Text <> UNdb) or

(tePW.Text <> PSWdb) then Result :=true else Result :=false;

end;

//== ПІДПРОГРАМИ =====================================

//-----------------------------------

// Форма активується

procedure TfmSetupConect.FormActivate(Sender: TObject);

begin

teSQLName.Text := NameServer;

tedbName.Text := Namedb;

teUN.Text := UNdb;

tePW.Text := PSWdb;

btOk.Enabled := ActiveOk;

end;

//-----------------------------------

// Натиснута кнопка Ок

procedure TfmSetupConect.btOkClick(Sender: TObject);

begin

NameServer:= teSQLName.Text ;

Namedb:= tedbName.Text;

UNdb:= teUN.Text;

PSWdb:= tePW.Text;

fmSalesRecord.ConnectToSQL;

end;

procedure TfmSetupConect.teSQLNamePropertiesChange(Sender: TObject);

begin

btOk.Enabled := ActiveOk;

end; end.

Перевірка підключення до бази даних виконується за допомогою функції ConnectToSQL, у результаті виконання, функція повертає змінну типу Boolean (true - підключення відбулося, false - помилка підключення).

Нижче наведений лістінг функції ConnectToSQL.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Підключення до БД

function TfmSalesRecord.ConnectToSQL:boolean;

begin

// Считати дані для підключення до сервера;

adocSalesRecord.Connected :=false;

adocSalesRecord.ConnectionString := 'Provider=SQLOLEDB.1' +

';Data Source=' + NameServer +

';Initial Catalog=' + Namedb +

';User ID=' + UNdb +

';Password=' + PSWdb +

';Persist Security Info=True';

try // Спроба підключиться

adocSalesRecord.Connected :=true;

Result:=true;

except

Result:=false;

end;

end;

Після підключення до бази даних SalesRecord відбувається активація основної форми програми й виконується процедура FormActivate, у цій процедурі відбувається підключення до таблиць бази даних і вибір першого подання для відображення.

Нижче наведений лістінг процедури FormActivate:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Форма активується

procedure TfmSalesRecord.FormActivate(Sender: TObject);

begin

if bActive then

begin

// Відкриваємо таблиці

adotTypeComponent.Open;

adotMainframer.Open;

adotComponent.Open;

adotSupplier.Open;

adotWarehouse.Open;

adotOfftake.Open;

pdata:=0; ActiveSR;

bActive:=false;

end; end;

Вся обробка подій підпунктів головного меню, кнопок панелі інструментів і кнопок бічної панелі вибору подань зібрані в компоненті списку дій TActionList, нижче наведені лістінги процедур обробки подій Execute.

Вибір подань за допомогою кнопок бічної панелі вибору подань:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Асортименти на складі.

procedure TfmSalesRecord.wAssortimentExecute(Sender: TObject);

begin

pdata:=0; ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Постачальники.

procedure TfmSalesRecord.wSupplierExecute(Sender: TObject);

begin

pdata:=1; ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Поставлено.

procedure TfmSalesRecord.wDeliverysExecute(Sender: TObject);

begin

pdata:=2; ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Продано.

procedure TfmSalesRecord.wAllSellExecute(Sender: TObject);

begin

pdata:=5; ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Замовити.

procedure TfmSalesRecord.wOrderExecute(Sender: TObject);

begin

pdata:=3; ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Продаж.

procedure TfmSalesRecord.wSellExecute(Sender: TObject);

begin

pdata:=4; ActiveSR;

end;

Пункти меню «Тип» й «Виробник» основного меню «Компоненти»:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Тип комп'ютерної техніки.

procedure TfmSalesRecord.TypeComponentExecute(Sender: TObject);

var

TypeComponent: TfmTypeComponent;

begin

case pdata of

0:bnComponent:= adotComponentIDComponent.AsInteger;

1:bnSupplier:= adotSupplierIDSupplier.AsInteger;

2:bnRemWarehouse:= adotRemWarehouseIDComponent.AsInteger;

3:bnOrderWarehouse:= adotOrderWarehouseIDComponent.AsInteger;

4:bnWarehouse:= adoqRemCountWarehouseIDWarehouse.AsInteger;

5:bnSellCountWarehouse:= adoqSellCountWarehouseIDComponent.AsInteger;

end;

TypeComponent:= TfmTypeComponent.Create(Application);

TypeComponent.ShowModal;

TypeComponent.Free;

ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// виробник комп'ютерної техніки.

procedure TfmSalesRecord.MainframerComponentExecute(Sender: TObject);

var

Mainframer: TfmMainframer;

begin

case pdata of

0:bnComponent:= adotComponentIDComponent.AsInteger;

1:bnSupplier:= adotSupplierIDSupplier.AsInteger;

2:bnRemWarehouse:= adotRemWarehouseIDComponent.AsInteger;

3:bnOrderWarehouse:= adotOrderWarehouseIDComponent.AsInteger;

4:bnWarehouse:= adoqRemCountWarehouseIDWarehouse.AsInteger;

5:bnSellCountWarehouse:= adoqSellCountWarehouseIDComponent.AsInteger;

end;

Mainframer:= TfmMainframer.Create(Application);

Mainframer.ShowModal;

Mainframer.Free;

ActiveSR;

end;

Пункти меню «Додати», «Змінити», «Видалити» основного меню «Дані»:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Додати рядок

procedure TfmSalesRecord.AddStringExecute(Sender: TObject);

var

AddEditComponent: TfmAddEditComponent;

AddEditSupplier: TfmAddEditSupplier;

begin

case pdata of

0:begin

bnComponent:= adotComponentIDComponent.AsInteger;

AddEditComponent:= TfmAddEditComponent.Create(Application);

AddEditComponent.bnComponent:=0;

AddEditComponent.ShowModal;

AddEditComponent.Free;

ActiveSR;

end;

1:begin

bnSupplier:= adotSupplierIDSupplier.AsInteger;

AddEditSupplier:= TfmAddEditSupplier.Create(Application);

AddEditSupplier.bnSupplier:=0;

AddEditSupplier.ShowModal;

AddEditSupplier.Free;

ActiveSR;

end;

end;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Редагувати рядок

procedure TfmSalesRecord.EditStringExecute(Sender: TObject);

var

AddEditComponent: TfmAddEditComponent;

AddEditSupplier: TfmAddEditSupplier;

begin

case pdata of

0:begin

bnComponent:= adotComponentIDComponent.AsInteger;

AddEditComponent:= TfmAddEditComponent.Create(Application);

AddEditComponent.bnComponent:=adotComponentIDComponent.AsInteger;

AddEditComponent.ShowModal;

AddEditComponent.Free;

ActiveSR;

end;

1:begin

bnSupplier:= adotSupplierIDSupplier.AsInteger;

AddEditSupplier:= TfmAddEditSupplier.Create(Application);

AddEditSupplier.bnSupplier:=adotSupplierIDSupplier.AsInteger;

AddEditSupplier.ShowModal;

AddEditSupplier.Free;

ActiveSR;

end;

end;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Видалити рядок

procedure TfmSalesRecord.DelStringExecute(Sender: TObject);

begin

case pdata of

0:begin

if MessageDlg('Ви дійсно хочете видалити дані про [ ' + ClearBlank(adotComponentsTypeComponent.AsString) + ':' + ClearBlank(adotComponentModel.AsString) + ' ].',mtWarning, [mbOk,mbCancel], 0) = mrOk then

adotComponent.Delete;

end;

1:begin

if MessageDlg('Ви дійсно хочете видалити дані про постачальника [ ' + ClearBlank(adotSupplierSupplier.AsString) + ' ].',mtWarning, [mbOk,mbCancel], 0) = mrOk then

adotSupplier.Delete;

end;

end;

end;

Пункти меню «Розгорнути», «Згорнути», «Сховище» основного меню «Дані»:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Розгорнути поля

procedure TfmSalesRecord.vOpenExecute(Sender: TObject);

begin

case pdata of

0:gdbtvComponent.DataController.Groups.FullExpand;

1:gdbtvSupplier.DataController.Groups.FullExpand;

2:gdbtvWarehouses.DataController.Groups.FullExpand;

3:gdbtvOrderWarehouse.DataController.Groups.FullExpand;

4:gdbtvRemCountWarehouse.DataController.Groups.FullExpand;

5:gdbtvSellCountWarehouse1.DataController.Groups.FullExpand;

end;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Згорнути поля

procedure TfmSalesRecord.vCloseExecute(Sender: TObject);

begin

case pdata of

0:gdbtvComponent.DataController.Groups.FullCollapse;

1:gdbtvSupplier.DataController.Groups.FullCollapse;

2:gdbtvWarehouses.DataController.Groups.FullCollapse;

3:gdbtvOrderWarehouse.DataController.Groups.FullCollapse;

4:gdbtvRemCountWarehouse.DataController.Groups.FullCollapse;

5:gdbtvSellCountWarehouse1.DataController.Groups.FullCollapse;

end;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Показати сховище

procedure TfmSalesRecord.vFieldsExecute(Sender: TObject);

begin

case pdata of

0:gdbtvComponent.Controller.Customization :=true;

1:gdbtvSupplier.Controller.Customization :=true;

2:gdbtvWarehouses.Controller.Customization :=true;

3:gdbtvOrderWarehouse.Controller.Customization :=true;

4:gdbtvRemCountWarehouse.Controller.Customization :=true;

5:gdbtvSellCountWarehouse1.Controller.Customization :=true;

end;

end;

Пункти меню «Одержати», «Продати» основного меню «Товар»:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Одержати товар на склад

procedure TfmSalesRecord.cmFindExecute(Sender: TObject);

var

Find: TfmFind;

begin

Find:= TfmFind.Create(Application);

case pdata of

0:begin

Find.bnComponent:=adotComponentIDComponent.AsInteger;

bnComponent:= adotComponentIDComponent.AsInteger;

end;

1:begin

Find.bnComponent:=0;

bnSupplier:= adotSupplierIDSupplier.AsInteger;

end;

2:begin

Find.bnComponent:=0;

bnRemWarehouse:= adotRemWarehouseIDComponent.AsInteger;

end;

3:begin

Find.bnComponent:=adotOrderWarehouseIDComponent.AsInteger;

bnOrderWarehouse:= adotOrderWarehouseIDComponent.AsInteger;

end;

4:begin

Find.bnComponent:=0;

bnWarehouse:= adoqRemCountWarehouseIDWarehouse.AsInteger;

end;

5:begin

Find.bnComponent:=0;

bnSellCountWarehouse:= adoqSellCountWarehouseIDComponent.AsInteger;

end;

end;

Find.ShowModal;

Find.Free;

ActiveSR;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Продати товар зі складу

procedure TfmSalesRecord.cmSellExecute(Sender: TObject);

var

Sell: TfmSell;

begin

Sell:= TfmSell.Create(Application);

case pdata of

0:begin

Sell.bnWarehouse:=0;

bnComponent:= adotComponentIDComponent.AsInteger;

end;

1:begin

Sell.bnWarehouse:=0;

bnSupplier:= adotSupplierIDSupplier.AsInteger;

end;

2:begin

Sell.bnWarehouse:=adotRemWarehouseIDWarehouse.AsInteger;

bnRemWarehouse:= adotRemWarehouseIDComponent.AsInteger;

end;

3:begin

Sell.bnWarehouse:=0;

bnOrderWarehouse:= adotOrderWarehouseIDComponent.AsInteger;

end;

4:begin

Sell.bnWarehouse:=adoqRemCountWarehouseIDWarehouse.AsInteger;

bnWarehouse:= adoqRemCountWarehouseIDWarehouse.AsInteger;

end;

5:begin

Sell.bnWarehouse:=0;

bnSellCountWarehouse:= adoqSellCountWarehouseIDComponent.AsInteger;

end;

end;

Sell.ShowModal;

Sell.Free;

ActiveSR;

end;

Пункти меню «Про програму» основного меню «Допомога»:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Інформація про програмний продукт

procedure TfmSalesRecord.prInfoExecute(Sender: TObject);

var

Info: TfmInfo;

begin

Info:= TfmInfo.Create(Application);

Info.ShowModal;

Info.Free;

end;

Для активації відповідних пунктів меню й кнопок панелі інструментів при виборі потрібного подання передбачені наступні процедури:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Процедура активує кнопки редагування рядків, забороняє або дозволяє зміну їхнього стану.

procedure TfmSalesRecord.ActiveEditString(xb:boolean);

begin

AddString.Enabled :=xb;

EditString.Enabled :=xb;

DelString.Enabled :=xb;

bEditString := xb;

end;

//============ Рух по таблиці ===========================

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Рух по таблиці adotRemWarehouse

procedure TfmSalesRecord.adotRemWarehouseBeforeScroll(DataSet: TDataSet);

begin

if not adotRemWarehouse.IsEmpty then

cmSell.Enabled :=true else

cmSell.Enabled :=false;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Рух по таблиці adotRemWarehouse

procedure TfmSalesRecord.adoqRemCountWarehouseBeforeScroll(DataSet: TDataSet);

begin

if not adoqRemCountWarehouse.IsEmpty then

cmSell.Enabled :=true else

cmSell.Enabled :=false;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Рух по таблиці adotComponent

procedure TfmSalesRecord.adotComponentBeforeScroll(DataSet: TDataSet);

begin

if not (adotComponent.IsEmpty) and (bEditString) then

begin

EditString.Enabled :=true;

DelString.Enabled :=true;

end else begin

EditString.Enabled :=false;

DelString.Enabled :=false;

end;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Рух по таблиці adotSupplier

procedure TfmSalesRecord.adotSupplierBeforeScroll(DataSet: TDataSet);

begin

if (not adotSupplier.IsEmpty) and (bEditString) then

begin

EditString.Enabled :=true;

DelString.Enabled :=true;

end else begin

EditString.Enabled :=false;

DelString.Enabled :=false;

end;

end;

Обчислення потрібних полів потрібних для подань, відбувається в наступних процедурах:

//============== Обчислюемиє поля ==================

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Обчислюєме поле adotRemWarehouse

procedure TfmSalesRecord.adotRemWarehouseCalcFields(DataSet: TDataSet);

begin

adotRemWarehouseRemCount.Value := adotRemWarehouseFindCouns.AsInteger - adotRemWarehouseSellCount.AsInteger;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Обчислюєме поле adotOrderWarehouse

procedure TfmSalesRecord.adotOrderWarehouseCalcFields(DataSet: TDataSet);

begin

adotOrderWarehouseRemCount.Value := adotOrderWarehouseFindCount.AsInteger - adotOrderWarehouseSellCount.AsInteger;

adotOrderWarehouseOrder.Value := (((adotOrderWarehouseFindCount.AsInteger - adotOrderWarehouseSellCount.AsInteger)-adotOrderWarehouseMinimal.AsInteger ) <= 0) and (not adotOrderWarehouseNoSupply.AsBoolean )

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Обчислюєме поле adoqRemCountWarehouse

procedure TfmSalesRecord.adoqRemCountWarehouseCalcFields(DataSet: TDataSet);

begin

adoqRemCountWarehouseRemVal.Value := adoqRemCountWarehouseVal.AsCurrency + ((adoqRemCountWarehouseVal.AsCurrency / 100) * adoqRemCountWarehouseMarkup.AsInteger );

end;

Обробка подій відкриття й закриття детальної інформації подань асортименти комп'ютерної техніки й постачальники комп'ютерної техніки відбувається в наступних процедурах:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Сховати детальні дані

procedure TfmSalesRecord.sp1AfterClose(Sender: TObject);

begin

case pdata of

0:spAssortiment:=false;

1:spSupplier:=false

end;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Показати деталі

procedure TfmSalesRecord.sp1AfterOpen(Sender: TObject);

begin

case pdata of

0:spAssortiment:=true;

1:spSupplier:=true

end; end;

Для додавання й редагування даних системи використаються наступні віконні форми.

Віконна форма fmTypeComponent і лістінг модуля fmTypeComponent_ віконної форми призначеної для редагування типу комп'ютерної техніки наведені нижче.

// Створюється форма

procedure TfmTypeComponent.FormCreate(Sender: TObject);

begin

//adotTypeComponent. := true;

adotTypeComponent.Open;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Ок

procedure TfmTypeComponent.btOkClick(Sender: TObject);

begin

adotTypeComponent.edit;

adotTypeComponent.Post;

end;

end.

Віконна форма fmMainframer і лістінг модуля fmMainframer_ віконної форми призначеної для редагування виробника комп'ютерної техніки наведені нижче.

// Створюється форма

procedure TfmMainframer.FormCreate(Sender: TObject);

begin

//adotMainframer.CachedUpdates := true;

adotMainframer.Open;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Ок

procedure TfmMainframer.btOkClick(Sender: TObject);

begin

adotMainframer.Edit;

adotMainframer.Post;

//adotMainframer.ApplyUpdates;

//adotMainframer.CachedUpdates := false;

end;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Cancel

procedure TfmMainframer.btCancelClick(Sender: TObject);


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

  • Основні поняття та особливості розробки баз даних в Microsoft Access. Побудова бази даних магазину побутової техніки: створення таблиць та встановлення зв’язків між ними, створення запитів, форм та звітів. Охорона праці і гігієна користувача комп'ютера.

    курсовая работа [2,5 M], добавлен 19.01.2010

  • Визначення мети створення бази даних магазину та таблиць, які вона повинна містити. Розгляд видів полів та ключів таблиць. Створення запитів, форм, звітів, макросів та модулів. Вибір системи управління базами даних. Реалізація моделі у Microsoft Access.

    курсовая работа [3,8 M], добавлен 20.07.2014

  • Основні підходи до проектування баз даних. Опис сайту Інтернет-магазину, характеристика його підсистем для обробки анкет і запитів користувачів. Розробка концептуальної, інфологічної, даталогічної, фізичної моделей даних. Побудова ER-моделі в CASE-засоби.

    курсовая работа [2,3 M], добавлен 01.02.2013

  • Апаратна організація Web-серверу гнучкої комп’ютеризованої системи в середовищі Linux Debian. Забезпечення обміну даними між персональним комп’ютером і зовнішніми вимірювальними приладами, прийом/передача даних крізь USB-інтерфейс в системи обміну даними.

    дипломная работа [3,3 M], добавлен 25.10.2012

  • Принципи організації баз даних (БД) при проектуванні клієнт-серверних додатків. Інструментальні засоби створення системи. Різновиди архітектур БД. Функції та програмна реалізація. Економічне обґрунтування доцільності розробки програмного продукту.

    дипломная работа [2,1 M], добавлен 22.10.2012

  • Побудова інформаційної системи "Магазин товарів для настільного тенісу" з автоматизації роботи магазину. Концептуальне моделювання бази даних. Обґрунтування вибору СУБД. Логічне проектування бази даних. Схема бази даних. Створення таблиць в конструкторі.

    курсовая работа [8,8 M], добавлен 16.12.2015

  • Виявлення основних сутностей предметної області. Побудова схеми реляційної бази даних. Вбудовані процедури і тригери. Опис архітектури програмної системи і концептуальної моделі бази даних, програмної реалізації та інтерфейсу користувача додатку.

    курсовая работа [4,3 M], добавлен 05.12.2012

  • Опрацювання та класифікації електронної інформації по магазину товарів для садівництва. Предметна область інтелектуальної системи проходження замовлень сільсько-господарських культу. Створення таблиць і звітів, що складають основу проектованої бази даних.

    отчет по практике [2,2 M], добавлен 24.02.2015

  • Робота користувача з базою даних, перегляд, редагування інформації в базі даних та здійснення пошуку у зручній формі. Інтерфейс системи сільській бібліотеці для обслуговування читачів і фіксування даних книжкового фонду. Структура реляційної бази.

    контрольная работа [182,3 K], добавлен 08.03.2015

  • Проектування бази даних: визначення об’єктів, структура таблиць, побудова схеми даних, забезпечення цілісності даних, створення певних відношень між таблицями, створення запитів, побудова форм, оформлення об’єктів. Розробка інструкції користувача.

    курсовая работа [1,9 M], добавлен 19.09.2014

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