Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorna #2.doc
Скачиваний:
1
Добавлен:
22.04.2019
Размер:
686.08 Кб
Скачать

Is Not Null And Between [Forms]![Продажи по годам]![НачальнаяДата]_

And [Forms]*[Продажи по годам]![КонечнаяДата],

яка накладена на поле ДатаИсполнения таблиці Закази означає, що вибиратимуться записи, в яких поле ДатаИсполнения не порожнє і значення попадають у діапазон, який задано у вікнах створеної форми Продали по годам"

Зауваження Символ підкреслення (_) при записі виразу використовується для переносу операторів при записі виразів.

У цьому запиті створено нове обчислювальне поле Год, у якому за допомогою функції Format відображається лише рік дати замовлення у вигляді чотиризначного числа.

.В) Побудова складних виразів

Створимо запит Іменинники,який відображатиме записи співробітників фірми Борей, у яких у поточному місяці буде день народження

У запит повинні ввійти поля з інформацією про прізвище та ім'я співробітника, а також його дата народження (таблиця Сотрудники). У першому вільному стовпці конструктора запиту введемо логічний вираз, який прирівнюватиме місяць народження співробітника до поточного місяця, тобто вираз

Моnth([Сотрудники]!|ДатаРождения])= Моnth(Now ()),

де функції Month() і Now() знаходяться у списку вбудованих функцій (папка Функции => Встроенние функции, категорія Дата/время вікна побудовувача виразів).

Оскільки створений вираз - логічний, то він може приймати лише одне з двох значень: False або Тше. Виводити треба лише записи, для яких цей вираз приймає значення True (істина), тобто у рядок умови відбору вводять значення Yes (або Да для русифікованої версії). Результатом виконання такого запиту буде динамічна таблиця із записами співробітників, у яких день народження припадає у поточному місяці.

Створимо запит Закінчується, який у таблиці Товарьі позначитиме товар, кількість якого на складі менша за 10 одиниць.

У результаті виконання такого запиту повинно утворюватись нове поле, в якому відображатиметься повідомлення "ЗАКІНЧУЄТЬСЯ". Для цього на бланку конструктора запиту до таблиці Товари, в якому знаходяться ті поля, які на думку користувача є необхідними (у нашому випадку це поля КодТовара, Марка, Цена, НаСкладе), потрібно створити обчислювальне поле Повідомлення, котре визначатиметься виразом:

IIf([НаСкладе]<10; "ЗАКІНЧУЄТЬСЯ";),

Зауваження Синтаксис функції IIf аналогічний до синтаксису стандартної функції організації розгалуження If:

IIf (умова; значення,.!; значення_2),

де умова - логічний вираз, який може приймати одне з двох значень True або False; значення_1 - значення, яке прийме функція, якщо логічний вираз приймає значення True, значеннz_2 - значення, яке прийме функція, якщо

логічний вираз приймає значення False.

Умова задається нерівністю, яка визначається кількістю одиниць найменування на складі (значенням у полі На-Складе). Якщо кількість менша 10 одиниць, то у полі Повідомлення з'явиться слово "ЗАКІНЧУЄТЬСЯ", якщо ж кількість перевищує 10 одиниць, то комірка залишиться порожньою.

Створимо запит Вік, який відображатиме записи тих співробітників, кому виповнилося 40 років.

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

Вираз для проведення таких обчислень, матиме вигляд:

IIf (DateSerial (Year(DateQ); Моnth([ДатаРождения]);_ Dау([ДатаРождения]))<Dаtе();Уеаг(Dаtе())-Уеаг([ДатаРождения]);_

Уеаг(Dаtе())-Уеаг([ДатаРождения])-1),

де DateSeria»(Y, M, D) - функція, яка перетворює у дати три числа: Y - рік, М - місяць та D - день. У нашому випадку

функція

DateSerial (Уеаг(Date());Моnth([ДатаРождения]); Day([ДатаРождения]))

з поточного року Year(Date()) місяця дня народження та дня народження сформує дату народження у поточному році. Якщо ця дата передує поточній даті Date(), тобто день народження уже був у цьому році, то вік обчислюється як різниця між поточним роком та роком народження Year(Date())-Уеаг([ДатаРождения]), якщо ж дня народження ще не було, то від різниці між роками віднімається один рік.

Для того, щоб відобразити записи працівників, яким за 40 років, потрібно додати ще умову на поле Вік >40.

Прикл.7.:. Створення перехресного запиту

Створимо запит Клієнт-товар, який відображатиме інформацію про те, скільки кожен клієнт замовив кожного найменування.

Створимо спочатку запит Замовлено товарів, який відображатиме записи про замовлення клієнтами відповідних найменувань із зазначенням кількості та ціни найменування, тобто динамічна таблиця результату виконання запиту повинна складатися з таких полів: КодКлиента (з таблиці Закази), Марка (з таблиці Товари), Количество і Цена (з таблиці Заказано) (мал. 3.30).

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]