IBM Cognos 最佳实践: IBM Cognos BI - 用 JavaScript 限制 Tree Prompt 选择

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

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

Robert Hendriks, 管理顾问 —— 业务智能化和性能管理, IBM

Robert Hendriks(PMP)是 IBM Business Analytics and Optimization 服务的管理顾问。他有 4 年多从事 IBM Cognos 产品的经验,并从 IBM Cognos 获得了报表和数据建模方面的认证。



2011 年 6 月 02 日

免费下载: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 - 选择包对象
  5. 单击 OK,然后单击 Finish。
  6. 在提示页面上选择 Tree 提示,然后在 Properties 面板中 Miscellaneous 下面的 Name 属性中输入 MyTreePrompt。后续步骤中使用的 JavaScript 代码将引用这个名称。
  7. 在提示页面中添加一个 HTML 对象。
    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 对象
  11. 双击 HTML 对象并在其中添加以下代码:
    <input type="button" class="bp" value="Finish" onClick="getSelectedTreeLevel()"/>
  12. 运行报表,然后单击 Finish 按钮。
    JavaScript 警告 - You must make a selection
  13. 单击 OK,从季度层选择一个成员,然后单击 Finish。
    JavaScript 警告 - Select a Month for this Report
  14. 单击 OK,从月份层选择一个成员,然后单击 Finish。
    经过筛选的交叉表报表
    报表运行并根据 tree prompt 选择筛选报表。

参考资料

学习

获得产品和技术

讨论

  • 参与 developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


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