Проверка существования переменной

Обсуждение Stimulsoft Reports.Java
Ответить
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

Проверка существования переменной

Сообщение Golland » 03 янв 2018, 14:14

Добрый день, подскажите пож., как можно проверить существует ли переменная(объявлена) в отчете. Возникла ситуация, когда на переменную ссылаются элементы отчета, но сама переменная была удалена раннее. Спасибо.
Vadim
Сообщения: 97
Зарегистрирован: 04 апр 2013, 08:26

Re: Проверка существования переменной

Сообщение Vadim » 04 янв 2018, 07:41

Здравствуйте

Код: Выделить всё

report.getDictionary().getVariables().get(variableName)
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

Re: Проверка существования переменной

Сообщение Golland » 04 янв 2018, 19:57

Добрый день. Вставил в текстоое поле синтаксис
{report.getDictionary().getVariables().get("Language")}
и получил ошибку

Jan 04, 2018 9:54:13 PM com.stimulsoft.report.engine.parser.StiParser ParseTextValue
WARNING: Parser error: The name 'report' does not exist in the current context
Jan 04, 2018 9:54:13 PM com.stimulsoft.report.engine.parser.StiParser checkForDataBandsUsedInPageTotals
WARNING: Expression in Text property of 'Text50' can't be evaluated! Parser error: The name 'report' does not exist in the current context
Jan 04, 2018 9:54:13 PM com.stimulsoft.base.utils.StiLoggingUtil showWarning
HighAley
Сообщения: 1955
Зарегистрирован: 08 июн 2011, 07:36

Re: Проверка существования переменной

Сообщение HighAley » 05 янв 2018, 10:07

Здравствуйте.

Не совсем понятна суть вашего вопроса.
Присланный нами код для проверки наличия переменной извне отчёта.
По логике работы с нашим продуктом, если вы делаете какие-то изменения с отчётом, по должны проверить его работоспособность.
После удаления переменной, вы получите ошибку, которая не позволит построить отчёт ещё на стадии его дизайна.

Спасибо.
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

Re: Проверка существования переменной

Сообщение Golland » 05 янв 2018, 10:14

Добрый день. Переменная вызывается динамически через this[VariableName]. Суть вопроса в том, можно ли до момента обращения к переменной проверить ее существование(объявление). Сделать это нужно в самом отчете посредством использования условия, IIF к примеру. Спасибо.
Ivan
Сообщения: 609
Зарегистрирован: 10 авг 2006, 01:40

Re: Проверка существования переменной

Сообщение Ivan » 11 янв 2018, 03:17

Здравствуйте.
Golland писал(а):Суть вопроса в том, можно ли до момента обращения к переменной проверить ее существование(объявление).
Проверить, объявлена ли переменная в словаре - нельзя, такой функциональности нет.
Но с помощью выражения this["VariableName"] можно получить значение переменной. При этом, если переменная в словаре не объявлена - вернётся значение null.
Хотя переменная типа string или object, которая не инициализирована, тоже вернёт null. Но в некоторых случаях этого бывает достаточно.
Чтобы дать какие-то более конкретные рекомендации - уточните, что именно вы потом будете с этой переменной делать.
Golland писал(а):Сделать это нужно в самом отчете посредством использования условия, IIF к примеру.
Необходимо уточнить, что IIF - это не условный оператор if, а функция, все аргументы которой рассчитываются до вызова функции.
Поэтому например проверка IIF(a!=0, b/a, c) не будет работать и выдаст ошибку при a==0, т.к. выражение b/a будет рассчитываться всегда.
В этом случае надо использовать тернарную операцию: a!=0 ? b/a : c
Только есть нюанс: тернарная операция будет правильно работать только в следующем билде, на данный момент её синтаксис распознаётся, но реализована она через IIF.

Спасибо.
Ответить