У цій статті наведено багато прикладів виразів у Access. Вираз – це комбінація математичних або логічних операторів, констант, функцій, полів таблиці, елементів керування та властивостей, яка повертає одне значення. Вирази в Access можна використовувати для обчислення значень, перевірки даних і встановлення значення за замовчуванням.
У цій статті
Форми та звіти
У таблицях цього розділу наведено приклади виразів, які обчислюють значення в елементі керування, розташованому у формі або звіті. Щоб створити обчислюваний елемент керування, введіть вираз у поле властивості ControlSource для елемента керування, а не в поле таблиці або запиту.
Примітка Вирази також можна використовувати у формі або звіті під час виділення даних за допомогою умовного форматування.
Операції з текстом
Вирази з таблиці нижче створюють обчислюваний елемент керування за допомогою операторів & (амперсанд) і + (плюс), які об’єднують текстові рядки, вбудованих функцій, які обробляють текстовий рядок, та інших операцій із текстом.
Вираз |
Результат |
---|---|
="N/A" |
Відображає фразу "Н/Д". |
=[FirstName] & " " & [LastName] |
Відображає значення, які містяться в полях таблиці "Ім’я" та "Прізвище". У цьому прикладі оператор & застосовується, щоб об’єднати поля "Ім’я" та "Прізвище" з пробілом між ними (у лапках). |
=Left([ProductName], 1) |
За допомогою функції Left відображає перший символ значення поля або елемента керування "Назва товару". |
=Right([AssetCode], 2) |
За допомогою функції Right відображає два останні символи значення поля або елемента керування "Код активу". |
=Trim([Address]) |
За допомогою функції Trim відображає значення елемента керування "Адреса" без пробілів на початку та в кінці. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
За допомогою функції IIf відображає значення елементів керування "Місто" й "Поштовий індекс", якщо елемент керування "Область" має Null-значення. Інакше відображає значення елементів керування "Місто", "Область" і "Поштовий індекс", розділені пробілами. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
За допомогою оператора + і розповсюдження Null-значення відображаються значення елементів керування "Місто" й "Поштовий індекс", якщо поле або елемент керування "Область" має Null-значення. В іншому випадку відображаються значення полів або елементів керування "Місто", "Область" та "Поштовий індекс", розділені пробілами. Розповсюдження Null-значення означає, що вираз отримує Null-значення, якщо будь-який із його компонентів має Null-значення. Оператор + підтримує розповсюдження Null-значення, а оператор & – ні. |
Верхні й нижні колонтитули
Щоб відобразити або надрукувати номери сторінок у формах і звітах, використовуються властивості Page і Pages. Вони доступні лише під час друку або попереднього перегляду, тому не відображаються на аркуші властивостей форми чи звіту. Щоб скористатися цими властивостями, зазвичай потрібно розмістити текстове поле в розділі верхнього або нижнього колонтитула форми чи звіту, а потім задати вираз, як у наведеній нижче таблиці.
Докладні відомості про використання колонтитулів у формах і звітах див. в статті Вставлення у форму або звіт номерів сторінок.
Вираз |
Результат |
---|---|
=[Page] |
1 |
="Page " & [Page] |
Сторінка 1 |
="Page " & [Page] & " of " & [Pages] |
Сторінка 1 з 3 |
=[Page] & " of " & [Pages] & " Pages" |
1 з 3 стор. |
=[Page] & "/" & [Pages] & " Pages" |
1/3 стор. |
=[Country/region] & " - " & [Page] |
Україна – 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Дата друку: 31.12.2017 |
Арифметичні операції
Вирази дають змогу додавати, віднімати, множити й ділити значення з кількох полів або елементів керування. За допомогою виразів також можна виконувати арифметичні операції з датами. Наприклад, припустімо, у вас є поле таблиці "Дата й час" із назвою "Потрібна дата". У полі (або елементі керування, прив’язаному до поля) вираз =[RequiredDate] - 2 повертає значення дати й часу, що на два дні раніше, ніж поточні значення в полі "Потрібна дата".
Вираз |
Результат |
---|---|
=[Subtotal]+[Freight] |
Сума значень у полях або елементах керування "Проміжний підсумок" і "Вартість доставки". |
=[RequiredDate]-[ShippedDate] |
Інтервал між значеннями дат у полях або елементах керування "Потрібна дата" й "Дата доставки". |
=[Price]*1.06 |
Добуток значення в полі або елементі керування "Ціна" та коефіцієнта 1,06 (додає 6 відсотків до значення "Ціна"). |
=[Quantity]*[Price] |
Добуток значень у полях або елементах керування "Кількість" і "Ціна". |
=[EmployeeTotal]/[CountryRegionTotal] |
Частка значень у полях або елементах керування "Загальна кількість працівників" і "Загальна кількість країн або регіонів". |
Примітка Якщо у виразі використовується арифметичний оператор (+, -, * або /) і один з елементів керування у виразі має Null-значення, результат усього виразу матиме Null-значення – це називається розповсюдженням Null-значення. Якщо записи в будь-якому з елементів керування, використаних у виразі, можуть мати Null-значення, щоб уникнути розповсюдження Null-значення, перетворіть Null-значення на нуль за допомогою функції Nz, наприклад: =Nz([Subtotal])+Nz([Freight])
Значення в інших елементах керування
Інколи може знадобитися значення, доступне в іншому місці, наприклад у полі або елементі керування в іншій формі чи в іншому звіті. Ви можете повернути це значення з іншого поля чи елемента керування за допомогою виразу.
У таблиці нижче наведено приклади виразів, які можна використовувати в обчислюваних елементах керування у формах.
Вираз |
Результат |
---|---|
=Forms![Orders]![OrderID] |
Значення елемента керування "Ідентифікатор замовлення" у формі "Замовлення". |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
Значення елемента керування "Проміжний підсумок замовлень" у підформі під назвою "Підформа замовлень", розташованій у формі "Замовлення". |
=Forms![Orders]![Orders Subform]![ProductID].Column(2) |
Значення третього стовпця в багатостовпцевому списку "Ідентифікатор товару" в підформі під назвою "Підформа замовлень", розташованій у формі "Замовлення" (зверніть увагу, що 0 позначає перший стовпець, 1 – другий стовпець і т. д.). |
=Forms![Orders]![Orders Subform]![Price] * 1.06 |
Добуток значення елемента керування "Ціна" в підформі під назвою "Підформа замовлень", розташованій у формі "Замовлення", і коефіцієнта 1,06 (додає 6 відсотків до елемента керування "Ціна"). |
=Parent![OrderID] |
Значення елемента керування "Ідентифікатор замовлення" в головній або батьківській формі поточної підформи. |
Вирази в таблиці нижче демонструють деякі способи використання обчислюваних елементів керування у звітах. Вирази посилаються на властивість Report.
Вираз |
Результат |
---|---|
=Report![Invoice]![OrderID] |
Значення елемента керування "Ідентифікатор замовлення" у звіті під назвою "Рахунок-фактура". |
=Report![Summary]![Summary Subreport]![SalesTotal] |
Значення елемента керування "Загальний обсяг продажів" у підзвіті під назвою "Зведений підзвіт" звіту "Зведення". |
=Parent![OrderID] |
Значення елемента керування "Код замовлення" в головному або батьківському звіті поточного підзвіту. |
Кількість, сума та середні значення
Щоб обчислити значення для одного або кількох полів чи елементів керування, можна скористатись агрегатною функцією. Наприклад, ви можете обчислити підсумок групи для нижнього колонтитула групи у звіті або проміжний підсумок замовлення для кожної позиції у формі. Ви також можете підрахувати кількість елементів в одному чи кількох полях або обчислити середнє значення.
Вирази в таблиці нижче демонструють деякі способи використання таких функцій, як Avg, Count і Sum.
Вираз |
Опис |
---|---|
=Avg([Freight]) |
За допомогою функції Avg відображає середнє значення поля таблиці або елемента керування "Вартість доставки". |
=Count([OrderID]) |
За допомогою функції Count відображає кількість записів в елементі керування "Код замовлення". |
=Sum([Sales]) |
За допомогою функції Sum відображає суму значень в елементі керування "Збут". |
=Sum([Quantity]*[Price]) |
За допомогою функції Sum відображає суму добутків значень в елементах керування "Кількість" і "Ціна". |
=[Sales]/Sum([Sales])*100 |
Відображає відсоткове значення обсягу збуту, отримане діленням значення елемента керування "Збут" на суму всіх значень елемента керування "Збут". Якщо для властивості "Формат" елемента керування встановлено значення "Відсотковий", приберіть із виразу частину *100. |
Докладні відомості про використання агрегатних функцій і підсумовування значень у полях і стовпцях див. в статтях Обчислення суми даних із використанням запиту, Обчислення даних із використанням запиту, Відображення підсумків стовпців даних у табличному поданні за допомогою рядка підсумків і Відображення підсумків стовпців даних у табличному поданні.
Агрегатні функції SQL
Агрегатна функція домену, або SQL, використовується, коли потрібно обчислити суму або підрахувати кількість значень вибірково. "Домен" складається з одного чи кількох полів в одній чи кількох таблицях або з одного чи кількох елементів керування в одній чи кількох формах або звітах. Наприклад, ви можете зіставити значення в полі таблиці зі значеннями в елементі керування форми.
Вираз |
Опис |
---|---|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
За допомогою функції DLookup повертає значення поля "Контакт" у таблиці "Постачальники", якщо значення поля "Код постачальника" в таблиці збігається зі значенням елемента керування "Код постачальника" у формі "Постачальники". |
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
За допомогою функції DLookup повертає значення поля "Контакт" у таблиці "Постачальники", якщо значення поля "Код постачальника" в таблиці збігається зі значенням елемента керування "Код постачальника" у формі "Нові постачальники". |
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
За допомогою функції DSum повертає суму значень у полі "Обсяг замовлення" в таблиці "Замовлення", якщо ідентифікатор клієнта має значення RATTC. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
За допомогою функції DCount повертає кількість значень "Так" у полі "Списані" (поле типу "Так/Ні") таблиці "Активи". |
Операції з датами
Відстеження значень дати й часу дуже часто використовується в базах даних. Наприклад, ви можете обчислити, скільки днів минуло з дати рахунка-фактури, щоб визначити термін дебіторської заборгованості. Значення дати й часу можна відформатувати різними способами, як показано в таблиці нижче.
Вираз |
Опис |
---|---|
=Date() |
За допомогою функції Date відображає поточну дату у форматі mm-dd-yy, де mm – це місяць (1–12), dd – це день (1–31), а yy – це дві останні цифри року (1980–2099). |
=Format(Now(), "ww") |
За допомогою функції Format відображає номер тижня в поточному році, де ww має значення від 1 до 53. |
=DatePart("yyyy", [OrderDate]) |
За допомогою функції DatePart відображає чотиризначне значення року з елемента керування "Дата замовлення". |
=DateAdd("y", -10, [PromisedDate]) |
За допомогою функції DateAdd відображає дату, яка передує значенню елемента керування "Планова дата" на 10 днів. |
=DateDiff("d", [OrderDate], [ShippedDate]) |
За допомогою функції DateDiff відображає різницю днів між значеннями елементів керування "Дата замовлення" та "Дата доставки". |
=[InvoiceDate] + 30 |
За допомогою арифметичних операцій із датами обчислює дату через 30 днів після дати в полі або елементі керування "Дата рахунка". |
Умови лише з двома значеннями
У прикладах виразів із таблиці нижче використано функцію IIf, щоб повернути одне з двох можливих значень. Функція IIf має три аргументи: Перший аргумент – це вираз, який має повернути значення True або False. Другий аргумент – це значення, яке повертається, якщо вираз істинний, а третій аргумент – це значення, яке повертається, якщо вираз хибний.
Вираз |
Опис |
---|---|
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
За допомогою функції IIf (Immediate If) відображає повідомлення "Замовлення підтверджено", якщо елемент керування "Підтверджено" має значення Yes. Інакше відображає повідомлення "Order Not Confirmed.". |
=IIf(IsNull([Country/region]), " ", [Country]) |
За допомогою функцій IIf та IsNull відображає пустий рядок, якщо елемент керування "Країна або регіон" має Null-значення. Інакше відображає значення елемента керування "Країна або регіон". |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
За допомогою функцій IIf та IsNull відображає значення елементів керування "Місто" й "Поштовий індекс", якщо елемент керування "Область" має Null-значення. В іншому випадку відображає значення полів або елементів керування "Місто", "Область" і "Поштовий індекс". |
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
За допомогою функцій IIf та IsNull відображає повідомлення "Можливо, дату не вказано", якщо різниця потрібної дати й дати доставки є Null-значенням. Інакше відображає інтервал між значеннями дати в елементах керування "Потрібна дата" й "Дата доставки". |
Запити та фільтри
Цей розділ містить приклади виразів, за допомогою яких можна створити обчислюване поле або вказати умови в запиті. Обчислюване поле – це стовпець у запиті, що є результатом виразу. Наприклад, ви можете обчислити значення, поєднати текстові значення, як-от імена та прізвища, або відформатувати частину дати.
Щоб обмежити записи, з якими ви працюєте, додайте умову до запиту. Наприклад, скориставшись оператором Between, ви можете ввести дати початку й завершення та обмежити результати запиту замовленнями, доставленими в період між цими датами.
Нижче наведено приклади виразів для використання в запитах.
Операції з текстом
Вирази з таблиці нижче створюють обчислюване поле за допомогою операторів & і + (об’єднують текстові рядки), вбудованих функцій (обробляють текстовий рядок) та інших операцій із текстом.
Вираз |
Опис |
---|---|
FullName: [FirstName] & " " & [LastName] |
Створює поле "Повне ім’я", яке відображає значення полів "Ім’я" та "Прізвище" з пробілом між ними. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
Створює поле "Адреса2", яке відображає значення полів "Місто", "Область" і "Поштовий індекс" із пробілами між ними. |
ProductInitial: Left([ProductName], 1) |
Створює поле "Перша буква товару", а потім за допомогою функції Left відображає в ньому перший символ значення в полі "Назва товару". |
TypeCode: Right([AssetCode], 2) |
Створює поле "Код типу", а потім за допомогою функції Right відображає в ньому останні два символи значень у полі "Код активу". |
AreaCode: Mid([Phone],2,3) |
Створює поле "Код міста", а потім за допомогою функції Mid відображає в ньому три символи, починаючи з другого символу значення в полі "Телефон". |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 |
Призначає обчислюваному полю ім’я "Розширена ціна" та використовує функцію CCur для обчислення загальної суми елемента рядка з урахуванням знижки. |
Арифметичні операції
Вирази дають змогу додавати, віднімати, множити й ділити значення з кількох полів або елементів керування. Арифметичні операції також можна виконувати над датами. Наприклад, припустімо, у вас є поле типу "Дата й час" із назвою "Потрібна дата". Вираз =[RequiredDate] - 2 повертає значення дати й часу, що на два дні раніше, ніж значення в полі "Потрібна дата".
Вираз |
Опис |
---|---|
PrimeFreight: [Freight] * 1.1 |
Створює поле "Підвищена вартість доставки", а потім відображає в ньому вартість доставки плюс 10 відсотків. |
OrderAmount: [Quantity] * [UnitPrice] |
Створює поле "Обсяг замовлення", а потім відображає в ньому добуток значень у полях "Кількість" і "Ціна за одиницю". |
LeadTime: [RequiredDate] - [ShippedDate] |
Створює поле "Час випередження", а потім відображає в ньому різницю значень у полях "Потрібна дата" та "Дата доставки". |
TotalStock: [UnitsInStock]+[UnitsOnOrder] |
Створює поле "Загальна кількість запасів", а потім відображає в ньому суму значень у полях "Одиниць на складі" та "Одиниць замовлено". |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Створює поле "Відсоток вартості доставки", а потім відображає в ньому відсоткове значення платежів за доставку в кожному проміжному підсумку. У цьому виразі за допомогою функції Sum підсумовуються значення в полі "Вартість доставки", а потім отриманий результат ділиться на суму значень у полі "Проміжний підсумок". Щоб скористатися цим виразом, знадобиться перетворити вибірковий запит на запит підсумків, тому що вам потрібно використовувати рядок Усього на бланку та задати значення Вираз для клітинки Усього цього поля. Докладні відомості про створення запиту підсумків див. в статті Обчислення суми даних із використанням запиту. Якщо для властивості Формат поля встановлено значення Відсотковий, приберіть частину *100. |
Докладні відомості про використання агрегатних функцій і підсумовування значень у полях і стовпцях див. в статтях Обчислення суми даних із використанням запиту, Обчислення даних із використанням запиту, Відображення підсумків стовпців даних у табличному поданні за допомогою рядка підсумків і Відображення підсумків стовпців даних у табличному поданні.
Операції з датами
Майже всі бази даних зберігають і відстежують дати й час. Щоб працювати з датами й часом у програмі Access, потрібно встановити для полів дати й часу в таблицях тип даних "Дата й час". В Access можна виконувати арифметичні обчислення над датами. Наприклад, ви можете обчислити, скільки днів минуло з дати рахунка-фактури, щоб визначити термін дебіторської заборгованості.
Вираз |
Опис |
---|---|
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) |
Створює поле "Час затримки", а потім за допомогою функції DateDiff відображає в ньому кількість днів між датою замовлення та датою доставки. |
YearHired: DatePart("yyyy",[HireDate]) |
Створює поле "Рік найму", а потім за допомогою функції DatePart відображає в ньому рік, коли найнято кожного працівника. |
MinusThirty: Date( )- 30 |
Створює поле "Мінус тридцять", а потім за допомогою функції Date відображає в ньому дату, що на 30 днів передує поточній. |
Агрегатні функції SQL
Вирази в таблиці нижче використовують функції SQL (мова структурованих запитів), щоб агрегувати й підсумовувати дані. Ці функції (наприклад, Sum, Count і Avg) часто називають агрегатними.
Окрім звичайних агрегатних функцій, в Access також передбачено агрегатні функції "домену", за допомогою яких можна підсумувати або обчислити значення вибірково. Наприклад, ви можете порахувати значення лише в певному діапазоні або взяти значення з іншої таблиці. До доменних агрегатних функцій належать DSum, DCount і DAvg.
Щоб обчислити загальну суму, часто потрібно створити запит підсумків (наприклад, щоб підсумувати значення групи). Щоб увімкнути запит підсумків із бланка запиту, у меню Подання виберіть елемент Підсумки.
Вираз |
Опис |
---|---|
RowCount: Count(*) |
Створює поле "Кількість рядків", а потім за допомогою функції Count рахує кількість записів у запиті, зокрема записи з пустими полями (з Null-значенням). |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Створює поле "Відсоток вартості доставки", а потім обчислює відсоткове значення платежів за доставку в кожному проміжному підсумку, поділивши суму значень у полі "Вартість доставки" на суму значень у полі "Проміжний підсумок". (У цьому прикладі використовується функція Sum). Цей вираз потрібно використовувати із запитом підсумків. Якщо для властивості Формат поля встановлено значення Відсотковий, приберіть частину *100. Докладні відомості про створення запиту підсумків див. в статті Обчислення суми даних із використанням запиту. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
Створює поле "Середня вартість доставки", а потім за допомогою функції DAvg обчислює середню вартість доставки для всіх замовлень, об’єднаних у запиті підсумків. |
Поля, у яких відсутні дані
Наведені тут вирази працюють із полями, у яких потенційно відсутні відомості, наприклад, які містять Null-значення (невідомі або невизначені значення). Ви часто стикаєтеся з Null-значеннями: це може бути невідома ціна нового товару або значення, яке ваші колеги забули додати до замовлення. Можливість знаходити й обробляти Null-значення може бути критично важливою частиною операцій баз даних, а вирази в наведеній нижче таблиці демонструють деякі з поширених способів обробки Null-значень.
Вираз |
Опис |
---|---|
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) |
Створює поле "Поточна країна або регіон", а потім за допомогою функцій IIf та IsNull відображає пустий рядок у цьому полі, якщо поле "Країна або регіон" містить Null-значення. В іншому випадку відображає вміст поля "Країна або регіон". |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Створює поле "Час випередження", а потім за допомогою функцій IIf та IsNull відображає повідомлення "Можливо, дату не вказано", якщо поле "Потрібна дата" або "Дата доставки" має Null-значення. Інакше відображає різницю дат. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
Створює поле "Збут за півріччя", а потім відображає в ньому підсумок значень полів "Збут за I квартал" і "Збут за II квартал", спершу перетворивши всі Null-значення на нуль за допомогою функції Nz. |
Обчислювані поля з вкладеними запитами
Обчислюване поле також можна створити за допомогою вкладеного запиту, або підзапиту. Вираз у таблиці нижче – це один із прикладів обчислюваного поля, створеного на основі підзапиту.
Вираз |
Опис |
---|---|
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) |
Створює поле "Категорія", а потім відображає в ньому ім’я категорії, якщо поля "Код категорії" в таблицях "Категорії" та "Товари" однакові. |
Зіставлення текстових значень
Приклади виразів у цій таблиці демонструють умови, які повністю або частково відповідають текстовим значенням.
Поле |
Вираз |
Опис |
---|---|---|
Місто доставки |
"London" |
Відображає замовлення, доставлені до Києва. |
Місто доставки |
"London" Or "Hedge End" |
За допомогою оператора Or відображає замовлення, доставлені до Києва або Білої Церкви. |
Країна або регіон доставки |
In("Canada", "UK") |
За допомогою оператора In відображає замовлення, доставлені до Польщі або України. |
Країна або регіон доставки |
Not "USA" |
За допомогою оператора Not відображає замовлення, доставлені до всіх країн або регіонів, крім Росії. |
Назва товару |
Not Like "C*" |
За допомогою оператора Not і символу узагальнення * відображає товари, назви яких не починаються з букви С. |
Назва компанії |
>="N" |
Відображає замовлення, доставлені до компаній, назви яких починаються з букв від N до Z. |
Код товару |
Right([ProductCode], 2)="99" |
За допомогою функції Right відображає замовлення зі значеннями "Код товару", які закінчуються на 99. |
Одержувач |
Like "S*" |
Відображає замовлення, доставлені до клієнтів, імена яких починаються з букви "С". |
Зіставлення умов дат
Вирази в таблиці нижче демонструють використання дат і пов’язаних функцій у виразах умов. Докладні відомості про введення та використання значень дат див. в статті Введення значення дати або часу.
Поле |
Вираз |
Опис |
---|---|---|
Дата доставки |
#2/2/2017# |
Відображає замовлення, доставлені 2 лютого 2017 р. |
Дата доставки |
Date() |
Відображає замовлення, доставлені сьогодні. |
Потрібна дата |
Between Date( ) And DateAdd("m", 3, Date( )) |
За допомогою оператора Between...And та функцій DateAdd і Date відображає замовлення за тримісячний період від сьогоднішньої дати. |
Дата замовлення |
< Date( ) - 30 |
За допомогою функції Date відображає замовлення, зроблені понад 30 днів тому. |
Дата замовлення |
Year([OrderDate])=2017 |
За допомогою функції Year відображає замовлення, зроблені у 2017 р. |
Дата замовлення |
DatePart("q", [OrderDate])=4 |
За допомогою функції DatePart відображає замовлення за четвертий календарний квартал. |
Дата замовлення |
DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 |
За допомогою функцій DateSerial, Year та Month відображає замовлення за останній день кожного місяця. |
Дата замовлення |
Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) |
За допомогою функцій Year та Month і оператора And відображає замовлення за поточний рік і місяць. |
Дата доставки |
Between #1/5/2017# And #1/10/2017# |
За допомогою оператора Between...And відображає замовлення, доставлені не раніше 5 січня 2017 р. та не пізніше 10 січня 2017 р. |
Потрібна дата |
Between Date( ) And DateAdd("M", 3, Date( )) |
За допомогою оператора Between...And відображає замовлення за тримісячний період від сьогоднішньої дати. |
Дата народження |
Month([BirthDate])=Month(Date()) |
За допомогою функцій Month і Date відображає працівників, дні народження яких припадають на цей місяць. |
Пошук відсутніх даних
Вирази в таблиці нижче мають справу з полями, які містять потенційно відсутні дані, тобто полями, які можуть містити Null-значення або рядок нульової довжини. Null-значення позначає відсутність інформації. Це не нуль і ніяке інше значення. Програма Access підтримує поняття відсутньої інформації, тому що це важливо для цілісності бази даних. У реальному світі ми часто чогось не знаємо, навіть якщо це лише тимчасово (наприклад, поки що не визначену ціну на новий товар). Таким чином, у базі даних, яка моделює реальну сутність, як-от компанію, має бути змога записувати дані як відсутні. Щоб дізнатися, чи поле або елемент керування містить Null-значення, можна скористатися функцією IsNull, а щоб перетворити Null-значення на нуль – функцією Nz.
Поле |
Вираз |
Опис |
---|---|---|
Регіон доставки |
Is Null |
Відображає замовлення для клієнтів, для яких поле "Регіон доставки" має Null-значення (пусте). |
Регіон доставки |
Is Not Null |
Відображає замовлення для клієнтів, для яких поле "Регіон доставки" має якесь значення. |
Факс |
"" |
Відображає замовлення для клієнтів, які не мають факсимільного пристрою, що позначено значенням рядка нульової довжини в полі "Факс", а не Null-значенням (відсутнім значенням). |
Зіставлення шаблонів записів за допомогою оператора Like
Оператор Like дуже зручний, коли потрібно дібрати рядки за певним шаблоном, оскільки з цим оператором можна використовувати символи узагальнення та визначити шаблони, з якими має звірятись Access. Наприклад, символ узагальнення * (зірочка) відповідає послідовності символів будь-якого типу та дає змогу знайти всі імена, які починаються з певної букви. Наприклад, за допомогою виразу Like "S*" можна знайти всі імена, які починаються з букви "S". Докладні відомості див. в статті Оператор Like.
Поле |
Вираз |
Опис |
---|---|---|
Одержувач |
Like "S*" |
Знаходить усі записи в полі "Отримувач", які починаються з букви С. |
Отримувач |
Like "*Imports" |
Знаходить усі записи в полі "Отримувач", які закінчуються словом "імпорт". |
Одержувач |
Like "[A-D]*" |
Знаходить усі записи в полі "Одержувач", які починаються з букви А, Б, В або Г. |
Одержувач |
Like "*ar*" |
Знаходить усі записи в полі "Одержувач", які містять буквосполучення "но". |
Отримувач |
Like "Богдан Козя?" |
Знаходить усі записи в полі "Отримувач", які містять слово "Богдан", після якого йде рядок із п’яти букв, перші чотири з яких – це "Козя", а остання буква не відома. |
Отримувач |
Not Like "A*" |
Знаходить усі записи в полі "Одержувач", які не починаються з букви А. |
Зіставлення рядків за допомогою агрегатних функцій SQL
Доменна агрегатна функція використовується, коли потрібно обчислити суму, підрахувати кількість або знайти середнє значення вибірково. Наприклад, ви можете порахувати лише ті значення, які містяться в певному діапазоні або дорівнюють "Так". В інших випадках може знадобитися шукати значення з іншої таблиці, щоб відобразити його. Приклади виразів у таблиці нижче за допомогою доменних агрегатних функцій обчислюють набір значень, щоб використати результат як умову запиту.
Поле |
Вираз |
Опис |
---|---|---|
Вартість доставки |
> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
За допомогою функцій DStDev і DAvg відображає всі замовлення, для яких вартість доставки перевищує суму середнього значення та стандартного відхилення для вартості доставки. |
Кількість |
> DAvg("[Quantity]", "[Order Details]") |
За допомогою функції DAvg відображає товари, замовлені в кількості, що перевищує середню кількість замовлення. |
Зіставлення полів за допомогою вкладених запитів
Значення для умови можна обчислити за допомогою підзапиту, або вкладеного запиту. Приклади виразів у таблиці нижче підбирають рядки на основі результатів, які повертає підзапит.
Поле |
Вираз |
Відображення |
---|---|---|
Ціна за одиницю |
(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
Товари з такою ж ціною, що й анісовий сироп. |
Ціна за одиницю |
>(SELECT AVG([UnitPrice]) FROM [Products]) |
Товари, ціна за одиницю яких вища середньої. |
Оклад |
> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
Оклад кожного торгового представника, чий оклад перевищує оклад усіх працівників зі словом "Керівник" або "Віце-президент" у посаді. |
Вартість замовлення: [Ціна за одиницю] * [Кількість] |
> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) |
Замовлення, вартість яких перевищує середнє значення замовлення. |
Оновлення запитів
Запит на оновлення використовується, щоб змінити дані в одному або кількох наявних полях у базі даних. Наприклад, ви можете замінити значення або повністю видалити їх. У цій таблиці показано кілька способів використання виразів у запитах на оновлення. Ці вирази використовуються в рядку Оновлення до бланка запиту для поля, яке потрібно оновити.
Докладні відомості про створення запитів на оновлення див. в статті Створення й виконання запиту на оновлення.
Поле |
Вираз |
Результат |
---|---|---|
Заголовок |
"Salesperson" |
Змінює текстове значення на "Торговий представник". |
Початок проекту |
#8/10/17# |
Змінює значення дати на 10 серпня 2017 р. |
Закрито |
Yes |
У полі типу "Так/Ні" змінює значення "Ні" на "Так". |
Номер партії |
"PN" & [PartNumber] |
Додає "НП" до початку номера кожної вказаної партії. |
Підсумок для позиції |
[UnitPrice] * [Quantity] |
Множить ціну за одиницю товару на кількість. |
Вартість доставки |
[Freight] * 1.5 |
Збільшує вартість доставки на 50 відсотків. |
Збут |
DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
Якщо значення "Код товару" в поточній таблиці відповідають значенням "Код товару" в таблиці "Відомості про замовлення", оновлює загальний обсяг продажів на основі добутку кількості товару та ціни за одиницю. |
Поштовий індекс доставки |
Right([ShipPostalCode], 5) |
Видаляє крайні ліві символи, залишаючи п’ять символів праворуч. |
Ціна за одиницю |
Nz([UnitPrice]) |
Замінює Null-значення (невизначене або невідоме) у полі "Ціна за одиницю" на нуль (0). |
Інструкції SQL
Мова структурованих запитів, або SQL, – це мова запитів, що використовується в Access. Кожен запит, створений у режимі конструктора запиту, можна виразити за допомогою мови SQL. Щоб переглянути SQL-оператор для будь-якого запиту, у меню Подання виберіть елемент Режим SQL. У таблиці нижче наведено приклади інструкцій SQL із виразами.
Інструкція SQL із виразом |
Результат |
---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
Відображає значення в полях "Ім’я" та "Прізвище" для працівників із прізвищем "Герасименко". |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
Відображає значення в полях "Ідентифікатор товару" та "Назва товару" в таблиці "Товари" для записів, у яких значення "Ідентифікатор категорії" відповідає значенню "Ідентифікатор категорії" з відкритої форми "Нові товари". |
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; |
Обчислює середню розширену ціну для замовлень, у яких значення поля "Розширена ціна" перевищує 1000, а потім відображає її в полі під назвою "Середня розширена ціна". |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
У полі "Кількість кодів товару" відображається загальна кількість товарів для категорій, у яких понад 10 товарів. |
Вирази таблиці
Два найпоширеніші способи використання виразів у таблиці – призначення стандартного значення та створення правила перевірки.
Стандартні значення полів
Створюючи базу даних, можна призначити стандартне значення для поля або елемента керування. Тоді, коли буде створено новий запис із цим полем або об’єкт із цим елементом керування, програма Access надаватиме вказане стандартне значення. У таблиці нижче наведено приклади виразів стандартних значень для поля або елемента керування. Якщо елемент керування прив’язано до поля в таблиці, а поле має стандартне значення, то це стандартне значення елемента керування має перевагу.
Поле |
Вираз |
Стандартне значення поля |
---|---|---|
Quantity |
1 |
1 |
Регіон |
"MT" |
Закарпаття |
Регіон |
"New York, N.Y." |
Сумська обл. (Зверніть увагу: значення з пунктуаційними знаками потрібно брати в лапки). |
Факс |
"" |
Рядок нульової довжини вказує, що за замовчуванням це поле має бути пустим, а не містити Null-значення |
Дата замовлення |
Date( ) |
Поточна дата |
Термін |
Date() + 60 |
Дата через 60 днів після сьогоднішньої |
Правила перевірки полів
За допомогою виразу можна створити правило перевірки для поля або елемента керування. Тоді програма Access застосовуватиме це правило, коли в поле або елемент керування вводитимуться дані. Щоб створити правило перевірки, потрібно змінити властивість ValidationRule поля або елемента керування. Крім того, радимо задати властивість ValidationText, яка містить текст, що відображається в разі порушення правила перевірки. Якщо не вказати властивість ValidationText, Access відображатиме стандартне повідомлення про помилку.
Приклади в наведеній нижче таблиці демонструють вирази правил перевірки для властивості ValidationRule і пов’язаний текст для властивості ValidationText.
Властивість ValidationRule |
Властивість ValidationText |
---|---|
<> 0 |
Введіть ненульове значення. |
0 Or > 100 |
Значення має дорівнювати 0 або бути більше за 100. |
Like "K???" |
Значення має складатися з чотирьох символів і починатися з букви "К". |
< #1/1/2017# |
Введіть дату до 01.01.2017. |
>= #1/1/2017# And < #1/1/2008# |
Дата має припадати на 2017 рік. |
Докладні відомості про перевірку даних див. в статті Створення правила перевірки для перевірки даних у полі.
Вирази макросу
Інколи потрібно виконати дію або послідовність дій макросу, лише якщо певна умова істинна. Наприклад, припустімо, що потрібно запускати дію, лише якщо значення текстового поля "Лічильник" становить 10. Вираз використовується для визначення умови в блоці Якщо:
[Counter]=10
Як і властивість ValidationRule , вираз у блоці Якщо є умовним виразом. Його результатом може бути значення True або False. Дія відбувається, лише коли умова повертає значення True.
Вираз для виконання дії |
If |
---|---|
[City]="Paris" |
Одеса – це значення міста в полі форми, з якої запущено макрос. |
DCount("[OrderID]", "Orders") > 35 |
У полі "Код замовлення" таблиці "Замовлення" є понад 35 записів. |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 |
У таблиці "Відомості про замовлення" є понад трьох записів, для яких поле "Код замовлення" таблиці відповідає полю "Код замовлення" у формі "Замовлення". |
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# |
Значення поля "Дата доставки" у формі, з якої запущено макрос, припадає на період від 2 лютого 2017 р. до 2 березня 2017 р. |
Forms![Products]![UnitsInStock] < 5 |
Значення поля "Одиниць на складі" у формі "Товари" менше за 5. |
IsNull([FirstName]) |
Поле "Ім’я" у формі, з якої запущено макрос, має Null-значення (значення відсутнє). Цей вираз еквівалентний виразу: [Ім’я] Is Null. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 |
Поле "Країна або регіон" у формі, з якої запущено макрос, має значення "Україна", а значення поля "Усього замовлень" у формі "Загальний обсяг збуту" перевищує 100. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 |
Поле "Країна або регіон" у формі, з якої запущено макрос, має значення "Франція", "Італія" або "Іспанія", а поштовий індекс не складається з 5 символів. |
MsgBox("Confirm changes?",1)=1 |
У діалоговому вікні, яке відобразить функція MsgBox, натисніть кнопку OK. Якщо в цьому діалоговому вікні натиснути кнопку Скасувати, Access пропустить дію. |