Show/Hide Toolbars

Руководство администратора

Использование тернарного оператора вместо IIf

Ссылки Назад Вверх Вперед

При проверке пустых значений (null) вместо встроенной условной функции IIf() удобнее использовать тернарный оператор:

  <булево условие> ? <выражение, которое вычисляется если условие = true> : <выражение, которое вычисляется если условие = false>

На примере со скриншота ниже результатом выражения будет прочерк если дата пустая (null), а если дата не пустая, то она будет отформатирована.

fr_period_expression

Проверка пустого значения при форматировании.

Например, для формирования строки с периодом можно использовать такое выражение:

за период с [IsNull("FilterPeriodFrom")?"-":FormatDateTime([FilterPeriodFrom])] по [IsNull("FilterPeriodTo")?"-":FormatDateTime([FilterPeriodTo])]

Преимущество тернарного оператора

При использовании функции IIf() сначала вычисляются все три выражения (булево условие, выражение для true и выражение для false), а затем выбирается нужное выражение в зависимости от условия. Таким образом, если вы хотите отформатировать дату, как в примере выше, то для значения null форматирование вызовет ошибку. При использовании тернарного оператора сначала вычисляется условие, а потом, в зависимости от него, вычисляется только одно из двух выражений. Поэтому для значения null форматирование не будет выполнено, и ошибка не возникнет.