报表输出的技巧二则

报表在日常事物处理中占十分重要的地位,用户往往需要将数据库中的内容以不同的格式输出。 PowerBuilder 提供了具有多种显示风格的 Datawindow 控件,只要加以灵活的运用,就能做出不同风格的报表。本文结合笔者的实际开发经验,以一个报表的两种实现方法为例,谈谈报表输出的一点技巧。

一、 数据库中的两个 TABLE : project (项目)、 manufacture (询价厂商)。其结构如下:

project(xmbh , gg , xh , psyj …… )

manufacture(xmbh , csmc , xjcx , gg , xh , bj …… )

project 表中的内容:

Xmbh Gg Xh Psyj

001 Gg001 Xh001 Aaa

manufacture 表中的内容:

Xmbh Csmc Xjcx Gg Xh Bj

001 厂商 1 1 Gg1 Xh1 100.00

001 厂商 2 2 Gg2 Xh2 101.00

001 厂商 3 3 Gg3 Xh3 102.00

二、 输出的报表格式:(实际报表中字的颜色均为黑色,底色均为白色)

项目编号 001

我方要求 厂商 1 厂商 2 厂商 3

规格 Gg001 Gg1 Gg2 Gg3

型号 Xh001 Xh1 Xh2 Xh3

报价 100.00 101.00 102.00

评审意见 Aaa

三、实现方法

从图一中可以看出,该报表中包含 project 与 manufacture 两个 table 的记录,并且要求将 manufacture 中的记录以列的形式输出。具体实现方法如下:

方法 1 :

按图一,创建一 Freeform 格式的 datawindow ( dw_1 ),将 project 中所需的内容选出,设置其 Argument 为 xmbh 。其格式即不含灰底中内容的图一。

创建一 Label 格式的 datawindow(dw_2) ,将 manufacture 中所需的内容选出,同样设置其 Argument 为 xmbh ;双击该 datawindow 的空白区域,打开属性对话框,主要设置 Definition 属性页:

(1) Label 项: 设置 Label 的宽度、高度、每页的 Label 个数;

(2) Margins 项:指定 Label 的上、下、左、右以及 Label 与 Label 之间的间距;

(3) Arrange 项: Label 的安排方式:从左到右或从上至下

打开 dw_1 ,插入一 Nested

Report 控件,选择 Report 为 dw_2 。按图一灰底区域的位置与大小调整 Report ,同时设置该 Report 的 General 、 Arguments 属性页,设置 General 属性页的 Border 为 None ,指定 Arguments 页中的 Expression 为 xmbh 列(这是为了避免预览或打印时出现“ Special

Retrieval ”对话框)。

调整 dw_2 中的 Column

的高度、宽度、大小以及 Column 与 Column 的间距,直至满意为止。(为了调试方便,最好将 dw_2 中 Column 的 Border 设置为 None )

最后,直接预览或打印 dw_1 即可!

注: Label 格式 datawindow 的边框无法修改,以至在 dw_1 预览时仍可看到 dw_2 的顶部与底部不规则的边框,但并不影响打印效果。要解决这个问题也并不难,只需在 dw_1 中插入二个与底色同色的矩形,分别放置在图一灰色区域的顶部与底部,并将它们至于 dw_2 之上,然后将 dw_1 中的表格线“ Bring

to Front ”。

方法 2 :

按图一,创建一 Freeform 格式的 datawindow ( dw_1 ),将 project 中所需的内容选出,设置其 Argument 为 xmbh 。其格式即不含灰底中内容的图一。

再创建一 Freeform 格式的 datawindow ( dw_2 ),将 manufature 中所需的内容选出,设置其 Argument 为 xmbh 。注意:要将 xjcx 列选出,为了不显示和打印该列,可将其 foreground

color 设为与底色同色(不能在 datawindow 中将该列删除)。

打开 dw_1 ,插入三个 Nested Report 控件, Report

都选择 dw_2 。按图一灰底区域的位置与大小调整三个 Report ,同时设置 Report 的 General 、 Arguments 属性页,设置 General 属性页的 Border 为 None ,指定 Arguments 页中的 Expression 为 xmbh 列。另外,对每一个 Report 分别设置其 Criteria 属性页,依次指定 xjcx 列的 criteria 值为 1 , 2 , 3 。

调整 dw_2 中的 Column 的高度、宽度、大小以及 Column 与 Column 的间距,直至满意为止。

最后,直接预览或打印 dw_1 即可!

上面的两种方法是笔者对(图一)这种类型的报表输出的总结和概括,也可以说是一点技巧,希望能对大家有所帮助。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus