IBM Cognos 最佳实践: 在 IBM Cognos 8 Report Studio 中使用 JavaScript 传递多个值给文本框提示

产品:IBM Cognos 8;关注领域:报表

这种技术使用 JavaScript 允许用户把多个值传递给 IBM Cognos 8 Report Studio 文本框提示。

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

简介

目的

这种技术使用 JavaScript 允许用户把多个值传递给 IBM Cognos 8 Report Studio 文本框提示。

适用性

本文档中的技术应该只用于关系数据源。

本文档描述的技术已通过以下软件检验过:

  • IBM Cognos 8.4.102.18-0,使用示例附带的 Go Sales (query) 包。

使用的无文档记载和不支持的功能

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

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


创建基本的提示报表

按以下步骤创建基本报表:

  1. 对于示例附带的 Go Sales (query) 包,打开 IBM Cognos 8 Report Studio。
  2. 选择 Create a New report or template。
  3. 出现提示时,选择 List 对象。
  4. 从左边的 Insertable Objects 面板,把 Go Sales (query)\Sales (query)\Branch\Branch code 拖放到列表中。
    图 1. IBM Cognos 8 Report Studio 列表报表,包含 Branch code 列
    IBM Cognos 8 Report Studio 列表报表,包含 Branch code 列
  5. 使用 View 菜单切换到 Prompt page 视图。
  6. 把 Page 对象从左边的 Insertable Objects 面板拖放到中间的 Prompt Pages 面板。
    图 2. IBM Cognos 8 Report Studio 在 Page Explorer 中显示 Prompt Page 1
    IBM Cognos 8 Report Studio 在 Page Explorer 中显示 Prompt Page 1
  7. 双击 Prompt Page 1 对象。
  8. 从左边的 Insertable Objects 面板,把 Value Prompt 对象拖放到提示页面中,这会打开 Prompt Wizard 对话框。
  9. 在 Prompt Wizard 对话框中,给参数指定名称。对于这个示例,参数名是 BranchCode。
    图 3. IBM Cognos 8 Report Studio 显示 BranchCode 参数的 Value Prompt Prompt Wizard
    IBM Cognos 8 Report Studio 显示 BranchCode 参数的 Value Prompt Prompt Wizard
  10. 单击 Next 按钮。
  11. 在 Prompt Wizard 对话框的 Create Filter 部分中,使用省略号按钮添加 [Sales (query)].[Branch].[Branch code] 包项。
  12. 使用下拉框把操作符由 = 改为 in。
    图 4. 值提示的 IBM Cognos 8 Report Studio Prompt Wizard,显示 in 操作符
    值提示的 IBM Cognos 8 Report Studio Prompt Wizard,显示 in 操作符
  13. 单击 Next 按钮。
  14. 单击 Finish 按钮返回到 Prompt Page 屏幕。
  15. 在左边的 Insertable Objects 面板中,找到 Text box Prompt 并把它拖放到前面添加的值提示的左边。
  16. 在 Prompt Wizard 对话框中,给参数指定名称。对于这个示例,名称是 BranchCodeTB。
  17. 单击 Finish 按钮返回到 Prompt Page 屏幕。
    图 5. IBM Cognos 8 Report Studio 显示提示页面,其中并排显示文本框和值提示
    IBM Cognos 8 Report Studio 显示提示页面,其中并排显示文本框和值提示
  18. 在提示页面中,通过单击突出显示文本框提示。
  19. 在左下方的 Properties 面板中,把名称 id2 添加到 Miscellaneous\Name 属性中。
    图 6. IBM Cognos 8 Report Studio 提示页面突出显示文本框提示
    IBM Cognos 8 Report Studio 提示页面突出显示文本框提示
  20. 在提示页面中,通过单击突出显示值提示。
  21. 在左下方的 Properties 面板中,把名称 id3 添加到 Miscellaneous\Name 属性中。

使用 JavaScript 替换 Finish 按钮

对于在把提示数据提交给报表之前检查数据,简便的方法是使用 JavaScript 替换生成的 Finish 按钮。步骤如下:

  1. 在提示页面的底部,突出显示 Finish 按钮并删除它。
  2. 在左边的 Insertable objects 面板中,找到 HTML 对象。
  3. 把 HTML 对象拖放到前面删除的 Finish 按钮的位置。
    图 7. IBM Cognos 8 Report Studio 提示页面显示替代 Finish 按钮的 HTML 工具箱对象
    IBM Cognos 8 Report Studio 提示页面显示替代 Finish 按钮的 HTML 工具箱对象
  4. 双击前面添加的 HTML 对象并添加以下代码:
    <input type="BUTTON" class="clsPromptButton" onClick="SplitText()" value=" Finish ">
  5. 单击 OK 按钮提交 HTML 代码。

添加 JavaScript 以解析文本提示值

  1. 在左边的 Insertable objects 面板中,找到 HTML 对象。
  2. 把 HTML 对象拖放到 Value Prompt 的右边。
    图 8. IBM Cognos 8 Report Studio 提示页面,在值提示旁边有一个 HTML 对象
    IBM Cognos 8 Report Studio 提示页面,在值提示旁边有一个 HTML 对象
  3. 双击这个 HTML 对象并添加以下代码:
    <script language="javascript">
    var fW = (typeof getFormWarpRequest == "function" ?
      getFormWarpRequest() : document.forms["formWarpRequest"]);
    if ( !fW || fW == undefined) { fW = ( formWarpRequest_THIS_ ?
      formWarpRequest_THIS_ : formWarpRequest_NS_ );}
    
    var var1=fW._textEditBoxid2;  //The visible text prompt
    var var2=fW._oLstChoicesid3; //The hidden multi-select value prompt
    
    function SplitText() 
    { 
    if ((var1.value=='')|| (var1.value==null))  //Check to see if values were entered
    {
    alert("No values were entered!  Please enter some values.");
    }
    else
    {
    var text_array=var1.value.split(" ");
      // Break out the value entered in the text prompt using the space as a separator
    var numberofsplits=0;
    while (numberofsplits < text_array.length)
    	{
    		for (var i=0;i < var2.length; i++)
    		 //Go through every value in the value prompt
    		{
    			if(var2[i].value==text_array[numberofsplits])
    			  //if the value from the text prompt is 
    			  //present in the value prompt select it
    			{
    				var2[i].selected=true;
    			}
    		}
    	numberofsplits++;	
          	}
    promptButtonFinish();
    }
    }
    </script>
  4. 单击 OK 按钮提交 HTML 代码。
  5. 运行报表,在文本框提示中输入以下字符串(不带引号)。
    "6 19 21"
  6. 单击 Finish 按钮提交输入的文本提示值。注意,使用在文本框中输入的值选择值提示中的值。然后,把在值提示中选择的值提交给报表。
  7. 现在,只需隐藏值提示。关闭 IBM Cognos Viewer,返回到 IBM Cognos 8 Report Studio。
  8. 在提示页面中,通过单击突出显示值提示。
  9. 在左下方的 Properties 面板中,把 Positioning\Visible 属性设置为 No。
    图 9. IBM Cognos 8 Report Studio 提示页面,突出显示值提示
    IBM Cognos 8 Report Studio 提示页面,突出显示值提示
  10. 再次运行报表,在文本框中输入以下字符串(不带引号)。
    "6 19 21"
  11. 单击 Finish 按钮。
    图 10. IBM Cognos 8 Report Viewer 以 HTML 格式显示生成的列表
    IBM Cognos 8 Report Viewer 以 HTML 格式显示生成的列表

参考资料

学习

获得产品和技术

讨论

  • 参与 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=677849
ArticleTitle=IBM Cognos 最佳实践: 在 IBM Cognos 8 Report Studio 中使用 JavaScript 传递多个值给文本框提示
publish-date=06022011