Функція IIf

Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Повертає одну з двох частин, залежно від результату обчислення виразу.

Ви можете використовувати IIf будь-які пристрої, де можна використовувати вирази. Використовується IIf для визначення істинності або хибності іншого виразу. Якщо значення виразу – True, IIf повертає одне значення. Якщо значення хибний, IIf повертає інше значення. Ви вказуєте значення, які IIf повертає.

Розглянемо кілька прикладів

Синтаксис

IIf(expr, truepart, falsepart)

Синтаксис IIf цих функцій має такі аргументи:

Аргумент Опис
expr Обов’язковий. Вираз, який потрібно обчислити.
truepart — обов’язковий аргумент. Значення або вираз, що повертається, якщо expr дорівнює True.
falsepart — обов’язковий аргумент. Значення або вираз, що повертається, якщо expr дорівнює False.

Примітки

IIf завжди оцінює і те, і truepartfalsepart, навіть якщо повертає лише одне з них. Через таку поведінку стежте за небажаними побічними ефектами. Наприклад, якщо результат обчислення falsepart призводить до помилки ділення на нуль, помилка виникає, навіть якщо expr це True.

Приклади

Використання IIf у формі або звіті

Припустімо, що у вас є Customers таблиця, яка містить поле з іменем CountryRegion. У формі потрібно показати, чи є італійська мовою для контакту. Можна додати елемент керування та використовувати IIf в його Control Source властивості:

=IIf([CountryRegion]="Italy", "Italian", "Some other language")

Якщо відкрити форму в поданні форми, елемент керування відображатиметься Italian щоразу після введення значення .CountryRegionItaly Він відображається Some other language будь-коли, має CountryRegion будь-яке інше значення.

Використання IIf в складних виразах

Ви можете використовувати будь-який вираз у будь-якій частині IIf інструкції. Можна також вкладати IIf вирази, що дає змогу обчислювати ряд залежних виразів. Щоб продовжити попередній приклад, можливо, потрібно перевірити кілька різних CountryRegion значень, а потім відобразити відповідну мову на основі цих значень:

=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))

Текст Some other language – це falsepart аргумент внутрішньої IIf функції. Оскільки кожна вкладена IIf функція є falsepart аргументом IIf функції, яка її містить, текст Some other language повертається лише тоді, коли всі expr аргументи IIf функції обчислюються як False.

У іншому прикладі робота проводиться, наприклад у бібліотеці. У базі даних бібліотеки міститься таблиця з іменем Check OutsDue Dateполя , що містить дату повернення певної книги. Можна створити форму, яка відображає стан елементів, взятих на редагування, в елементі керування за допомогою IIf функції у властивості цього елемента Control Source керування:

=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))

Якщо відкрити форму в поданні форми, елемент керування відображатиметься OVERDUE , якщо значення менше Due Date за поточну дату, Due today якщо воно дорівнює поточній даті та Not Yet Due навпаки.

Примітка.

Щоб використовувати логічні оператори, такі як AndOr or в expr аргументі IIf функції, необхідно вкласти логічний вираз у функцію Eval . Див. приклад таблиці нижче.

Використання IIf в запиті

Ця IIf функція часто використовується для створення обчислюваних полів у запитах. Синтаксис залишається той самий, тільки в запиті на початку кожного виразу необхідно додавати псевдонім поля і двокрапку (:) замість знака рівності (=). Щоб використати попередній приклад, введіть у рядок "Поле" на бланку запиту:

Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")

В даному випадку Language: це псевдонім поля.

Докладні відомості про створення запитів і обчислюваних полів див. в статті "Створення простого вибіркового запиту".

Використання IIf в коді VBA

Примітка.

У наведених нижче прикладах показано, як використовувати цю функцію в модулі Visual Basic for Applications (VBA). Щоб отримати докладні відомості про використання модуля VBA, у розкривному списку поряд із полем "Пошук" виберіть пункт "Довідник розробника", а потім введіть у поле пошуку принаймні один термін.

У цьому прикладі IIf функція використовується, щоб обчислювати TestMe параметр процедури, CheckIt і повертає слово Large , якщо сума перевищує 1000. Інакше вона повертає слово Small.

Function CheckIt(TestMe As Integer)
    CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

Додаткові приклади

  1. Вираз:

    =IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))
    

    Результат: Якщо [AirportCode] дорівнює "ORD", повертається "Chicago". У іншому випадку, якщо [AirportCode] є "ATL", повертається "Atlanta". У іншому випадку, якщо [AirportCode] є "SEA", повертається "Seattle". В іншому випадку return "Other".

  2. Вираз:

    =IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))
    

    Результат: Якщо [ShipDate] дата раніша за сьогоднішню, повернення "Shipped". У іншому випадку, якщо [ShipDate] дорівнює сьогоднішній даті, повертається "Shipping today"значення . В іншому випадку return "Unshipped".

  3. Вираз:

    =IIf([PurchaseDate]<#1/1/2008#,"Old","New")
    

    Результат: Якщо [PurchaseDate] раніша , 1/1/2008повертається "Old". В іншому випадку return "New".

  4. Вираз:

    =IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")
    

    Результат: Якщо [Volts] має значення між 12 і 15 діапазоном [Amps] від 0,25 до 0,3, повертається "OK"значення . В іншому випадку return "Out of calibration".

  5. Вираз:

    =IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")
    

    Результат: Якщо дорівнює , , або "Mexico", повертає "North America"значення . "USA""Canada"[CountryRegion] В іншому випадку return "Other".

  6. Вираз:

    =IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))
    

    Результат: Якщо [Average] дорівнює 90 або більше, повертається "A"значення . У іншому випадку, якщо [Average] 80 або більше, повертається "B". У іншому випадку, якщо [Average] 70 або більше, повертається "C"значення . У іншому випадку, якщо [Average] 60 або більше, повертається "D". В іншому випадку return "F".

Примітка.

Якщо функція використовується IIf для створення обчислюваного поля в запиті, замініть знак рівності (=) на псевдонім поля та двокрапку (:). Наприклад, Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).