码迷,mamicode.com
首页 > 其他好文 > 详细

[转]RDL(C) Report Design Step by Step 3: Mail Label

时间:2017-10-17 15:03:31      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:出版社   编码   studio   ges   ble   lcd   strong   col   code   

本文转自:http://www.cnblogs.com/waxdoll/archive/2006/09/02/493350.html

 Crystal Report在报表向导中提供了三种向导类型给用户进行选择——Standard、Cross-Tab和Mail Label,而Visual Studio/BIDS报表向导只有两种——表格格式和矩阵,这是和Crystal Report的前两种报表类型相对对应的,那么怎么在Visual Studio/BIDS中实现Mail Label呢?

    先来看一下什么是Mail Label。Mail Label如果直译成中文的话,就是“邮件标签”,这是一个有歧义的名词,一些邮箱(如Gmail)和客户端邮件工具(如Foxmail)将“邮件标签”作为一种将邮件进行分类以方便信息管理的工具。而本篇随笔讨论的显然无关“电子”邮件,而是一种比较常用的报表。设想如下的场景:如果一个组织(比如一家出版社)需要向一批客户发一份比较正式的书面信件(比如征订启事)。而这些客户的通信地址、收件人邮政编码等又以某种形式(数据库、平面文件等)存储在计算机中,工作人员显然不希望在每一个信封上手工书写这些信息,他/她要做的无非是把这些打印出来并粘贴到信封上就可以了。这样的话,一个普通的报表也可能就已经能够满足他/她的需求了,尽管我们知道邮政编码、通信地址、收件人三个字段之间是需要换行的。但是,如果他/她恰巧使用的是常见的如A4之类的纸张,而同时他/她又不希望浪费纸张,那么他/她希望要的报表可能就是如图1所示的报表了。这就是所谓的“邮件标签”报表了,当然“邮件标签”报表不仅仅局限于多个信件通信地址的一次打印,凡是具有类似结构的报表都可以被称为“邮件标签”报表。

技术分享 图1 Access的Northwind示例数据库中的“邮件标签”报表(点击小图看大图)

    正如图1的标题所示,Access是支持“邮件标签”报表的,不过在报表设计上只是让标签中涉及到的字段纵向排列而已,真正实现多列标签打印是通过对报表的“页面设置”来完成的,如图2所示。

技术分享
图2 Access中“邮件标签”报表的“页面设置”

    在进行报表设计之前,我们先为本文的邮件标签进行数据准备。本文的示例报表的数据来源于SQL Server 2005的示例数据库AdventureWorks,在AdventureWorks数据库中使用以下SQL语句建立视图Production.MailLabel:

技术分享代码1:创建视图Production.MailLabel

    打开视图,我们可以得到如图3所示的示例数据,这将是本文示例所使用的报表数据。

技术分享 图3 示例使用数据

    也就是说,本文的示例演示的邮件标签中展示的数据是AdventureWorks生产的自行车的名称、颜色以及缩略图。

    既然是邮件标签,我们要将Name、Color以及ThumbNailPhoto这三个一行中字段纵向显示,这个比较容易实现;我们还需要将指定行数的数据作为一列显示在报表中,这就涉及到行到列的转换问题。事实上,可以说行列转换问题是邮件标签报表面临的最大的问题,要解决这个问题,一种可行的方案是使用SQL语句中出现在FROM子句中的PIVOT关系运算符将表结构进行转换,然后使用Table控件显示数据。另外,我们知道标准控件中的Matrix控件的功能其实就是一个Pivot Table(数据透视表),我们可以清楚地在控件工具栏上看到对Matrix控件的提示是“用于任何多列样式报表的行列布局”,该控件对数据的处理其实是和PIVOT运算符是相通的,就是说使用该控件可以避免使用PIVOT运算符而实现一个交叉表的结构,所以本文选择使用这种方案来实现邮件标签报表。

    1、创建报表服务器项目RDLML。

    2、新建共享数据源DataMailLabel,设置到数据库AdventureWorks的连接,并为报表指定相应的访问凭据。

    3、不使用向导新建报表rptMailLabel,在报表设计器的“数据”选项卡,新建数据集MailLabel,使用工具栏按钮切换到通用查询设计器,在“关系图”窗格中使用右键菜单“添加表”并选择视图Production.MailLabel,选择Name、Color、ThumbNailPhoto三列作为输出,这样我们在SQL窗口中可以看到以下SQL语句:

技术分享代码2:选择数据的SQL语句

    4、在SQL窗格中修改代码2中的SQL语句如代码3所示。

技术分享代码3:修改代码2得到的SQL语句

[转]RDL(C) Report Design Step by Step 3: Mail Label

标签:出版社   编码   studio   ges   ble   lcd   strong   col   code   

原文地址:http://www.cnblogs.com/freeliver54/p/7680765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!