· визначити обсяг робіт; визначити вартість робіт;
Рис. 3.8 - Перелік функції керування проектами в організації
· визначити час робіт; визначити виробничі потужності;
· розподілити виробничі потужності; розподілити роботи між співробітниками;
· контролювати хід виконання проекту.
Таким чином, буде отриманий перелік функцій, що показаний у лівій колонці таблиці 3.2. Цьому переліку функцій повинен бути поставлений у відповідність перелік модулів додатка БД.
Керівник проекту передав розробникові БД характеристику додатки БД по керуванню виконанням проектів в організації. Цей додаток буде займатися обліком виконуваних і виконаних проектів в організації.
Розробник БД повинен встановити відображення функцій у модулі, як показано на рис. 3.9.
Наведений приклад показує загальний принцип побудови відображення бізнесфункцій у модулі.
Таблиця 3.2 – Переліки функцій і модулів
Функції | Модуль |
Призначити керівника проекту | Уведення інформації про проект |
Визначити бюджет проекту | Уведення інформації про співробітників |
Визначити список підрозділів | Пошук інформації про співробітників |
Визначити список співробітників | Пошук інформації про проекти |
Виконувати проект | Генерація звіту про виконані проекти |
Здати проект | Генерація звіту про виконувані проекти |
Рисунок 3.9 – Відображення функції в модулі
Модулі VBA мають дуже просту синтаксичну структуру. На відміну від більшості мов програмування тут немає великої кількості розділів, немає поділу на інтерфейс і реалізацію. Усе зроблено гранично просто. Кожен модуль поза залежністю від його типу має всього два розділи:
· розділ оголошень змінних рівня модуля. Цей розділ іде першим й автоматично відокремлюється рискою від розділу методів. Завжди можна додати нове оголошення змінної в цей розділ. Область дії таких змінних поширюється на весь модуль, але вона може бути й розширена. Докладно про це ми поговоримо трохи пізніше;
· розділ методів модуля. У цьому розділі розміщуються процедури й функції. З погляду синтаксису нічого іншого крім процедур і функцій у цьому розділі бути не може. Звичайно є, у тому числі, і синтаксична різниця між макросом, методом - оброблювачем події й, наприклад, методом, що представляє процедуру з параметрами загального призначення. Проте, метод це завжди або процедура (Sub) або функція (Function).
Одні з перших запитань, що виникають при вивченні мови програмування: "Як у ньому влаштована система типів даних? Які є прості типи, як створюються складні, структурні типи, чи є можливість визначення власних типів, динамічних типів, чи можна в ньому визначати класи - "дійсні" типи, де визначається не тільки область можливих значень і структура даних, але й операції над ними?" Відповімо на ці запитання стосовно до VBA. Визначення типу Т задає: область можливих значень типу; структуру організації даних; операції, певні над даними цього типу.
Типи даних прийнято поділяти на прості й складні залежно від того, як розміщені їхні дані. У простих (скалярних) типів можливі значення даних єдині й неподільні. Складні типи характеризуються способом структуризації даних, - одне значення складного типу складається з безлічі значень даних, що організують складний тип.
Є й інші критерії класифікації типів. Так, типи поділяються на вбудовані типи й типи, визначені програмістом (користувачем). Вбудовані типи споконвічно належать мові програмування й становлять його базис. В основі системи типів будь-якої мови програмування завжди лежить базисна система типів, вбудованих у мову. На основі вбудованих типів програміст може будувати власні, певні типи даних. Але способи (правила) створення таких типів є базисними, вбудованими в мову.
Типи даних поділяються також на статичні й динамічні типи . Для даних статичного типу пам'ять виділяється в момент оголошення, необхідний розмір даних відомий при їхньому оголошенні. Для даних динамічного типу розмір даних у момент оголошення не відомий і пам'ять їм виділяється динамічно в процесі виконання програми по запиту.
Як і всяка мова, VBA містить всі звичні вбудовані прості типи даних: логічні, арифметичні й строкові.
Таблиця 4.1 – Система простих типів мови VBA
Ім'я типу | Можливі значення | Необхідна пам'ять |
1 | 2 | 3 |
Boolean | True, False | 2 байти |
Byte | 0...…255 | 1байт |
Integer | -32768 …+32767 | 2 байти |
Long | Приблизно: -2000 000 000…+2000000000 | 4байти |
Decimal | Приблизно 30 десяткових цифр. Можна вказати число цифр після десяткової крапки . | 12 байтів |
Single | - 3,4E38 …-1,4 E-45 для негативних значень 1,4E-45 … 3,4E38 для позитивних значень | 4 байти |
Double | -1,7E308 … -4,9E-324 для негативних значень4,9E-324 … 1,7E308 для позитивних значень | 8 байтів |
Currency | Десяткові числа з фіксованою позицією коми. Можливі 15 цифр до коми й 4 після | 8 байтів |
Продовження таблиці 4.1
1 | 2 | 3 |
String | Є два види рядків: рядки фіксованої довжини мають до 216 символів. Рядки змінної довжини мають до 2 31 символів | 10 байтів +1 байт на символ у звичайному кодуванні й 2 байти в кодуванні Unicode |
Date | Дати змінюються в діапазоні від 1 січня 100 р. до 31 грудня 9999 р. | 8 байтів |
Object | Посилання на об'єкт (покажчик) | 4 байти |
Variant | Універсальний тип, значенням | Залежить від контексту, але не |
якого можуть бути дані кожного з перерахованих вище типів,об'єкти, значення NULL і значення помилок ERROR | менш 16 байтів |
Найпростіший і найпоширеніший структурний тип - масив - упорядкована сукупність даних одного типу. Порядок на елементах масиву задається індексами його елементів. У VBA масиви можуть бути одномірними й багатомірними.
Синтаксис оголошення масивів розширений, - після ім’я змінної у круглих дужках вказується перелік розмірностей масиву:
{Dim | Private | Public | Static }<ім'я змінної> (<список розмірностей >) [ As <ім'я типу>]
Динамічні масиви VBA - це потужний засіб. Масив уважається динамічним , якщо при первісному оголошенні не вказується його розмірність, але вона може бути визначена й перевизначена надалі оператором ReDim. Розмірність визначається динамічно в тій процедурі й у той момент, коли вона стає фактично відомою. Зверніть увагу, у цьому операторі межі зміни індексів можна задати не тільки як константи, але і як вирази, залежні від змінних.
Якщо потім потрібно змінити межі або розмірність масиву, ви можете знову задати оператор перевизначення ReDim і почати новий цикл роботи з масивом. І ще одна "приємність" - можна зберегти усі раніше отримані елементи й розширити масив, додавши нові елементи. Для цього треба просто задати ключове слово Preserve при перевизначенні масиву. Динамічні масиви з успіхом можна застосовувати там, де необхідні динамічні структури даних, наприклад, списки, стеки, черги.
Оголошення можна давати на двох рівнях - модуля й процедури. На рівні модуля розділ оголошень іде першим й автоматично відокремлюється рискою від розділу методів. На рівні процедури оголошення й оператори можуть бути перемішані, потрібно лише щоб оголошення змінної передувало її використанню. Хорошим тоном вважається й у процедурах мати два чітко виділених розділи й всі оголошення розміщувати на початку процедури, так, щоб вони передували виконанню частини процедури - розділу операторів.
Давайте чітко виділимо основні частини розділу оголошень:
· Розділ опцій.
· Розділ констант.
· Розділ типів.
· Розділ змінних.
· Розділ Declare.
Розділ опцій. Опції є вказівками для транслятора. Вони можуть задаватися тільки на рівні модуля й повинні починати розділ оголошень. Опції задаються ключовим словом Option, після якого йде ім'я опції і можливо параметри. Перерахуємо їх складові:
· Explicit - при її вказівці транслятор вимагає, щоб всі змінні модуля були явно описані. Необхідно включити цю опцію раз і назавжди в опціях Редактора VBA;
· Base - ця опція має два значення: 0 і 1, що вказують нижню межу індексу масивів, що задає за замовчуванням. Правильно не користуватися цією опцією, а самому й завжди вказувати нижню межу.
· Private - цю опцію досить помістити в один з модулів проекту, зазвичай у головний модуль проекту, що неявно завжди виділяється програмістом. При її завданні проект робиться закритим і недоступний для інших проектів у системі документів;
· Compare - опція показує транслятору, як він повинен виконувати порівняння рядків у процедурах модуля. Параметр опції може брати одне із трьох можливих значень:
{Binary | Text | DataBase}
Рекомендується створювати такі розділи, які будуть відокремлюватись коментарями один від іншого. Бажано, щоб ці розділи йшли в описаному нами порядку. Тоді вже оголошені константи будуть з'являтися при описі меж масивів, типи змінних будуть передувати оголошенню самих змінних.