Доброго времени суток, уважаемые!
Делал отчёт и обнаружил, что команда IIF не работает, вернее работает некорректно.
В приложении сделал примитивный отчёт, который показывает ошибку:
Expression in Text property of 'Text1' can't be evaluated! startIndex cannot be larger than length of string. Parameter name: startIndex
В отчёте стоит выражение {IIF(BoolVar, Var1, Substring(Var1, 20, 5))}. При этом BoolVar = true, а Var1 = 'Тестовая строка' (15 символов).
Ошибка возникает, видимо по причине того, что IIF cначала вычисляет значение, которое выводится, если BoolVar = true, а потом сразу вычисляет (не понятно зачем, из-за этого и возникает ошибка) Substring(Var1, 20, 5), которое я поставил намеренно. То есть, если поставить туда Div или что-либо ещё, оно также будет вычисляться, что неправильно, т.к. вычисляться должна именно та часть, кот. подходит под условие (true или false), что логично.
Возможно неправильная работа IIF
Возможно неправильная работа IIF
- Вложения
-
- string_error.mrt
- (3.89 КБ) 307 скачиваний
Возможно неправильная работа IIF
Здравствуйте.
IIF и другие команды, которые можно использовать в выражениях - это функции.
В текстовом редакторе они и представлены в дереве в разделе Functions.
При вызове функции все аргументы рассчитываются до вызова функции, а уже потом передаются в функцию.
Поэтому вам необходимо модифицировать ваше условие, чтобы не возникало исключений:
или, если вы используете C#
Спасибо.
IIF и другие команды, которые можно использовать в выражениях - это функции.
В текстовом редакторе они и представлены в дереве в разделе Functions.
При вызове функции все аргументы рассчитываются до вызова функции, а уже потом передаются в функцию.
Поэтому вам необходимо модифицировать ваше условие, чтобы не возникало исключений:
Код: Выделить всё
{IIF(BoolVar, Var1 + new string(' ', 25), Substring(Var1, 20, 5))}
Код: Выделить всё
{BoolVar ? Var1 : Substring(Var1, 20, 5)}
Возможно неправильная работа IIF
Да, всё работает во втором варианте, т.е. с использованием тернарной операции.
{BoolVar ? Var1 : Substring(Var1, 20, 5)}
Благодарю за помощь!
{BoolVar ? Var1 : Substring(Var1, 20, 5)}
Благодарю за помощь!
Возможно неправильная работа IIF
Всегда рады помочь Вам.