FineReport使用(一)参数查询

本文介绍FineReport中的参数查询功能,包括直接在SQL语句中设置过滤条件和在报表参数中定义参数两种方式,以及如何设计参数界面以实现数据的动态过滤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时我们并不需要对所有的数据进行显示。只需要显示查询其它部分数据,就可使用FineReport提供的参数查询。它能对数据进行过滤,将我们需要的数据根据查询条件动态的显示出来。实现这种效果有要有两种方式:
在FineReport中,有两种参数定义的方式:
[b]► 在SQL语句中直接写入过滤条件,如:select * from i_ht_contract where ContractName='${contractName}'[/b]
//'${contractName}'定义一个变量,它要和一些控件进行绑定。让用户去选择,点击查询后在将实际的值传过来。构成一个完整的sql语句。ContractName数据库中的属性字段。
[b]► 在菜单栏报表|报表参数当中定义参数[/b]
报表参数处定义,需要在单元格里进行调用,只对当前格子以及当前格子的子格的数据起到过滤的作用。
在报表|报表参数当中新增一个参数,单元格绑定数据列之后,在过滤页面,调用已定义的参数,对格子中的数据进行过滤。根据FineReport的数据模型,设置了过滤的当前格子以及当前格子的子格,会根据输入的参数值进行过滤。

无论以上哪种模式,如果需要将参数值显示在某个单元格中,可以通过“=$参数名”这样的公式来得到,其中$参数名可作为公式的元素进行任意的公式计算。
[color=red][b]小结:[/b][/color]
两种参数的都要和控件进行绑定,控件的名字就是参数的名字。只不过在sql语句中设置的参数,它是对整个数据源进行筛选。而报表参数只是针对某个单元格或者某行数据进行过滤。它不会对数据源产生影响。只是对显示的结果数据进行过滤。

都需要设计参数界面

报表添加了参数之后,需要有一个可视化的界面,能够让用户输入参数值。FineReport内置了一个默认的参数界面,用户可在内置的界面中,调整参数的位置,并通过控件设置得到例如下拉框,复选框,日历等不同的数据选择方式。

参数设计是和模板设计类似的格子界面,左侧列出了报表当中已定义的参数,可通过拖拽的方式显示到参数界面中,再将默认的控件设置“文本”进行更改。

如果不需要使用FineReport的内置参数界面,则需要通过自定义页面传递参数的方式完成外部数据与报表的交互。
<think>嗯,用户问的是如何在FineReport使用参数绑定,需要教程、示例和用法。首先,我需要回忆FineReport参数绑定相关知识。根据提供的引用内容,参数FineReport中是通过数据集或者控件来设置的,可能涉及到参数的种类和如何添加到SQL查询中。 首先,引用[1]提到参数有不同的种类,需要根据实际情况添加。这可能包括模板参数、数据集参数等。用户可能需要知道如何定义这些参数,并在哪里设置。然后,引用[3]和[5]提到在数据集中使用SQL查询时,可以通过${}或者?来绑定参数。例如,在SQL语句中用${p1}来引用参数p1,或者在数据集中设置参数名称,然后关联到控件值。 接下来,用户可能需要步骤说明,比如如何创建参数,如何将参数绑定到控件,以及如何在SQL使用。引用[5]还提到参数联动,可能需要涉及下拉参数之间的联动,比如选择省份后,城市下拉框根据省份参数的值动态加载数据。这时候需要设置参数的依赖关系。 另外,引用[4]提到填报暂存功能,可能和参数绑定在填报场景中的应用有关,但用户的问题主要是参数绑定,所以可能暂时不需要深入填报部分,但可以作为应用场景提及。 然后,示例部分可能需要个具体的例子,比如通过参数查询销售数据。需要分步骤说明创建数据集参数,绑定到控件,然后预览效果。同时,要注意参数绑定的两种方式:${}和?,以及它们的区别,比如${}直接替换可能存在SQL注入风险,而?作为预编译更安全。 可能还需要提到参数联动,比如两个下拉框的联动,这需要第二个下拉框的数据集依赖第参数的值。这部分在引用[5]中有涉及,可能需要详细说明如何设置参数的过滤条件。 最后,注意事项部分需要强调参数命名规范,避免冲突,以及不同参数类型的使用场景。比如模板参数在整个模板有效,而数据集参数仅在该数据集有效。此外,安全方面,使用预编译参数来防止注入攻击。 用户可能遇到的常见问题包括参数不生效,这时候需要检查参数名是否正确,控件是否正确绑定,或者数据集是否重新加载。此外,参数联动失败可能是因为依赖关系未正确设置或者数据集未正确过滤。 总结下来,回答的结构应该是:参数定义、控件绑定、SQL绑定、示例演示、参数联动和注意事项。同时,相关问题的生成需要覆盖参数类型、动态参数、安全性和常见错误处理。</think>### FineReport参数绑定使用教程 #### 参数定义与类型 1. **参数种类** - **模板参数**:作用于整个模板,通过`参数面板`控件绑定[^1] - **数据集参数**:仅在特定SQL查询中生效,需与SQL语句配合使用[^3] - **全局参数**:跨模板使用(需结合服务器配置) 2. **创建参数** 在FineReport设计器中: - 右键模板 -> `模板参数` -> 新建参数`p1`,设置默认值[^5] - 数据集编辑界面 -> 点击`参数`按钮 -> 添加数据集参数 #### 二、参数绑定控件 1. **控件绑定参数** ```python # 示例:下拉框控件绑定参数p1 1. 拖拽"下拉框控件"到参数面板 2. 控件属性 -> 数据字典 -> 选择数据集ds1的"地区"字段 3. 控件名称设置为p1 ``` 2. **提交参数值** 使用`_g().writeReport()`接口提交参数值到后台[^2] #### 三、SQL参数绑定方法 1. **${}直接替换**(动态参数) ```sql SELECT * FROM sales WHERE region = '${p1}' ``` *注意:需手动添加单引号,存在SQL注入风险* 2. **?预编译参数**(安全推荐) ```sql SELECT * FROM sales WHERE region = ? ``` 在数据集参数设置界面关联参数`p1` #### 四、完整示例:销售数据查询 1. **创建模板参数** - 新建参数`product_type`(默认值:电子产品) 2. **配置数据集** ```sql SELECT * FROM product WHERE category = '${product_type}' AND sale_date BETWEEN '${start_date}' AND '${end_date}' ``` 3. **参数面板设置** ```python # 控件配置: - 日期控件:名称start_date/end_date - 下拉框:名称product_type,绑定品类数据字典 ``` 4. **预览效果** 参数变更后自动触发数据集刷新,展示过滤后的报表[^5] #### 五、参数联动实现 1. **二级联动示例** ```python 1. 省份参数p1绑定下拉框控件 2. 城市数据集SQL: SELECT city FROM locations WHERE province = '${p1}' 3. 城市参数p2的下拉框自动关联新数据集[^5] ``` #### 六、注意事项 1. 参数命名避免使用`fr_`开头(系统保留) 2. 日期参数需转换为`yyyy-MM-dd`格式 3. 使用`参数组合`功能实现多条件查询 4. 通过`参数默认值`设置初始化查询条件[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值