Розробка гнучкої системи управління інформаційними потоками магазину комп`ютерної техніки
Теоретичне дослідження принципів організації баз даних в 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