首页 文章

IBM Cognos Report Studio:从提示“default text”参数中选择值提示默认值

提问于
浏览
5

我有一个引用参数'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被指定为默认选择时,没有弹出提示页面,但是没有为值提示自动选择值 . 值提示显示其默认 Headers 文本:参数名称 - Year_Parameter“ .

记住提示函数定义:

prompt(prompt_name,datatype,defaultText,text,queryItem,trailing_text)

任何人都知道为什么会这样,更重要的是如何通过在数据项表达式中指定它来为如何选择值提示的默认选择的解决方案?

是因为prompt()宏只是尝试获取参数'Year_Parameter'的值,但是它本身不会用值填充参数?该参数必须由某个值提示符给出(在提示页面上或嵌入在报表页面中) .

因此,提示函数的defaultText参数将永远不会填充参数本身,但在参数没有(有效)值的情况下由此特定提示函数返回?

非常感谢您的任何输入!

编辑:找到有关如何为参数动态分配默认值的说明 .

http://cognosknowhow.blogspot.no/2013/04/how-to-dynamically-set-up-default-value.html

Final: 我最终使用以下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>

1 回答

  • 4

    确切地说,正如Skovly所说,提示宏无法填充参数的值 . 从提供的链接我选择javascipt(第一个选项),但请记住IBM将语法从版本更改为版本 .

    (我还不知道如何在答案上发表评论,否则我会将它附加到前一个评论中,以表明你不能用提示宏做你想做的事情) .

相关问题