表格制作软件FineReport教程:[22]插入删除行

2025-10-03 22:08:56

1、 功能描述

对于行式填报模板,插入的单元格可能是空值可能是上一个单元格的值也可能是某个不固定的值,此时就需要设置插入行策略。

2、设置方法

右击单元格>其他属性,便可以进行设置。

插入行时可以插入:空值,默认值以及原值三种方案,如下图所示:

表格制作软件FineReport教程:[22]插入删除行

3、 空值

空值是默认的选项,即每次插入新行时,格子都是空白的。

4、 原值

原值即单元格中原有内容是什么,就复制到新增的格子中,一般适用于单元格是使用公式定义的, 在插入单元格时,公式会保留下来。

如自动匹配文档中的模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm.cpt,如下图:

直接填报预览,插入行时,产品名称、供应商等单元格默认插入的都是空白,无法进行自动匹配。

此时就需要设置产品名称、供应商等单元格插入行时使用原值,仍保留原来的公式使得新插入的行也可以进行自动匹配。

表格制作软件FineReport教程:[22]插入删除行

5、默认值

默认值即通过定义字符串,数字,布尔型,日期型或公式型来定义添加行时单元格内的内容。除公式类型外,其它的类型仅仅是插入内容格式的不同,但每次插入的都是固定值。

1、问题描述

在录入数据时,希望数据库中的某列数据是1,2,3...这样的自动增长的数字编号,插入一条数据时编号自动+1,删除数据时编号自动-1。

2、实现思路

通过seq()函数给数据编号,seq()函数是返回报表执行过程中该函数执行的次数。

3、 打开模板

打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm3.cpt。

4、修改表样

如下图所示,在M3和N3单元格增加按钮,分别选择插入行和删除行,父格都设设置为C3,并且设置插入行的行数为1行即点击增加行时只增加一行。

表格制作软件FineReport教程:[22]插入删除行

5、自动编号设置

清空B3单元格的值,并在A3单元格输入一个固定值,比如说输入X,设置其扩展属性为纵向扩展,然后在B3单元格中输入公式=seq(A3),父格设置为C3,其意义时,对A3组内的所有数据按照C3进行编号。如下图:

注:a3单元格的固定值是用来分组的,如果不想其显示在模板中,可将A列进行隐藏。

表格制作软件FineReport教程:[22]插入删除行

6、 插入行策略

选中B3单元格,在单元格属性表处选择其他属性>插入行策略,插入行策略选择原值,如下图:

表格制作软件FineReport教程:[22]插入删除行

7、保存预览

点击填报预览,预览报表,如下图:

表格制作软件FineReport教程:[22]插入删除行

8、点击插入行按钮,产品编号自动+1,如下图:

表格制作软件FineReport教程:[22]插入删除行

9、点击刚刚插入的行后面的删除行按钮,产品编号会自动-1,如下图:

表格制作软件FineReport教程:[22]插入删除行

1、描述

数据库自增长ID填报是指在FineReport模板中进行数据填报的时候,不需要设置ID数据列,在往数据库中插入数据的时候,数据库的主键ID会自动增长。

在填报中,数据批量处理时,使用流水号来作为自增长型主键进行数据更新,可是当用户同时进行并发填报,既多人同时对一张报表进行填报,一个用户填报提交后,另外一个用户没有与服务器进行同步,默认会出现一个流水号会与数据库中刚提交的内容冲突。下面我们以Sql Server数据库为例,讲述数据库自增长I实现报表的自动编号功能。

2、Sql Server数据库

在Sql Server数据库中,提供了标识,可以通过设置标识、标识种子和标识增量来实现Sql Server主键的自增长。

3、自动编号设置

假设在SQL Server数据库中存在下面一张数据表,我们需要将其id列实现自增长,就可以在列属性中设置是标识,修改标识增量和标识种子,如下图:

表格制作软件FineReport教程:[22]插入删除行

4、模板制作

新建数据连接

新建一个数据连接,连接至该数据库,新建数据连接的方法详细请参照数据连接。

模板设置

新建一张模板,添加数据集SELECT * FROM dbo.[KHK]。

在模板设计主体页面第一行分别添加两个文本控件和一个插入行的按钮控件,并在第三行中将数据列拖曳至对应单元格中,如下图:

注:第二行的三个控件分别是,文本控件、文本控件和按钮控件,其中前面2个文本控件分别对应于数据表中的2个字段,虽然自增长ID不需要自己输入,但是还是需要为其添加控件,按钮控件是插入行控件。

表格制作软件FineReport教程:[22]插入删除行

5、填报属性设置

点击模板>报表填报属性,增加一个内置SQL,注:为数据表中的字段绑定报表单元格。

表格制作软件FineReport教程:[22]插入删除行

6、自增长ID使用

点击填报预览,在web端进行数据填报,如下图:

表格制作软件FineReport教程:[22]插入删除行

7、在KH标题下面的控件中插入2条数据,点击提交按钮,将数据提交入库,刷新页面,可以看到下面蓝色区域部分多了2条数据,即刚刚填报数据的数据,并且ID列也进行了自增长。

表格制作软件FineReport教程:[22]插入删除行

8、Oracle数据库

假设已经存在数据库,表名是list,表样如下图:

表格制作软件FineReport教程:[22]插入删除行

9、自增长的实现

在Oracle数据库中,提供了序列的功能,可以通过Oracle的序列及触发器,实现主键的自增长。

创建序号

create sequence list_seq minvalue 1  --最小值为1 

 maxvalue 9999  --最大值为9999 

 start with 1  --以1为初始值 

 increment by 1   --以1为增长间隔 

 cache 20  --缓存大小为20 

order;

创建触发器

create or replace trigger list_tg

  before insert on list   --在对list表插入数据时触发

  for each row   -- 逐行触发

begin   --触发器主题

  select list_seq.nextval into:new.id from dual;   --调用创建的list_seq序号

end list_tg;

10、常见问题

报错信息

在7.0.4版本及之后的版本,使用数据库自增长ID进行数据填报时,可能会发生下图所示报错:

当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'KHK' 中的标识列插入显式值。

表格制作软件FineReport教程:[22]插入删除行

11、报错原因

出现该报错原因是因为在7.0.4及之后版本中,FineReport数据填报自增长ID的时候,主键不能插入空数据,即报表填报属性处绑定的自增长ID字段所对应的单元格在进行填报时,不能为空,但是自增长ID本意就是不需要输入ID,必然要保持单元格为空,所以导致报错。

12、解决方案

将以下的insertIgnoreColumn.properties文件放入%FR_HOME%\WEB-INF\resources文件夹下面即可,文件内容为:

tb_inc.ignoreColumns=id

注:其中tb_inc是填报数据的数据表名称,需要对应修改,如果有多个数据表需要使用自增长ID,那么直接换行再加入这句话内容即可。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢