FastReport多级 告的结构可以比作一棵树——树干、大树枝、从它们长出的细树枝,等等直到叶子——或者与公司结构进行比较:部门、分部、员工。它们通常被称为主从或主从,由几个表组成。一张表包含主要实体的列表;与第一个表绑定的另一个表包含一个从属实体列表,其中包含对第一个表的引用,指定第二个表中的某个实体从属于第一个表中的哪个实体,依此类推。
在这篇文章中,想告诉你 FastReport 如此强大的多级 告。他们的结构可以比作一棵树——树干、大树枝、从它们长出的细树枝,等等直到叶子——或者与公司结构进行比较:部门、分部、员工。它们通常被称为主从或主从,由几个表组成。一张表包含主要实体的列表;与第一个表绑定的另一个表包含一个从属实体列表,其中包含对第一个表的引用,指定第二个表中的某个实体从属于第一个表中的哪个实体,依此类推。
FastReport 最多支持六层嵌套(通过使用 Nested 表对象可能会更多,但这将在后面描述)。在实际应用中,很少需要打印具有大量数据嵌套的 告;通常,1-3 级就足够了。
构建主从 表的示例
让我们考虑创建一个两级 告。它将包含来自 Customer 和 Orders 表的数据。第一个表是客户列表;第二个是客户的订单清单。这些表包含以下类型的数据:
顾客:
CustNo Company
1221 Kauai Dive Shoppe
1231 Unisco
1351 Sight Diver
订单:
订单无客户无销售日期
1003 1351 12.04.1988
1023 1221 01.07.1988
1052 1351 06.01.1989
1055 1351 04.02.1989
1062
1981 2060 139 1989
如您所见,第二个表包含所有公司发出的所有订单的列表。要获取特定公司的订单列表,应从表中选择数据,其中字段 CustNo 等于所选公司的编 。使用这些数据构建的 告将如下所示:
1221 考艾岛潜水专柜
1023 1988年7月1日
1123 1993年8月24日
1231 联合船代
1060 1989年2月28日
1351 视觉潜水员
1003 1988年4月12日
1052 1989年6月1日
1055 1989年2月4日
现在我们开始做 告。我们在 Delphi 中创建了一个新项目,并为表单设置了两个 TTable 组件、一个 TDataSource 组件、两个 TfrxDBDataSet 组件和一个 TfrxReport 组件。
将数据从基础连接到 表对象
我们设置组件如下:
Table1 :
DatabaseName = ‘DBDEMOS’
TableName = ‘Customer.db’
Table2 :
DatabaseName = ‘DBDEMOS’
TableName = ‘Orders.db’
DataSource1 : DataSet = Table1 frxDBDataSet1 : DataSet = Table1 UserName = ‘Customers’ frxDBDataSet2 : DataSet = Table2 UserName = ‘订单’
在 表设计器中,我们在 Report|Data… 窗口中连接我们的数据源。
将第一级数据(主)和第二级数据(详细信息)带添加到页面。从数据面板(在右侧),我们将表字段拉到各自的波段(主和细节)。它看起来像这样:
注意 – 第一级数据带必须位于上方!如果位于2级数据带以下,FastReport会在开始上 时提示错误。
启动后,我们将看到每个客户的订单列表都是相同的,并且包含订单表中的所有记录。这是因为我们没有打开 Orders 表中的记录过滤。
当 表启动时,FastReport 将执行以下操作。它将从主表 (Customer) 中选择下一个记录并将过滤器设置为从属表 (Orders)。只有满足条件 Orders.CustNo = Customer.CustNo 的录音才会留在表中。也就是说,对于每个客户,只会显示该客户的订单:
如果您对 FastReport 表工具感兴趣,欢迎加入 FastReport QQ 交流群:599154289 标签: 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
同样,您最多可以构建具有六个数据级别的 告。