IBM Cognos 最佳实践

IBM Cognos BI - 用 JavaScript 限制 Tree Prompt 选择

文档性质:技巧或技术;产品:IBM Cognos 8 BI Report Studio;关注领域:报表设计

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: IBM Cognos 最佳实践

敬请期待该系列的后续内容。

此内容是该系列的一部分:IBM Cognos 最佳实践

敬请期待该系列的后续内容。

免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 8 Business Intelligence Developer Edition V8.4 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

目的

报表开发人员可能希望使用 Tree Prompt,但是需要把提交的值限制为层次结构中指定的层,本文档介绍的技术可以满足这一需求。

适用性

此技术适用于 IBM Cognos 8.3 SP3+、8.4、8.4.1 和 10.1,使用产品附带的 Great Outdoor Sales (cube) 示例。

假定条件

本文档假设读者有在 IBM Cognos Report Studio 中开发多维报表的经验。

例外与除外责任

此技术只适用于单选的 tree prompts。

此技术需要使用 IBM Cognos BI 中无文档记载和不支持的功能。在以后的版本中对这些功能的支持可能会改变或完全取消。

创建此技术只是证明概念;没有覆盖所有使用场景。在 IBM Cognos BI 系统中使用此技术之前,应该进行彻底的测试。

概述

Tree Prompts 在多维报表中使用,它让用户可以提交来自多维层次结构中显示的任何层的值。它是一个容易使用的图形界面,让用户在筛选报表时可以快速地指定他们关心的值。

可以使用一系列层叠的值提示替代 tree prompts,但是这不如使用 Tree Prompt 那么方便。

在某些情况下,希望用 tree prompt 选择值,但是要求只用特定的一层筛选报表。例如,一个报表在月份层上有筛选器。可以使用 tree prompts 让用户能够快速地经过年和季度层,到达想要的月份。在这些情况下,报表开发人员可能希望把通过 Tree Prompt 提交的值限制为多维层次结构中的某一层(在这里是月份层)。

用 JavaScript 限制 Tree Prompt 选择(详细步骤说明)

下面介绍一个实现 tree prompt 的示例,它使用 JavaScript 把成员选择限制在 Years 维度的月份层。

这个示例中的报表是一个简单的交叉表报表,以收入作为衡量,行上是产品线,列上有一个名为 Month 的查询计算(提示指定 Years 维层次结构中的一个月份)。

交叉表报表

Month 查询计算的表达式如下:

[great_outdoors_sales_en].[Years].[Years].[Month]->?Month?

按以下步骤在这个报表中添加把用户选择限制在月份层的 tree prompt:

  1. 在报表中添加一个提示页面。
  2. 在提示页面中添加一个 Tree Prompt。
  3. 在 Prompt Wizard 对话框中,选择 Use existing parameter,然后从下拉列表中选择 Month。
  4. 单击 Next,单击 Values to use 旁边的省略号 (...),然后选择 Years 维度下面的 Years 层次结构。这让 Tree 提示能够显示这个层次结构的所有成员。
    Prompt Wizard - 选择包对象
    Prompt Wizard - 选择包对象
  5. 单击 OK,然后单击 Finish。
  6. 在提示页面上选择 Tree 提示,然后在 Properties 面板中 Miscellaneous 下面的 Name 属性中输入 MyTreePrompt。后续步骤中使用的 JavaScript 代码将引用这个名称。
  7. 在提示页面中添加一个 HTML 对象。
    Prompt Wizard - 选择包对象
    Prompt Wizard - 选择包对象
  8. 双击 HTML 对象并在其中添加以下代码:
    <script> 
    function getSelectedTreeLevel() {
     if (window.treeMyTreePrompt) 
      { var selectedTreeNode = window.treeMyTreePrompt.getLastSelectedNode(); 
          if (selectedTreeNode!=null) 
           { var selectedLevel = 
                window.treeMyTreePrompt.getLastSelectedNode().getLevel(); 
               if (selectedLevel != 4)  
               //Set level number that should be selected for selectedLevel 
                  { alert("Select a Month for this Report"); 
                  //alert when wrong level is selected
              }else { promptButtonFinish(); } 
          }else { alert("You must make a selection"); } 
          //alert if no item has been selected
     }else { alert("treeMyTreePrompt is undefined");  } 
     //alert when no tree prompt with that name has been found
    } </script>
  9. 单击 OK。
  10. 在提示页面上,删除现有的 Finish 按钮并在它的位置上添加另一个 HTML 对象。
    提示按钮和新的 HTML 对象
    提示按钮和新的 HTML 对象
  11. 双击 HTML 对象并在其中添加以下代码:
    <input type="button" class="bp" value="Finish" onClick="getSelectedTreeLevel()"/>
  12. 运行报表,然后单击 Finish 按钮。
    JavaScript 警告 - You must make a selection
    JavaScript 警告 - You must make a selection
  13. 单击 OK,从季度层选择一个成员,然后单击 Finish。
    JavaScript 警告 - Select a Month for this Report
    JavaScript 警告 - Select a Month for this Report
  14. 单击 OK,从月份层选择一个成员,然后单击 Finish。
    经过筛选的交叉表报表
    报表运行并根据 tree prompt 选择筛选报表。

相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=677861
ArticleTitle=IBM Cognos 最佳实践: IBM Cognos BI - 用 JavaScript 限制 Tree Prompt 选择
publish-date=06022011