Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Побудова форм для введення даних



Читайте также:
  1. Варіанти вихідних даних
  2. Варіанти даних для виконання домашнього завдання
  3. Варіанти даних для індивідуального розрахунку
  4. Введення
  5. Введення
  6. Введення
  7. Введення і коригування вихідних даних

Для побудови форм активізуємо закладку Формы вікна бази даних рисунок 3. Як і для таблиць, побудова об'єкта здійснюється кнопкою Создать.

Для створення форм зручно скористатись майстром форм рисунок 16.

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

У прикладі, що розробляється, при побудові форми для таблиці ПОСАДИ необхідно вибрати всі поля. На другому кроці рисунок 18 майстер дає можливість забезпечити зовнішній вигляд форми структурно виваженим.

Рисунок 16. Вікно вибору режиму створення форми

Рисунок 17. Вікно вибору таблиць та полів для форми

Виберемо вигляд форми в один столбец. На третьому кроці рисунок 19 майстер забезпечує дизайн форми.

Користувач вибирає той стиль, який йому більше до вподоби. Нарешті, на останньому, четвертому кроці майстер пропонує назвати форму та вибрати варіант наступних дій користувача: відкрити форму для накопичення (редагування) даних або для подальшого редагування форми, яка побудована майстром.

Рисунок 18 Вибір зовнішнього вигляду форми

Рисунок 19. Вибір оформлення форми

Майстер на цьому кроці також дає можливість завантажити вікно-підказку по елементах побудованої форми та правилах роботи з нею.

Майже на одному подиху будується форма і для другої таблиці – ПрацівникИ, але, на відміну від побудови форми для таблиці ПОСАДИ, тут бажано при формуванні множини полів потурбуватись про наявність поля Назва з таблиці ПОСАДА. Цей елемент у формі таблиці ПрацівникИ допоможе бачити, а при необхідності і виправляти назву посади.

Форма для таблиці ЗАРПЛАТА будується за тими ж правилами, що й попередні, але на відміну від них тут виникає необхідність зосередити певні сили та вміння для побудови обчислень.

Спочатку в середовищі майстра формуємо множину полів форми: це всі поля таблиці ЗАРПЛАТА, поля Назва та ТарифЗаГодину з таблиці ПОСАДА, а також поля Прізвище, Ім’я та По-батькові з таблиці ПРАЦІВНИКИ. Після закінчення звичайної роботи майстра побудови форм необхідно потурбуватись про поля, що обчислюються. Тобто, вже побудовану форму для таблиці ЗАРПЛАТА потрібно редагувати.

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

Після відповіді на це питання в формі ЗАРПЛАТА спочатку забезпечимо обчислення поля СумаНарахована. Значення цього поля залежить від значень двох полів: КількістьГодин та ТарифЗаГодину. У властивостях елементу форми КількістьГодин рисунок 20 вибираємо закладку События, на рівні После обновления замовляємо значення Процедура обработки событий і далі кнопкою відкриваємо вікно модуля рисунок 21, де редагуємо відповідну процедуру з назвою КількістьГодин_AfterUpdate (дослівно — КількістьГодин_ПісляОновлення). Тіло цієї процедури буде таким:

СумаНарахована = КількістьГодин* ТарифЗаГодину

Так само будуємо процедуру обробки події оновлення другого аргументу поля СумаНарахована, а саме аргументу ТарифЗаГодину. Тепер буде побудована друга процедура з назвою ТарифЗаГодину_AfterUpdate, в якій тіло процедури співпадає з тілом процедури КількістьГодин_AfterUpdate, отже, можна скористатись буфером обміну замість набору тексту.

Рисунок 20. Вікно властивостей поля Кількість годин

Рисунок 21 Вікно модуля, пов’язаного з формою «Зарплата»

Значення інших полів, що обчислюються, також залежать врешті-решт від аргументів КількістьГодин та ТарифЗаГодину. Це означає, що процедури, вже визначені вище, необхідно редагувати додаванням нових інструкцій.

Редагування процедур виконується в тому ж вікні модуля, в яке можна потрапити знову ж таки через властивості поля та обробку подій (кнопка ). Беручи до уваги алгоритм, який побудовано вище (формули (1) - (6)), ці процедури набувають такого вигляду:

Dim s As Integer

СумаНарахована = КількістьГодин * ТарифЗаГодину

s = Int(СумаНарахована)

Податок = min(85 - 17, max(s - 17, 0)) * 10 / 100 + _

min(170 - 85, max(s - 85, 0)) * 15 / 100 + _

min(1020 - 170, max(s - 170, 0)) * 20 / 100 + _

min(1700 - 1020, max(s - 1020, 0)) * 30 / 100 + _

max(s - 1700, 0) * 40 / 100

ВнесокПФ = IIf(СумаНарахована <= 150, _

СумаНарахована * 1 / 100, min(СумаНарахована * 2 / 100, 32))

ВнесокФССбр = min(СумаНарахована * 0.5 / 100, 8)

ВнесокФССл = IIf(СумаНарахована <= 150, _

СумаНарахована * 0.25 / 100, min(СумаНарахована * 0.5 / 100, 8))

СумаНаРуки = СумаНарахована - (Податок + ВнесокПФ + ВнесокФССбр)

Крім названих вище процедур необхідно записати в цьому ж модулі функції max та min:

Private Function max(a, b)

max = If(a >= b, a, b)

End Function

Private Function min(a, b)

min = If(a >= b, b, a)

End Function

Пояснення:

Інструкція Dim s As Integer у мові VBA означає опис типу змінної s, а саме, її тип визначено як цілий.

Знак «_» в кінці тексту деяких рядків процедур означає перенесення частини поточної інструкції на новий рядок.

Зауваження:

Критерій вибору обробки подій у даному прикладі може не привести до бажаного результату, якщо зміни аргументів вже проведені за межами форми. Тому при необхідності можна запропонувати обробляти подію Выход. Відповідні процедури будуть ідентичними до записаних вище.

Остаточний вигляд форми для таблиці ЗАРПЛАТА зображено на рисунку 22.

Рисунок 22. Остаточний вигляд форми для таблиці ЗАРПЛАТА


Дата добавления: 2015-07-11; просмотров: 69 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.013 сек.)