Программного потока: различия между версиями
Внешний вид
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) Нет описания правки |
||
| (не показано 6 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
Функция '''IIF''' (''Immediate IF - Немедленное Если'') имеет структуру <code>=IIF(Выражение_условия, Значение_если_истина, Значение_если_ложь)</code>. | '''Функции программного потока''' - функции для управления логикой и программным потоком в выражениях. | ||
Позволяют реализовать условный выбор данных, создавать сложные ветвления и группировать значения по интервалам. | |||
Использование функций программного потока минимизирует объем кода, позволяя динамически изменять результат вычислений в зависимости от входных условий или индексов. | |||
{|class="wikitable" style="margin:auto; background-color: #fff;" | |||
|- | |||
!Имя функции | |||
!Описание | |||
!Пример | |||
|- | |||
|Choose | |||
|Возвращает данные из массива по номеру (индексу) | |||
|<code>Choose(<Index>,<Value>[, <Value2>,...[, <Value N>]])</code><br><code>=Choose(3, "10", "15", "20", "25")</code> | |||
|- | |||
|IIF | |||
|Возвращает первую часть выражения, если выполняется условие; вторую если условие не выполнилось | |||
|<code>IIF(<Condition>, <TruePart>, <FalsePart>)</code><br><code>=IIF(Fields!AnnualSales.Value >= 80000, "Above Average", "Below Average")</code> | |||
|- | |||
|Partition | |||
|Возвращает строку, перерассчитанную на специальном интервале. | |||
|<code>Partition(<Value>, <Start>, <End>, <Interval>)</code><br><code>=Partition(1999, 1980, 2000, 10)</code> | |||
|- | |||
|Switch | |||
|Возвращает данные из массива по условию | |||
|<code>Switch(<Condition1>, <Value1>[, <Condition2>, <Value2>,...[,<ConditionN>, <ValueN>]])</code><br><code>=Switch(Fields!FirstName.Value = "Abraham", "Adria", Fields!FirstName.Value = "Charelotte", "Cherrie")</code> | |||
|- | |||
|} | |||
==IIF== | |||
Функция '''IIF''' (''Immediate IF - Немедленное Если'') - имеет структуру <code>=IIF(Выражение_условия, Значение_если_истина, Значение_если_ложь)</code>. | |||
===Пример использования в ячейке:=== | ===Пример использования в ячейке:=== | ||
| Строка 5: | Строка 37: | ||
===Пояснения:=== | ===Пояснения:=== | ||
*если в поле <code>Fields!func.Value</code> ничего нет (проверяется функцией <code>IsNothing()</code>), то в ячейку будет помещен символ прочерка <code>-</code>; *иначе (если поле не пустое) будет размещено значение поля <code>Fields!func.Value</code>. | *если в поле <code>Fields!func.Value</code> ничего нет (проверяется функцией <code>IsNothing()</code>), то в ячейку будет помещен символ прочерка <code>-</code>; | ||
*иначе (если поле не пустое) будет размещено значение поля <code>Fields!func.Value</code>. | |||
==Select Case== | |||
Конструкция '''Select Case''' (аналог оператора ''switch'') - используется, когда необходимо сравнить одну переменную с несколькими возможными значениями или диапазонами значений. | |||
===Принцип работы на примере:=== | |||
<syntaxhighlight lang="vb"> | |||
Select Case ResultDate | |||
Case 1 | |||
ResultString = " год" | |||
Case 2 To 4 | |||
ResultString = " года" | |||
Case Else | |||
ResultString = " лет" | |||
End Select | |||
</syntaxhighlight> | |||
*в конструкцию подставляется главное выражение (в данном случае это <code>ResultDate</code>); | |||
*значение этого выражения последовательно сравнивается со значениями, указанными после каждого ключевого слова <code>Case</code> (в первом случае с 1; во втором – с диапазоном от 2 до 4 включительно; все остальные значения, не попавшие в первых два <code>Case</code> автоматически перенаправляются в последний вариант <code>Case Else</code>); | |||
*как только найдено совпадение, выполняется код внутри соответствующего блока <code>Case</code> и работа конструкции завершается. | |||
Текущая версия от 08:42, 20 февраля 2026
Функции программного потока - функции для управления логикой и программным потоком в выражениях.
Позволяют реализовать условный выбор данных, создавать сложные ветвления и группировать значения по интервалам.
Использование функций программного потока минимизирует объем кода, позволяя динамически изменять результат вычислений в зависимости от входных условий или индексов.
| Имя функции | Описание | Пример |
|---|---|---|
| Choose | Возвращает данные из массива по номеру (индексу) | Choose(<Index>,<Value>[, <Value2>,...[, <Value N>]])=Choose(3, "10", "15", "20", "25")
|
| IIF | Возвращает первую часть выражения, если выполняется условие; вторую если условие не выполнилось | IIF(<Condition>, <TruePart>, <FalsePart>)=IIF(Fields!AnnualSales.Value >= 80000, "Above Average", "Below Average")
|
| Partition | Возвращает строку, перерассчитанную на специальном интервале. | Partition(<Value>, <Start>, <End>, <Interval>)=Partition(1999, 1980, 2000, 10)
|
| Switch | Возвращает данные из массива по условию | Switch(<Condition1>, <Value1>[, <Condition2>, <Value2>,...[,<ConditionN>, <ValueN>]])=Switch(Fields!FirstName.Value = "Abraham", "Adria", Fields!FirstName.Value = "Charelotte", "Cherrie")
|
IIF
Функция IIF (Immediate IF - Немедленное Если) - имеет структуру =IIF(Выражение_условия, Значение_если_истина, Значение_если_ложь).
Пример использования в ячейке:
=IIF(IsNothing (Fields!func.Value), "-", Fields!func.Value)
Пояснения:
- если в поле
Fields!func.Valueничего нет (проверяется функциейIsNothing()), то в ячейку будет помещен символ прочерка-; - иначе (если поле не пустое) будет размещено значение поля
Fields!func.Value.
Select Case
Конструкция Select Case (аналог оператора switch) - используется, когда необходимо сравнить одну переменную с несколькими возможными значениями или диапазонами значений.
Принцип работы на примере:
Select Case ResultDate
Case 1
ResultString = " год"
Case 2 To 4
ResultString = " года"
Case Else
ResultString = " лет"
End Select
- в конструкцию подставляется главное выражение (в данном случае это
ResultDate); - значение этого выражения последовательно сравнивается со значениями, указанными после каждого ключевого слова
Case(в первом случае с 1; во втором – с диапазоном от 2 до 4 включительно; все остальные значения, не попавшие в первых дваCaseавтоматически перенаправляются в последний вариантCase Else); - как только найдено совпадение, выполняется код внутри соответствующего блока
Caseи работа конструкции завершается.