现在是时候使任务复杂化并使用不同的数据源了。大多数 告通常基于数据库中的数据。为了访问此数据,Lazarus提供了FastReport使用的强大机制。
Fastreport.NET在线购买价更低,专享85折起!赶紧加入购物清单吧!
在上一篇有关使用图表的图表中,我们已经熟悉商业图形和条形码。现在是时候使任务复杂化并使用不同的数据源了。大多数 告通常基于数据库中的数据。为了访问此数据,Lazarus提供了FastReport使用的强大机制。
数据访问组件
这指的是“数据访问”选项卡中的组件,这些组件可以用作 表的数据源。任何TDataSet后继组件都可以用于此目的。
这是指DataAccess选项卡中的组件,这些组件使用FastReportn选项卡中的TfrxDBDataSet连接器组件将表或其他数据源连接到波段。该组件充当数据源和FastReport核心之间的中介。该组件负责浏览记录和访问字段。这样,您就可以避免将FastReport核心与任何数据访问库绑定在一起。
FastReport可以与BDE和任何其他库同时使用,也可以从与数据库无关的源(例如数组或文件)中完全检索数据。
TfrxDataSet组件旨在与数据源一起使用,并且应注意其多功能性。它可以使用从TDataSet继承的所有连接。这就是BDE,CVS和绝大多数其他库!要与其他数据源(数组,文件等)一起使用,请使用TfrxUserDataSet组件。
要将TfrxDBDataSet组件链接到数据源,必须配置以下选项之一:
- DataSet属性,直接链接到表或查询。
- DataSource属性,该属性连接到TDataSource组件。
两种连接方法都是等效的,只是第一种方法没有TDataSource组件。
为了使组件及其相关数据在 告中可用,您需要明确指定在 告中使用哪些数据源。在FastReport设计器中,选择菜单项“ Report / Data …”,然后在出现的窗口中选中所需源旁边的框。

FastReport设计器中的组件说明
TfrxDBFTable组件旨在组织对.dbf数据库表的访问,并具有以下属性:
- FilePath指定数据库文件夹的路径。
- TableName分配数据库的名称。通过选择数据库,您还将更改路径。
- FieldAliases允许您指定自定义字段名称。
- Filter包含一个用于过滤记录的表达式。
- 已过滤确定是否应用过滤器。
- IndexFieldNames存储构成索引的字段的名称。
- IndexName定义二级索引的名称。
- MasterFields包括与主数据集关联的字段。
- 母版与母版数据集相同。
- UserName设置数据集的别名(用户名)。
组件的属性分配与Lazarus中的TDbf属性相同。要将组件连接到数据库表,只需填写TableName属性。通过设置Active:= True打开表。


要链接集字段,请从左侧列表(详细集)中选择该字段,然后从右侧列表(主集)中选择该字段,然后单击“添加”按钮。这会将字段映射移到较低的列表。要清除底部列表,请使用“清除”按钮。重要的是要注意,要链接的字段必须是同一类型并且是关键。
但是在Lazarus本身中,这些属性不适用于TDbf组件的选择(主从分类和筛选),并且由于我们使用了此组件,因此它对我们也不起作用。
TfrxLazSqliteQuery组件旨在使用SqLite3对数据库进行SQL查询,并具有以下属性:
- 数据库指定数据库连接名称(默认始终为“ sqlLite”)。
- FieldAliases允许您指定自定义字段名称。
- 过滤器存储一个表达式以过滤记录。
- 已过滤确定是否应用过滤器。
- Master与Master数据集相同。
- 参数显示查询参数列表。
- SQL包含查询文本。
- UserName设置数据集的别名(用户名)。


如果参数是从主数据集中获取的,则必须配置TfrxLazSqliteQuery.Master属性。数据集必须包含与参数名称相同的字段。无需指定参数类型和值。
TfrxLazSqliteDataBase组件用于连接到SqLite3数据库。其用途类似于TSQLite3Connection和TSqlTransaction组件,并且具有以下属性:
- 已连接-启用True时,将激活连接。
- DatabaseName允许您选择数据库的名称。
- LoginPrompt定义在连接数据库时是否必须要求用户输入密码。如果LoginPrompt = False,则必须在连接字符串中指定用户名和密码。
通过数据库访问构建 告
考虑构建一个简单的 告,其中包含数据访问组件,我们将以LDemo演示数据库为例。
首先,让我们创建一个项目,通过该项目我们将进行实验。在Lazarus中创建一个新项目,并将其放在表单组件TfrxReport,TfrxDesigner,TfrxDialogControls,TfrxDBDataset,TDbf上。