壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 383|回复: 0

每个数据类型一个升序列,每个数据类型一个降序列

[复制链接]
发表于 2012/3/8 14:27:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
注意 (?OrderBy? = ‘2’)(?OrderBy? = ‘3’) 条件对换了位置。如果这没有解决问题,可能必须使用第二种排序方法。

解决所有错误之后,单击 OK 关闭对话框。您会注意到列表中添加了一个新的列。

选择这个新列的标题或内容。

在 Report Studio 工具栏中,单击排序图标并在下拉列表中选择 Sort Ascending

注意,现在此列中会出现图标,表示它将按升序排序。

对于降序排序列重复步骤 13.A.1 到 13.A.15,但是有几点不同:

给列指定不同的名称(例如 “Order By DESC”)。

Expression Definition 中把条件改为使用负数,例如:
  • IF (?OrderBy? = '-1') THEN
  •                     ([Retailer type code])
  •                 ELSE IF (?OrderBy? = '-3') THEN
  •                     ([Retailer code])
  •                 ELSE IF (?OrderBy? = '-2') THEN
  •                     ([Retailer type])
  •                 ELSE IF (?OrderBy? = '-4') THEN
  •                     ([Retailer name])
  •                 ELSE IF (?OrderBy? = '-5') THEN
  •                     ([Retailer name (multiscript)])
  •                 ELSE IF (?OrderBy? = '-6') THEN
  •                     ([Retailer start date])
  •                 ELSE (null)

复制代码


可以复制并粘贴升序列中的表达式,然后只需把条件中的值由正数改为负数。

在 sort 菜单中选择 Sort Descending

现在,在列表的末尾应该有两个新的列,如下所示:

图 11. IBM Cognos 8 Report Studio 列表,最后两列显示刚创建的两个计算


方法 B:每个数据类型一个升序列,每个数据类型一个降序列
第二种方法需要多做点儿工作,可能不那么简便,但是更可靠。在这种方法中,为查询中的每个数据类型创建两个列:一个用于升序排序,另一个用于降序排序。

因为无论选择哪种方法,概念都是相同的,所以按步骤 13.A.1 到 13.A.15 为列表中的每个数据类型创建一个升序排序列。需要考虑到以下不同之处:

给列指定一个有意义的名称。对于整数升序列,“Order By Int ASC” 这样的名称比较好。

修改表达式,让它只包含相同类型的项。例如,对于整数,表达式是:
  • IF (?OrderBy? = '1') THEN
  •                     ([Retailer type code])
  •                 ELSE IF (?OrderBy? = '3') THEN
  •                     ([Retailer code])
  •                 ELSE (null)

复制代码


注意,这里没有列出其他四个数据项。

为这个数据类型创建升序列之后,按步骤 13.A.16 为同一数据类型创建降序列。

对于列表中的所有数据类型重复步骤 13.B.1 到 13.B.2。对于这个示例,最终添加六个排序列:
下载 (18.35 KB)
2012-2-8 14:49




无论选择什么排序方法,都要隐藏排序列。选择排序列之一。
在左边的 Properties 面板中的标题区域中,单击 ancestors 图标。
在上下文菜单中,选择 List Column 对象。
Properties 面板中 Conditional 部分下面,双击 Render Variable
Variable 下拉列表中,选择 “Sorting Columns Rendering” 并单击 OK。
对于其他排序列重复步骤 15 到 19。
最后,可以添加最后一部分 —— 让列表能够动态排序的逻辑。进入左边的面板,单击工具箱选项卡。
Insertable Objects 面板中,向下滚动到接近底部。应该会看到 Column Sorting Function 和 Sortable Column Title 工具箱对象。
把 “Column Sorting Function” 拖放到列表上方。画布现在应该像下面这样。

图 12. 包含排序的列的列表对象,列表上方有另一个 html 项



为了使用排序功能,需要保存报表。保存报表。
返回到 Cognos Connection 门户(不要关闭 Report Studio),找到此报表。
Actions 栏下面,选择 Set properties 图标。
Set properties 窗口的 General 选项卡中,单击右边的链接 View the search path, ID and URL。应该会打开一个新的对话框。
选择 Default action URL 框中的文本并把它复制到剪贴板。
返回到 Report Studio,双击文本项 “Copy the Default action URL for the report here. Only the Default action URL should exist between these two HTML items”。这应该会打开 Text 对话框。
把现有的字符串替换为报表的默认动作 URL,单击 OK 关闭 Text 对话框。报表现在应该像下面这样。

图 13. IBM Cognos 8 Report Studio 列表报表,排序已经就位,列表的最后两列是查询计算


确认 URL 中的主机不是 “localhost”,否则其他用户在使用排序时可能会遇到问题。
还要注意,如果改变报表名称或把它转移到另一个位置,就需要更新报表中的 URL。

注意,默认动作 URL 后面有两个 HTML Item 对象。如果在列表排序时希望传递报表的任何现有参数,需要像下面这样定义它们:

在工具箱选项卡的 Insertable Objects 面板中,找到 Layout Calculation 对象,把它拖放到这两个 HTML Item 对象之间。Report Expression 对话框出现。

对于希望传递的第一个参数,输入(或使用 Available Components 面板插入)以下代码:
  • ParamName('<parameter name>')+ '=' + ParamValue('<parameter name>')


对于希望传递的每个参数,重复步骤 1 和 2。注意,这里不需要包含 OrderBy 参数。

最后,每个 Layout Calculation 对象的表达式应该与图 14 中的相似。另外,Layout Calculation 对象应该出现在两个 HTML Item 对象之间,见图 14。

图 14. 列排序的参数规范,似乎应该出现在 IBM Cognos 8 Report Studio 中。圈出的是 Report Expression 代表的 Layout Calculation 对象的位置


然后,这些值被添加到排序 JavaScript 函数使用的 URL 中。
要点:为满足最常见的场景,在 JavaScript 代码中处理参数值时有几个约定:

参数值是用逗号分隔的。这意味着可以使用多选的参数,参数值表示为 “value1, value2, value3”。如果有一个本身包含逗号的参数值,会把它当作两个值对待。

以 “Between” 开头的参数值代表一个值范围。这意味着可以使用日期范围这样的参数。如果有一个本身以 “Between” 开头的参数值,会按提取值范围的方式解析它。

如果报表中获取的数据不符合这些约定,报表作者需要在 JavaScript 代码中实现特殊的处理(参考默认动作 URL 前面的 HTML Item 对象)。

如果不需要传递任何参数值,这里就不需要处理。

保存报表。

使用动态排序功能
本节概述投入报表工作中的排序功能的工作方式。
在 IBM Cognos Connection 或 IBM Cognos 8 Report Studio 中,作为 HTML 运行报表。
应该会提示输入 “OrderBy” 参数。输入 0 并单击 OK。
注意,可以在报表属性页面中为这个参数设置默认值,让 Cognos Viewer 不提示输入值。
报表内容应该像下面这样(注意,这里只显示输出的第一页):

图 15. IBM Cognos 8 Report Viewer 输出,以 HTML 格式显示列表


注意,两个排序列是不可见的。
把鼠标停留在任何列标题上,就会看到排序图标。
单击当前的排序图标。报表运行结束之后,它会按选择的列升序排序(注意,这里只显示输出的第一页):

图 16. HTML 格式的列表的 IBM Cognos 8 Report Viewer 输出,选择的列上显示定制的排序图标


注意,排序图标已经变成升序排序图标,这表示排序方向。
单击当前的排序图标。报表运行结束之后,它会按选择的列降序排序。
注意,排序图标已经变成降序排序图标,这表示排序方向。
单击当前的排序图标。报表运行结束之后,它不再按选择的列排序。
注意,排序图标已经消失了,这表示没有执行排序。

该贴已经同步到 xiaoerp的微博
更多图片 小图 大图
组图打开中,请稍候......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 14:22 , Processed in 0.017991 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表