Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2549542
  • 博文数量: 2110
  • 博客积分: 18861
  • 博客等级: 上将
  • 技术积分: 24420
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:23
文章分类

全部博文(2110)

文章存档

2011年(139)

2010年(1971)

我的朋友

分类: 数据库开发技术

2010-05-09 14:08:14

 钻取是R2报表中必要有特色的一个功能,而且在商务智能系统中也少不了它。通过使用钻取功能,能够让用户单击一个报表中的链接来直接打开其他相关的报表。如现在在一个联机数据分析的智能系统中,有这么一个结果:30岁到40岁的客户群体购买率最高的产品类别。现在用户还需要知道更加详细的结果,如他们主要购买了哪些产品。利用专业术语来说,就是需要知道这个结论是根据哪些数据得到的。此时就可以通过使用报表钻取的来实现。但用户单击这个结果的时候,系统就会打开一张单独的报表,来显示支持这个结果的详细信息。可见报表钻取在商务智能系统中也是必不可少的。

  一、报表钻取功能使用的前提条件。

  这里需要注意的是,并不是在任何情况下都适合使用报表钻取功能的。一般来说,只有当相关数据不会更改或者更改的频率比较低的时候,才可以使用报表的钻取功能。这是什么意思呢?但用户通过点击报表上的链接去打开另外一张报表的时候,数据库系统一般是不会从数据库中重新查询数据的。这主要是从性能的角度考虑。注意报表钻取跟子报表是有很大差异的。子报表会根据父报表的条件从数据库中重新查询数据,而钻取报表不会。在使用钻取功能的过程中,这一点要特别引起管理员的重视。

  而这个刚好跟商务智能系统的特点相符合。在商务智能系统中,其主要的目的就是对于大量的历史数据进行统计、分析,然后得到一些规律性的内容。显然此时历史数据一般不会发生变化。故在商务智能系统设计中,是比较适合使用报表钻取功能的。

  二、钻取报表在部署上的限制。

  在比较复杂的应用中,为了提升应用系统的性能,往往会设置多台服务器,让他们各司其职,分工合作。不过在部署钻取报表的时候,在这方面有所限制。如对于报表操作,系统要求钻取报表必须同主报表位于同一报表服务器上。这也可以理解。如果他们位于不同的服务器上,那么从主报表中钻取数据的话,性能就会受到一定的影响。在实际工作中,我们一般都会将报表设置在同一台服务器上。为此这个限制对我们部署的影响并不是很大。

  而操作方式的限制,对我们的影响就非常大了。在主报表中如果要进行钻取操作的话,主要有报表操作和URL两种方式。不过这里需要注意,如果采用的是URL操作的话,这报表必须位于完全限定的URL操作,否则的话,就无法成功钻取到数据。而如果采用报表操作的话,则没有这方面的严格限制。另外需要注意的是,如果在SharePoint集成模式下来配置报表服务器的话,则支持URL朝铸哦,而不支持报表操作。这些限制让我们在部署钻取报表的时候,有点拘束。

  三、在报表中添加钻取操作。

  在讲述具体的操作之前,笔者再强调一下,钻取报表有“报表操作”和“URL操作”两种模式。不同的实现方式需要采用相对应的操作方式。在向报表中添加钻取报表之前,必须要先了解这些限制。否则后续的工作都是白搭。

  在报表中添加钻取报表,主要是在设计视图中实现的。具体的操作如下:

  第一步:指定报表。在项目的属性对话框中,单击“操作”按钮。然后选择“转到报表”。然后在“指定报表”对话框中输入或者粘贴要跳转到的报表名称,即钻取的报表。另外,系统也提供了类似Windows资源管理器那样的“浏览”功能。由于采用不同的模式,如本机模式与SharePoint集成模式,他们采用的路径格式有所不同。在这种情况下,如果使用者这个浏览功能来获取报表的路径,则准确率会高许多。因为系统会自动根据所采用的模式,转换成对应的格式。所以笔者建议,在实际操作的时候,还是采用浏览功能为好。

  第二步:参数设置。钻取报表的时候,需要向钻取功能传递参数。否则的话,钻取操作不知道该获取哪些内容。管理员找到“使用这些参数运行报表”这个项目,然后点击“添加”,此时系统会向参数网络中添加一个新行。然后在名称文本框中,输入钻取报表中的报表参数的名字。如果管理人员觉得手工输入比较麻烦的话,在也可以从下拉列表中选择参数的名字。不过这有一个前提,钻取报表必须位于报表服务器项目中。然后在“值”文本框中,输入需要传递给钻取报表中的阐述的值。

  第三步:进行测试。设置完成之后,需要进行必要的测试。如果要测试这个钻取报表的话,需要运行报表,然后进行测试。

  最后笔者在此提供一个小的技巧。为了让用户更加的直观感受到这个是钻取报表,可以更改文本的颜色来表示这是一个超链接。出于界面的友好性考虑,笔者强烈建议这么做。不然谁知道这个报表中带有钻取功能呢?

 四、隐藏报表项与钻取报表之间的冲突。

  在R2中,还可以控制在用户查看报表时一开始是现实还是隐藏报表项。也就是说,通过在文本框上提供切换功能可以让用户能够以交互式的方式来隐藏或者显示报表中的内容。当报表中的内容比较多的时候,这个特性就会比较有用。具体的说,对于表或者矩阵,可以显示或者隐藏静态行或者列。如对于包含行组的表,用户可以在一开始就隐藏除外部组摘要行之外的所有信息。然后对于每个内部组,为包含组的分组单元添加切换功能。用户可以在报表中根据自己的需要,来判断是显示内容还是隐藏内容。

  不过需要注意的是,这个隐藏报表项在某些方面与钻取功能有所限制。或者说,如果要同时启用隐藏报表项与钻取功能的话,在配制上有些讲究。具体的说,在创建钻取报表的时候,必须要对隐藏的主、列与行设置可见性的信息,而不能够仅仅对行或者列中的单个文本框设置可见性信息。

  其次用于切换的文本框还必须位于控制要显示或者隐藏的项的包含作用域中。这是微软官方文档的原话,理解起来有点拗口。笔者举一个简单的例子,大家就可以了解了。这句话的意思就是说,如果要隐藏于嵌套组关联的行,这文本框必须要放在包容层次结构中与父组或者更高层次结构关联的行中。否则的话,在钻取报表中就有可能无法显示隐藏的内容,或者隐藏项失效。

  五、子报表与钻取报表之间的差异。

  在上面的叙述中,笔者谈到了子报表的一些内容。不过笔者认为,在这里还是有必要对子报表与钻取报表之间的差异做一些分析。 只有了解这些差异,管理员在实际工作中才可以根据用户的需求,选择使用子报表又或者是钻取报表。

  钻取报表是标准报表,可以在原始报表中通过文本框上的超链接进行访问。钻取报表在行事上跟超链接有点相似。而子报表是在珠宝表的表体重显示的另外一张报表的报表,其跟父子窗口是同一个概念。从这里可以看出他们两者的一个不同。即钻取报表一开始并不显示在主报表中,用户在需要的时候需要点击超链接来打开。而子报表这不同。当用户打开报表的时候,不管用户是否需要这个数据,会自动查询并显示子报表中的数据。当子报表中的数据比较多的时候,显然打开报表的事件就会比较长。

  为此如果主报表中本来数据就多,如果一下子还显示子报表中的内容,显然一个界面容纳不下这么多的东西。在这种情况下,采用钻取报表会更加合理。

阅读(695) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~