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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 440|回复: 0

方法 A:一个升序列,一个降序列

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

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

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

x
方法 A:一个升序列,一个降序列
第一种方法可能是最简单、最高效的方法,但是根据使用的数据库类型它的表现可能不符合期望。在这种方法中,要创建两个列:一个用于升序排序,另一个用于降序排序。

进入左边的面板,单击工具箱选项卡。

Insertable Objects 面板中,找到 “Query Calculation”。把它拖放到列表的末尾(确保它被放在列表上而不是列表后面)。

现在会出现 Create Calculation 对话框。

Create Calculation 对话框中,输入一个有意义的名称,比如 “Order By ASC”,单击 OK。Data Item Expression 对话框出现。

图 7. IBM Cognos 8 Report Studio Data Item Expression 对话框


我们要在这里定义用于排序的列。

Data Item Expression 对话框中,单击 functions 选项卡。Available Components 框会刷新。单击 “Constructs” 文件夹,把 “if then else” 项拖放到 Expression Definition 框中。

Expression Definition 框中,用以下代码替换 <condition>
?OrderBy? = '1'

单击 data items 选项卡。把代表第一个列的对象拖放到 Expression Definition 框中的第一个 <expression>(需要手工删除 <expression> 文本):

图 8. IBM Cognos 8 Report Studio Data Item Expression 对话框


注意,如果使用 OLAP 数据源而且在 Available Components 框中出现层次,就无法在表达式中使用它们。在这种情况下,需要进入 source 选项卡并选择希望用于列排序的数据项。

把另一个 <expression> 替换为 null 或任何静态值(例如 ‘ASC’)。现在,表达式应该像下面这样:
  • IF ( ?OrderBy? = '1' ) THEN
  • ( [Retailer type code] )
  • ELSE
  • ( null )

复制代码


这个表达式意味着,如果 “OrderBy” 参数的值是 “1”,就用第一列 “Retailer type code” 的内容填充这个排序列。否则,用 null/空值填充它。
注意,在使用 OLAP 数据源时,不能在 else 语句中使用 null,需要使用一个静态值。

为了对所有列应用排序,需要把它们添加到 if-then-else 语句中。可以重复前面的步骤以拖放对象,也可以手工输入表达式。表达式最后应该像下面这样:
  • IF (?OrderBy? = '1') THEN
  • ([Retailer type code])
  • ELSE IF (?OrderBy? = '2') THEN
  • ([Retailer type])
  • ELSE IF (?OrderBy? = '3') THEN
  • ([Retailer code])
  • 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)

复制代码


用对话框右上角的 Validate Expression 按钮检查表达式(可能会提示输入 “OrderBy” 参数的值,在这种情况下可以输入零并单击 OK)。
如果在 Information 框中出现 “No errors”,在对话框中单击 OK。
在某些情况下,会出现下面这样的消息:
  • QE-DEF-0459 CCLException
  • QE-DEF-0478 Invalid coercion from 'value' to 'string'
  • for '<data item>' in '<expression>'

复制代码


图 9. IBM Cognos 8 Report Studio Data Item Expression 对话框,已经完成计算,在 Information 框中出现错误


如果发生这种情况,尝试调整表达式中条件的次序,把数据类型相似的项(数字、字符串、日期等等)分组在一起。例如,在前面的表达式中,把两个整数数据项(“Retailer type code” 和 “Retailer code”)放在一起,错误消息就会消失了。

图 10. IBM Cognos 8 Report Studio Data Item Expression 对话框,通过调整计算次序避免了错误


该贴已经同步到 xiaoerp的微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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