如何在fastreport中使用数据筛选

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在fastreport中使用数据筛选相关的知识,希望对你有一定的参考价值。

首先打开FastReport软件,在数据目录中右键点击,新建一个数据源;根据向导提示填写完数据库的连接信息。

物理数据源新建完成之后如下图所示,有一个之前选择数据表的目录,然后可以通过这些数据表来在page页面里面绑定数据和布局

可以在page的startpage事件中自定义数据的连接与过滤条件,这些数据库连接(strConnection)与过滤条件(strSql)可以是从外部作为参数传入进来的。
绑定之后一定要记得调用Init()方法,不然表格就没有数据加载!

如果在同一个report里面有多个地方使用这个表格(或者是循环使用,比如在for循环里面,只是过滤条件不一样),都是按上面的GetReportDataSource方法来获取表格并初始化,表格里面的数据其实是每次循环使用过滤条件得到结果的并集,就是每次操作的结果都会加入到表格中,那么结果可能就不是我们想要的了!
这时我们在获取数据表,并自定义绑定数据连接和过滤条件后,进行初始化之前就需要设置表格的ForceLoadData属性为true;如下图所示:
步骤阅读
6
通过官方的帮助文档可以知道设置了这个属性,在每次初始化时都会清空之前的数据,重新加载数据。如果调用次数多也会影响加载速度,所以默认值是false
参考技术A 用数据筛选

如何在FastReport报表中动态添加数据集

在取报表格式之前,应该先把数据集对象放好,这样才能保证在报表控件在取格式文件后,安置报表对象时,可以拿到数据对象,如果操作顺序搞反了,则报表对象就无法拿到数据对象,在预览数据时,就会产生“没有数据集”的错误了!!

var
tmpDataSet: T数据集;
DataSource: TDataSource;
frxDBDataSet: TfrxDBDataset;
begin
tmpDataSet:=T数据集.Create(Self);
DataSource:=TDataSource.Create(Self);
frxDBDataSet:=TfrxDBDataset.Create(Self);

DataSource.DataSet:=tmpDataSet;
frxDBDataSet.DataSource:=DataSource;
//frxDBDataSet.DataSet:=tmpDataSet; //这条语句与上一条都可用,我也不知道区别在哪
frxDBDataSet.UserName:='数据项名称'; //好用在于可以用中文名
frxReport1.DataSets.Add(frxDBDataSet);
-------------注意:在把报表格式LoadFromFile或LoadFromStream之前,必须完成上面这几条语句的程序!!!!
这个代码的话有时候好用,有时候会不适用,如果你测试下来不行的话建议你用finereport来做,不用写代码,出错的几率要小很多。
参考技术A 根据报表对象的名字属性(name)用FindObject()来找到进行操作。 在DFW里检索Fastreport和FindObject,FastReort的DEMO有例子,有很多例子。 要是要动态添加memo等,用FindObject()找到该Memo。比如一般用Memo来打印各种内容、爱改什么就改什么,很容易根据你的描述,然后你爱赋值就赋值

以上是关于如何在fastreport中使用数据筛选的主要内容,如果未能解决你的问题,请参考以下文章

如何利用FastReport的对话框过滤数据

在FastReport软件中重新加载表格数据的操作步骤

fastreport 中,如何只取某个字段的特定值,

如何在FastReport报表中动态添加数据集

如何在FastReport报表中动态添加数据集

如何在Web API应用程序中使用FastReport