如何将报表与Lazarus中FastReport的数据连接?

现在是时候使任务复杂化并使用不同的数据源了。大多数报告通常基于数据库中的数据。为了访问此数据,Lazarus提供了FastReport使用的强大机制。

Fastreport.NET在线购买价更低,专享85折起!赶紧加入购物清单吧!

在上一篇有关使用图表的图表中,我们已经熟悉商业图形和条形码。现在是时候使任务复杂化并使用不同的数据源了。大多数报告通常基于数据库中的数据。为了访问此数据,Lazarus提供了FastReport使用的强大机制。 

数据访问组件

这指的是“数据访问”选项卡中的组件,这些组件可以用作报表的数据源。任何TDataSet后继组件都可以用于此目的。

除了访问项目中定义的数据外,FastReport还允许您在运行时创建新组件。我们公司创建数据访问组件的原理与Lazarus环境中使用的原理非常相似-我们在表单上强加了一个组件,并在对象检查器中配置了它的属性。在选择数据库格式时,运行时连接的功能受到更多限制,因此在撰写本文时,只能在运行时创建DBF和SqLite3。

这是指DataAccess选项卡中的组件,这些组件使用FastReportn选项卡中的TfrxDBDataSet连接器组件将表或其他数据源连接到波段。该组件充当数据源和FastReport核心之间的中介。该组件负责浏览记录和访问字段。这样,您就可以避免将FastReport核心与任何数据访问库绑定在一起。

FastReport可以与BDE和任何其他库同时使用,也可以从与数据库无关的源(例如数组或文件)中完全检索数据。

TfrxDataSet组件旨在与数据源一起使用,并且应注意其多功能性。它可以使用从TDataSet继承的所有连接。这就是BDE,CVS和绝大多数其他库!要与其他数据源(数组,文件等)一起使用,请使用TfrxUserDataSet组件。

要将TfrxDBDataSet组件链接到数据源,必须配置以下选项之一:

  • DataSet属性,直接链接到表或查询。
  • DataSource属性,该属性连接到TDataSource组件。

两种连接方法都是等效的,只是第一种方法没有TDataSource组件。

为了使组件及其相关数据在报告中可用,您需要明确指定在报告中使用哪些数据源。在FastReport设计器中,选择菜单项“ Report / Data …”,然后在出现的窗口中选中所需源旁边的框。

°oa

FastReport设计器中的组件说明

TfrxDBFTable组件旨在组织对.dbf数据库表的访问,并具有以下属性:

  • FilePath指定数据库文件夹的路径。
  • TableName分配数据库的名称。通过选择数据库,您还将更改路径。
  • FieldAliases允许您指定自定义字段名称。
  • Filter包含一个用于过滤记录的表达式。
  • 已过滤确定是否应用过滤器。
  • IndexFieldNames存储构成索引的字段的名称。
  • IndexName定义二级索引的名称。
  • MasterFields包括与主数据集关联的字段。
  • 母版与母版数据集相同。
  • UserName设置数据集的别名(用户名)。

组件的属性分配与Lazarus中的TDbf属性相同。要将组件连接到数据库表,只需填写TableName属性。通过设置Active:= True打开表。

FieldAliases属性编辑器允许您选择在访问表时将可用的字段,并为每个字段和整个表设置自定义名称。

¨

MasterFields属性编辑器用于在两个表之间创建主从关系。要在从属表中链接两个具有主从关系的表,请在Master属性中指定主表,然后调用MasterFields属性编辑器。如果表具有要使用的二级索引,请首先配置IndexName属性。

D DμD′D°DoD2D·DμD1

该编辑器使您可以直观地链接数据集的主字段和明细字段。当集通过主/从关系链接时,详细集的内容在您浏览主集时被过滤,因此它仅包含与当前主集记录相关的记录。

要链接集字段,请从左侧列表(详细集)中选择该字段,然后从右侧列表(主集)中选择该字段,然后单击“添加”按钮。这会将字段映射移到较低的列表。要清除底部列表,请使用“清除”按钮。重要的是要注意,要链接的字段必须是同一类型并且是关键。

但是在Lazarus本身中,这些属性不适用于TDbf组件的选择(主从分类和筛选),并且由于我们使用了此组件,因此它对我们也不起作用。

TfrxLazSqliteQuery组件旨在使用SqLite3对数据库进行SQL查询,并具有以下属性:

  • 数据库指定数据库连接名称(默认始终为“ sqlLite”)。
  • FieldAliases允许您指定自定义字段名称。
  • 过滤器存储一个表达式以过滤记录。
  • 已过滤确定是否应用过滤器。
  • Master与Master数据集相同。
  • 参数显示查询参数列表。
  • SQL包含查询文本。
  • UserName设置数据集的别名(用户名)。
  • IgnoreDupParams-如果为true,则查询参数的名称将不会在参数编辑器中重复。

SQL属性具有其自己的编辑器,用于填充SQL查询: 

TfrxLazSqliteQuery-QL¥èˉ¢¨

Params属性也有其自己的编辑器。如果查询文本包含参数,则可用。

TfrxLazSqliteQuery-°¨

参数可以有两种类型:一种是从主数据集分配的,另一种是具有特定值的,其中值可以是常量,对变量的引用或对象属性。 

如果参数是从主数据集中获取的,则必须配置TfrxLazSqliteQuery.Master属性。数据集必须包含与参数名称相同的字段。无需指定参数类型和值。

TfrxLazSqliteDataBase组件用于连接到SqLite3数据库。其用途类似于TSQLite3Connection和TSqlTransaction组件,并且具有以下属性:

  • 已连接-启用True时,将激活连接。
  • DatabaseName允许您选择数据库的名称。
  • LoginPrompt定义在连接数据库时是否必须要求用户输入密码。如果LoginPrompt = False,则必须在连接字符串中指定用户名和密码。

通过数据库访问构建报告

考虑构建一个简单的报告,其中包含数据访问组件,我们将以LDemo演示数据库为例。

首先,让我们创建一个项目,通过该项目我们将进行实验。在Lazarus中创建一个新项目,并将其放在表单组件TfrxReport,TfrxDesigner,TfrxDialogControls,TfrxDBDataset,TDbf上。

上一篇 2021年1月26日
下一篇 2021年1月26日

相关推荐

发表回复

登录后才能评论