У меня есть приглашение значения, которое ссылается на параметр Year_Parameter, и список с одним столбцом (выражение элемента данных), который ссылается на тот же параметр, что и приглашение значения, таким образом:
#prompt('Year_Parameter')#
В приглашении значения есть несколько статических вариантов выбора: 2011, 2012 и 2013. Следовательно, когда я запускаю свой отчет и ввожу 2012 на странице приглашения, которая появляется перед отображением страницы отчета, 2012 автоматически выбирается в приглашении значения из его список вариантов при отображении страницы отчета.
Кроме того, если я помещаю 2012 в список выбора по умолчанию, страница подсказки не отображается, и 2012 также теперь автоматически выбирается для подсказки значения при отображении отчета.
Однако, если я удалю 2012 год из списка выбранных по умолчанию и изменю свое выражение элемента данных на любое из этих выражений:
#prompt('Year_Parameter', 'token', '2012')#
#prompt('Year_Parameter', 'token', 2012)#
#prompt('Year_Parameter', 'string', 2012)#
#prompt('Year_Parameter', 'string', '2012')#
... ни одна страница приглашения не появляется, как когда 2012 был указан в качестве выбора по умолчанию, но значение для приглашения значения не выбирается автоматически. В подсказке значения отображается текст заголовка по умолчанию: имя параметра - Year_Parameter ".
Помните определение функции подсказки:
подсказка (имя_прошивки, тип данных, текст по умолчанию, текст, элемент запроса, конечный_текст)
Кто-нибудь знает, почему это происходит, и, что более важно, решение того, как выбрать вариант по умолчанию для запроса значения, указав его в выражении элемента данных?
Это потому, что макрос prompt () пытается получить только значение параметра Year_Parameter, но сам по себе не заполняет параметр значением? Параметр должен быть задан в виде подсказки значения (на странице подсказки или встроен в страницу отчета).
Следовательно, аргумент defaultText для функции подсказки НИКОГДА не будет заполнять сам параметр, но будет возвращен этой конкретной функцией подсказки в тех случаях, когда параметр не имеет (действительного) значения?
Заранее большое спасибо за любой вклад!
Изменить: нашел это объяснение о том, как динамически назначать значение по умолчанию для параметров.
http://cognosknowhow.blogspot.no/2013/04/how-to-dynamically-set-up-default-value.html
Финал: я использовал следующий Javascript для динамического выбора запроса значения и обновления отчета:
<script type="text/javascript">
// This function updates the report dynamically for the current year
// The function is wrapped inside a setTimeout call in order to avoid an error caused by too frequent requests
setTimeout(function updatePrompt() {
var oCR = cognos.Report.getReport("_THIS_");
var yearPrompt = oCR.prompt.getControlByName("YearPrompt");
var selectedValue = yearPrompt.getValues()[0];
if (typeof selectedValue === "undefined") {
currentYear = new Date().getFullYear();
yearPrompt.setValues([{'use':currentYear}]);
// Update report
oCR.sendRequest(cognos.Report.Action.FINISH);
}
}, 50);
</script>