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

Теоретичне дослідження принципів організації баз даних в Delphi. Особливості використання мови SQL при розробці інформаційних систем. Опис моделі й структури таблиць і подань бази даних магазину комп`ютерної техніки. Економічне обґрунтування розробки.

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

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

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

Рис. 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

Нижче наведений лістінг запиту подання 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

Нижче наведений лістінг запиту подання 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 Інтерфейс користувача проектованої системи

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

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

Головне меню системи має наступну структуру:

Рис. 4.10 Головне меню системи

Панелі інструментів із кнопками, мають наступну структуру.

Рис. 4.11 Панелі інструментів із кнопками

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

Рис. 4.13 Вікно «Настроювання підключення до бази даних»

На рис. 4.14 наведена ієрархія форм системи.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наступне поле, перенесене в поле угруповання, виводить дані детального угруповання. Нижче на рис. 4.15 показане угруповання по полях “Тип” й “Модель”.

Рис. 4.15 Основне вікно програми, угруповання подання по полях “Тип”, “Модель”

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

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

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

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

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

Рис. 4.19 Вікно «Filter builder»

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

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

Рис. 4.21 Вікно “Додати або змінити асортименти комп'ютерної техніки”

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

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

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

Рис. 4.23 Основне вікно програми, подання

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

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

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

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

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

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

5. Індекс;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 4.24 Вікно “Додати або змінити інформацію про постачальників”

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 4.26 Основне вікно програми, подання “Всі поставки комп'ютерної техніки”

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

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

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

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

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

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

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

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

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

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

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

Рис. 4.27 Основне вікно програми, подання “Всі продажі комп'ютерної техніки”

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

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

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

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

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

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

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

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

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

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

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

Рис. 4.28 Основне вікно програми, подання “Замовити комп'ютерну техніку”

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

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

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

Рис. 4.29 Основне вікно програми, подання “Продати комп'ютерну техніку”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 4.32 Вікно “ Тип комп'ютерної техніки”

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

Звіти

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

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

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

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

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

Рис. 4.34 Вікно “Output Options”

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

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

Рис. 4.35 Звіт «Асортименти на складі»

Рис. 4.36 Звіт «Постачальники комп'ютерної техніки»

Рис. 4.37 Звіт «Необхідно замовити комп'ютерну техніку»

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

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

Рис. 4.38 Головна форма програми “fmSalesRecord”

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

Рис. 4.39 Компонент TdxBarManager

Рис. 4.40 Компонент TdxSideBarStore

Рис. 4.41 Компонент TdxSideBar

Рис. 4.42 Компонент TImageList

база дані delphi інформаційний

Рис. 4.43 Компонент 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 (рис.4.44) і лістінг модуля fmTypeComponent_ віконної форми призначеної для редагування типу комп'ютерної техніки наведені нижче.

Рис. 4.44 Віконна форма 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 (рис. 4.45) і лістінг модуля fmMainframer_ віконної форми призначеної для редагування виробника комп'ютерної техніки наведені нижче.


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

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

    дипломная работа [972,5 K], добавлен 26.10.2012

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

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

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

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

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

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

  • Використання баз даних та інформаційних систем. Поняття реляційної моделі даних. Ключові особливості мови SQL. Агрегатні функції і угрупування даних. Загальний опис бази даних. Застосування технології систем управління базами даних в мережі Інтернет.

    курсовая работа [633,3 K], добавлен 11.07.2015

  • Призначення інформаційної системи. Завдання предметної області. Характеристика документів предметної області. Опис і обґрунтування вибору методу організації вихідних даних. Коротка характеристика IBExpert. Програмна реалізація в середовищі Delphi.

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

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

    реферат [2,3 M], добавлен 10.10.2009

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

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

  • Середовище Delphi як засіб розробки комп'ютерних систем для роботи з базами даних. Основи технології ADO та особливості її застосування в Delphi. Опис та етапи розподілу інформаційних потоків на виробничій дільниці автоматики аглодоменного виробництва.

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

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

    реферат [36,0 K], добавлен 27.10.2003

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