1、参数查询报表我们创建一个比较复杂一点报表,在报表输出之前,在对话框中输入参数查询。在上面的报表中在点击新报表,重新创建一个空白报表。切换到data页,放置ADO Query组件到面板上,双击组件单出编辑器,输入查询语句:select * from Customer where CustNo > :p1加入一个对话框窗体,组织组件如下:
2、设置组件属性:Label1:Caption = '选择CustNo大于'Edit1:皈其拄攥Text = '2000'Button1:Caption = '确定'ModalResult = mrOkButton2:Caption = '取消'ModalResult = mrCancel打开Query的参数params属性编辑器对话框,设置参数:
3、回到报表设计器页面,组织报表结构如下:进行预览,输入参数,查看显示结果。
4、同为比较常用的报表工具,FineReport对报表中参数的解决方案思路有相同,但具体的实现方式存在差异,主要有三种实现方式,大概如下:参数控件绑定数据1.描述FineReport为了让用户快速的实现参数查询数据功能,提供了专门的参数界面,用来放置与查询相关的控件,如下图:
5、示例根据下图我们制作一个简单的查询界面,从而了解参数查询界面的具体制作方法。
6、1打开报表打开报表:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter.cpt,这张模板是模板参数章节的示例模板,该模板中添加了参数界面,以此模板为例来讲述参数界面的一些使用方法。
7、2参数布局按照下图所示,将控件拖至相应的位置,如下:另:参数界面采用绝对布局方式,因此可以将控件拖至面板中的任何位置。
8、3参数控件编辑风格默认的参数控件都是文本框,有时如希望使用日期控件来选择日期,或者下拉框直接选择数据,这就需要为参数控件定义编辑风格了。如将地区控件设为下拉框。选中地区控件,选择控件中的扳手,在下面的对话框中选择控件类型为下拉框:
9、注:如果已经选择控件类型之后,又需要重新修改,那么需要删除原来的控件,再在控件列表中拖拽您需要的控件类型至参数面板中,然后修改控件名与参数名称一致即可。
10、然后在属性表的基本属性>数据字典中,按照下图设置下拉框的数据:
11、注:给控件设置数据字典,即为控件绑定待选值,一般适用于下拉框、下拉树这类可以直接选探怙鲔译择值的控件。另:如果控件与数据集参数绑定,数据集参数的默认值是无法嗒扬柰旦传递到参数面板控件中的,控件默认值需要另外设置,详细请参照控件默认值,但是模板参数的默认值是可以传递到控件的默认值中的,无需再次设置。
12、4控件名称参数与控件是通过控件名称进行绑定的,即控件名与参数名保持一致,如果参数控件是通过点击右下角的以下参数未生成按钮生成的,那么控件名会自动与参数就行绑定,如果是自己拖曳的,就需要在控件名属性处修改控件名,使之与参数名保持一致。
13、5保存报表并预览保存并分页预览便可以看到效果了。
14、参数过滤1.描述用户在参数查询界面的控件中输入参数值,点击查询按钮,就将相应的数据查询出来了,这就是参数的过滤。根据参数的类型不同,其参数过滤的方式不一样,分为模板参数和数据集参数。
15、模板参数的过滤模板参数在与控件绑定之后,并没有进行关于查询数据的关联操作,即,如果直接进行分页预览,查询数据时是不会将控件中的参数值进行过滤的。此时,需要在报表主体的数据列过滤条件中对参数愉桴狁焕进行过滤处理。如下图,传入的参数amount金额,需要获取的数据为销售总额大于(参数值-500),则可以如下使用公式进行参数处理:操作完成之后,再次预览模板,就能对参数进行过滤了。
16、数据眚躐窍措集参数的过滤不同于模板参数,定义数据集如SELECT * FROM TableName WHERE C泠贾高框olName = ${para},其中${}中的内容为变量,即数据集参数,FineReport会将${}中的内容计算后形成字符串拼接至SQL中形成最终的可执行查询语句,发送到数据库端进行执行。${}可以直接对数据进行过滤。如需要给传入的参数加上固定的字符串然后再用来过滤,此时sql可以写成SELECT * FROM [用户密码] where 密码='${password+"123"}'若给参数password传递值“ZY”,此时${password+123}的结果就是ZY123,就可以查询出密码是ZY123的数据了。故,数据集参数控件绑定数据之后,无需下一步操作,就可以预览模板,查看效果了。
17、参数界面设置1.描述FineReport为了让用户快速的实现参数查询数据功能,提供了专门的参数界面,用来放置与查询相关的控件,并且可以对参数界面进行简单的属性设置。下面我们来一一介绍参数界面的属性设置。
18、是否显示参数界面有时用户希望能够自己控制是否显示参数界面,用户可以在参数设计界面设置是否显示参数窗体,也可以再访问报表时,在URL后面添加参数&__pi__=false来控制不显示参数面板。
19、· 参数界面设置是否显示参数窗体可以通过在参数界面面板中直接设置,如下图,切换至参数面板编辑界面,点击参数界面的空白处,选中参数界面,在右侧的属性表中将显示参数窗体的勾去掉,就不会显示参数界面:
20、· 通过__pi__参数控制访问报表时在URL后面加上&__pi__=false就可以强制报表不显示参数界面(报表定义了参数界诹鬃蛭镲面且设置了显示参数窗体);例如:localhost:8075/WebReport/ReportServer?reportlet=GettingStarted.cpt&__pi__=false。注:pi前后都是两个英文的下划线。
21、点击查询前显示报表内容点击查询前显示报表内容是指:在定义参数的情况下,报表的结果展示不需要用户手动点击查询按钮,而是自动使用参数的默认值进行首次查询并输出结果。实现思路是首先给参数设置默认值,然后打开参数设计界面中勾去“点击查询前不显示报表内容”。
22、· 设置方法进入参数面板的编辑状态,在属性面板中勾去“点击查询前不显示报表内容”,设置如下图:
23、注:设置点击查询前显示报表内容的同时要给参数设置默认值,否则在首次展示时会根据空值进行过滤。保存模板,预览即可以看到,不需要点击查询按钮,首次会根据默认值查询出数据。
24、参数面板背景设置参数的默认背景色为灰色,但是为了使参数界面的风格和报表风格相同或达到其他效果,如您的报表背景为白色,希望参数界面背景也显示为白色,要如何设置呢?· 设置方法选中参数界面,在属性表中点击背景后面的按钮,修改背景颜色,如下图:其设置效果和纸张背景设置效果相同。
25、参数界面显示位置对参数界面除了可以隐藏、设置参数面板背景等操作,还可以设置参数界面的显示位置。· 设置方法参数界面的显示位置可以设置为靠左、居中以及靠右显示,具体的设置如下图:
26、注:参数界面的显示位置以参数界面的宽度,靠左、靠右或者居中,而不是浏览器的页面宽度。
27、设置成居左的效果如下图: