技术开发 频道

ASP.NET下基于水晶报表编程的创建报表页眉

  【IT168 专稿】在本系列第一篇中,我们给出了示例网站的轮廓构建,并详细分析了创建到SQL Server 2008示例数据库AdventureWorks连接的具体步骤。在本文(第二篇)中,我们要详细描述如何使用现有的数据库连接数据创建Crystal Report报表的页眉。

  一、创建报表的页眉部分

  页眉部分(Page Header)在每一页上都要重复出现。对于本文中的发票示例而言,我们要在页眉部分重复显示公司徽标,公司名称,发票号码,采购订单编号,订单日期,发货日期,到期日期,客户名称,发货地址,以及邮送地址。注意,徽标图像文件logo.bmp位于网站的根目录下。

  请按照下列步骤来创建页眉。

  (1)拖动鼠标指针把页眉部分调整得更高一点以容纳下所有上述列举内容(注意鼠标光标形状的改变)。

  (2)右键单击页眉部分空白处,从弹出式菜单中选择“Insert Picture…”。选择logo.bmp文件并单击“Open”。把图片拖放到页眉的左上角。

  (3)使用属性窗口改变图片的高度属性和宽度属性,分别设置为2058和3066。

图1  在报表页眉中插入图片

  (4)接下来,您需要添加公司名称。右键单击图片旁边的空白区域,然后从弹出式菜单中选择“Insert Text Object”。把文本对象放置到图片的右侧。

  (5)输入文本对象标题为“Adventure Works Cycle”。当您完成输入时千万不要按下回车键。若要停止编辑该文本对象,只而单击报表中的其他地方。如果您按下回车键,将会在这个文本对象中插入一个硬回车符。

  (6)更改文本对象的高度属性和宽度属性,分别设置为2058和5400的宽度。

  (7)右键单击文本对象,然后从弹出式菜单中选择“Format Object”。此菜单将提供比在属性窗口更多的格式选择。

  (8)单击“Font”选项卡。更改字体大小为28,蓝颜色。

  (9)单击“Paragraph”选项卡。水平对齐方式更改为居中,单击确定。

图2  使用格式编辑器设置段落格式

  (10)下一步是拖动数据库字段到报表中。首先拖动SalesOrderHeader.SalesOrderNumber字段。尽管这不是发票号码,在这个例子中我们将视为如此。展开字段资源管理器中的“Database Fields”(数据库域)节点。展开SalesOrderHeader表格。拖动SalesOrderNumber字段到页眉部分的右上角。

  (11)改变SalesOrderNumber字段宽度为1365。这将使字段更小些,这样您可以将此字段再次移动到左上角。

  (12)右键单击在页眉部分,在SalesOrderNumber字段的左侧插入一个文本对象。设置标题为“发票号码:”。提示:您可以使用工具栏上的右对齐按钮来设置水平对齐或在对象上单击右键使用对象格式对话框(Format Object)设置水平对齐方式。

  (13)调整“发票号码:”文本对象的大小,使之不致与SalesOrderNumber字段重叠。

图3  在报表中加入数据库字段

  (14)以同样的方式添加PurchaseOrderNumber、OrderDate、ShipDate和DueDate等字段到页眉位置。您需要为每个字段添加一个对应的文本对象以作为相应的标签。

  (15)您可以通过按住Ctrl键并单击每个字段轻松地使所有的数据库字段具有相同的大小。

  (16)右键单击SalesOrderNumber字段,然后从弹出式菜单中选择“Size—Same Size”,这将使所有的字段具有与SalesOrderNumber字段相同的大小。

  (17)您还可以立即调整他们的对齐方式。假定选择了所有字段,然后右击SalesOrderNumber字段,然后从弹出式菜单选择“Align—Rights”。

  (18)现在,通过点击报告底部的“Main Report Preview”按钮,你可以预览上面创建的报表效果。

图4  预览上面创建报表效果

  (19)请注意,图中三个日期字段的后面都有一个时间。要删除时间部分,你可以切换到主报表视图(Main Report)。然后,按住Ctrl键并单击每个日期字段。右键单击OrderDate字段并从弹出菜单中选择“Format Multiple Objects”。

  (20)单击“Date and Time”选项卡,从样式列表选择“03/01/1999”。单击确定。

  (21)再次单击主报表预览按钮,你会观察到时间部分已经去掉。

  下一步是添加客户名称,billto,shipto等字段。我们将使用水晶报表公式字段(Formula Fields)功能来做到这一点。公式字段是水晶报表的强大功能之一,允许您使用编程逻辑方式来创建字段。您可以使用If\Then,do循环,for循环,while循环,创建本地和全局变量,操作数组,以及其他多种功能。简言之,一级方程式公式字段能够使您可以执行在一份报告中几乎任何的任务。下面,让我们首先创建Customer文本对象并使用一个公式字段来显示客户名称。

  请遵循如下步骤:

  (1)点击返回到主报表视图。在图片下插入一个文本对象,并设置文本为“客户:”,调整文本对象的大小。

  (2)右键单击字段资源管理器中的公式字段(Formula Fields)节点,并从弹出式菜单中选择“New…”。

  (3)输入公式名称CustomerFullName,并单击“Use Editor”按钮。

  图5  确定公式名字

  (4)并非所有的客户都有一个头衔,中间名和后缀名称。因此,我们将在公式中创建一个本地字符串变量和一个if条件语句来连接名称字段(如果它们存在的话)。为此,需要在公式中输入下面的代码。

  源码清单1

local stringVar customerName := "";

if isnull({Contact.Title}) = false then
    customerName :
= customerName + {Contact.Title} + " ";
customerName :
= customerName + {Contact.FirstName} + " " + {Contact.LastName};

if isnull({Contact.Suffix}) = false then
    customerName :
= customerName + " " + {Contact.Suffix};

customerName;

  (5)单击公式编辑器左上角的“Save and close”按钮。

  图6  在公式编辑器中输入代码

  (6)字段资源管理器中的公式字段(Formula Fields)节点。然后,把CustomerFullName字段拖动到“客户:”文本对象的附近。您可以根据需要自己调整字段尺寸,有关细节不再赘述。

  (7)再次单击主报表预览按钮,你会发现页眉中出现了客户名称。之后,你可以使用翻页按钮察看其他的客户名称。你会注意到,有些客户名称中显示有头衔和中间名。

  图7 预览客户名称形式

  下一步是创建“bill to address”的公式。这与上面的客户名称存在类似的问题,因为并非所有的客户都有第二个地址(即addr2字段)。我们只是想在此字段不为空时才包括它。现在,我们只需把各个字段拖动到报告的单独的行上,但此后没有对应的第二个地址数据的记录仅仅在报告中显示一段空白。公式字段可以帮助解决这个问题。

  (8)点击返回到主报表视图。

  (9)在客户文本对象的下面插入一个文本对象,然后输入内容为“Bill To:”。格式化此文本对象,使文本加粗显示。

  (10)右键单击字段资源管理器中的“公式字段”节点,然后从弹出菜单中单击“New…”。输入名称并BillToAddress,并单击“Use Editor”按钮。

  (11)然后,在公式编辑器窗口中输入以下代码。

  源码清单2

local StringVar billTo := {addressbillto.AddressLine1} + chr(13);

if isnull({addressbillto.AddressLine2}) = false then
    billTo :
= billTo + {addressbillto.AddressLine2} + chr(13);

billTo :
= billTo + {addressbillto.City} + ", " +
  {stateprovincebillto.StateProvinceCode}
+ "  " + {addressbillto.PostalCode}

 

  上面的代码创建一个本地字符串变量,并把它初始化为AddressLine1,后面跟一个回车符号。注意,这里chr(13)将在公式中产生一个回车换行符。接下来的代码检查是否AddressLine2为null;如果非空,则把它添加到字符串后面。后面再连接上城市,州\省以及邮编等字段。

  (12)单击公式编辑器左上角的“Save and close”按钮。

  (13)拖动BillToAddress公式字段到文本对象“Bill To:”的下面。

  (14)既然你不知道有需要多高,因为这可能因客户AddressLine2字段是否存在而有所不同。所以,您可以干脆使用默认的高度。但是,您可以使之自动进行高度调整—只需右键单击此字段,然后从弹出菜单中选择“Format Object”。

  (15)在弹出的对话框的“Common”选项卡中选择“Can Grow”复选框,这使得字段高度能够根据实际情况自动调整。

  (16)我们也希望使用一个矩形包围此字段,以便在报表中突出显示它。为此,从格式编辑器对话框中单击“Border”选项卡。

  (17)从样式下拉列表框中选择上下左右线型为单实线(Single),单击“确定”。

  (18)现在,单击主报表预览按钮来查看上面的操作结果。

  图8  预览添加矩形边框后的客户名称形式

  (19)现在,您可以使用同样的方式来设置“Ship To”地址。首先,插入一个文本对象,并设置文本为“Ship To:/”,使文本对象加粗显示。然后,把文本对象放置在报告中间。

  (20)右键单击字段资源管理器中的“公式字段”节点,然后从弹出菜单中单击“New…”。

  (21)输入名称为ShipToAddress,然后单击“Use Editor”按钮。之后,输入下面的公式。

  源码清单3

local StringVar shipTo := {addressshipto.AddressLine1} + chr(13);

if isnull({addressshipto.AddressLine2}) = false then
   shipTo :
= shipTo + {addressshipto.AddressLine2} + chr(13);

shipTo :
= shipTo + {addressshipto.City} + ", " +
  {stateprovinceshipto.StateProvinceCode}
+ "  " + {addressshipto.PostalCode}

 

  22)单击公式编辑器左上角的“Save and close”按钮。

  (23)拖动ShipToAddress公式字段到文本对象“Bill To:”的右面。

  (24)右键单击ShipToAddress公式字段,然后选择“Format Object”,勾选“Can Grow”复选按钮,并按上面设置BillToAddress同样的方法修饰的边界部分。

  (25)现在,单击主报表预览按钮来查看上面的操作结果。

  图9  预览添加矩形边框后的所有客户名称形式

  二、小结

  在本篇中,我们详细地描述了使用水晶报表创建报表的页眉的过程。从下一篇开始,我们将讨论分组报表设计技巧。

       下载文章内清晰图片http://download.itpub.net/html/2009/1013/2431200910131025259352.shtml

系列文章索引:

ASP.NET 3.5下基于Crystal Reports的报表编程

ASP.NET下基于水晶报表编程的创建报表页眉

ASP.NET下基于水晶报表编程的分组报表

0
相关文章