Relations
两个数据源之间可以设置关系。关系用于定义 "master-detail"关系。例如,"Categories "表中的一条记录可以在 "Products "表中有多个条目:
要创建关系,您需要说明以下内容:
- Parent table;
- Child table;
- 父表中关键列的集合;
- 子表中关键列的集合。
两个表都有 CategoryID 字段,可以在该字段上设置关系。因此,一个类别可能包含多个产品。
如何在 FastReport 中使用相关数据源?有两种方法。
第一种方法可以建立 "master-detail "类型的报告。为此,需要使用两个 "Data "带。主数据带连接到主数据源,详细数据带连接到详细数据源。我们的示例如下:
如果运行这样的报告,就会打印出每个类别的产品清单:
第二种方法允许从详细数据源引用主数据源。我们将举例说明。假设我们要打印所有产品的列表。为此,我们需要一个与 "Products "表相连的 "Data "带:
这样的报告将打印所有类别的所有产品。比方说,我们想在每个产品旁边打印它所属的类别名称。如果不使用关系,这将更加困难。我们所知道的产品类别就是它的 id(由 "Products "表中的 "CategoryID "列表示)。我们要打印的类别名称存储在 "Category "表的 "CategoryName "列中。借助关系,我们可以按以下方式引用类别名称:
[Products.Categories.CategoryName]对于 "Products"表的当前行,FastReport 将在 "类别 "表中找到相应的父行,并返回 "CategoryName "列的值。
在一般情况下,引用父表字段的方式允许表祖先的数量不受限制:
如果我们将上图所示的列拖入报告中,就会得到一个包含文本的 "Text "对象:
如果我们运行它,就会看到以下内容:
如需下载fastreport最新试用版,请点产品名跳转产品下载页>>