APEX开发实践(二):交互式报表的实现

交互式报表的使用

交互式报表是在APEX中最常用的报表展现形式。除了提供基本的记录查询和增删改的操作之外,还提供强大的过滤器、行列互换、表图互转、以及数据导出等功能。

图片

首先,先介绍一下交互式报表中的Actions。

Columns:自定义表中各列的排列顺序。另外,如果是管理员自定义好了列顺序(自定义后要保存为primary report),其它用户可看到的就是管理员预先定义好的列顺序。

Filter:定义查询条件。即SQL语句里的where字句。

Data:对数据进行排序、聚合、计算、回闪(可定义回闪到几分钟前的数据)。

Format: 可以设置数据展现的格式。

Chart:把当前交互式报表转换成图表。

Group by:定义Group by条件并按此条件展现数据。

Pivot:行列互换设置。

Report:保存自定义的报表。可以是自定义过滤器的报表,或自定义列排序的报表。

Download:把当前报表(可以是带过滤器的)下载到本地。有多种格式可选。

Subscription:让系统定期把报表发送至指定的邮箱。

交互式报表的开发

创建一个带交互式报表的页面

可以在创建新的页面的时候选择创建一个带交互式报表的页面。但通常情况下,更灵活的方式是创建一个空页面。然后把需要创建的报表类型(如交互式报表)拖拉至空页面内。

图片

把中部下方的“区域”中“交互式报表”拖拉至上方页面的空白处(你所希望放置报表的地方)。然后可以在右部的属性中定义数据源。数据源的类型可以是表/视图,SQL或PL/SQL返回的结果集。这里选最简单的表/视图。

在左部的“呈现”里可以删除掉不希望显示的列,或者在右部列的“标识”-》“类型“里选择”隐藏列“。除此之外,可以设置列的布局和外观。好了,一个简单的交互式报表就实现了。

对交互式报表中进行增删改的操作

除了用交互式报表展现数据外,我们还希望能进行增删改的操作。下面说一下如何添加按钮、表单、处理和验证来实现数据增删改的操作。

先来创建一个新的页面,做为添加或者修改数据的对话框。要做出来弹出式对话框的效果是如下的样子。

图片

新建一个空白的页面。注意在创建的时候要选择“模式对话框”(具体的区别请点击右侧的小问号了解)。

图片

把需要创建的“项”拖拉到新建的对话框页面中。然后设置“项”的布局和外观。

图片

接下来我们对不同的“项”进行与之对应的数据类型的属性设置。下面是一些例子。

“选择列表”,可选项的值可在既有的数据表中提取。

例如,CSA Name这个选择列表的值,可以通过tb_ca_team这个表中提取。注意,select语句的表述方式,要选择两个字段,‘d'是显示值,’r‘是实际要传出(写入数据库)的值。比如说,’d‘可以是简称,写入数据库的值’r'是全称。

图片

也可以通过预定义全局的共享组件做为列表值。

图片

图片

又或者可以直接手工设置静态值。

图片

“带自动完成功能的文本字段”。输入关键字的时候,能够自动搜索相关数据自动完成数据值的填写。这对于约束数据录入和保证数据一致性非常有用。下面的例子是,当选择了“Region”值后,在“Customer Name”输入关键字的时候,系统会查询tb_em_cust中符合已选“Region“值的cust_name,并自动完成数据值填写。

图片

        

效果如下:

图片

其它“项”类型的设置和使用请参阅APEX相关文档。

接下来可以设置一些“验证”,在数据写入数据库之前,先验证数据的有效性。

在“处理”-》“验证”下可以创建新的“验证”

图片

验证的属性举例如下:indate_valid对应的验证“项”是P3_IN_DATE,验证类型为“项不为空值或零”。如果验证失败,返回错误信息。

图片

下面这个验证例子会更复杂一些,需要与数据库中指定表的数据/字段/项做交叉验证。

图片

下面需要做“按钮”和“处理”。

在对话框页面要增加三个按钮,“增”、“删”,“改”。需要做到的效果是,当在主页面点击的“添加”按钮的时候,对话框只显示“增”的按钮。当点击“编辑”的按钮的时候对话框只显示“删”和“改”的按钮。

“增”按钮的属性设置。行为是“提交页”,进行“SQL INSERT操作”。当P31_KUDO_IN_DATE项为空值的时候显示(空值意味着是一条新记录)。

图片

”改“按钮的属性设置。行为是“提交页”,进行“SQL UPDTE操作”。当P31_KUDO_IN_DATE项为非空值的时候显示(非空值意味着是一条已有记录)。“删”按钮同理。

图片

好了,就差最后一步,要创建两个数据库“处理”,一个用于数据库DML的“处理”,另一个用于“删”、“改”操作前,把记录提取到对话框内进行修改或删除的“处理”。

新增一个“处理”。“处理”的属性设置如下图。在这里“类型”选的是“自动行处理(DML)[旧]。这是从18版继承过来的处理类型。19.1版新增了“表单-自动行处理(DML)”。本应选这个类型,但实际操作时返回出错信息,DML失败(这个有待研究)。所以暂时先用回18版的自动行处理类型。

另外,APEX对数据库的表进行DML操作的时候需要做表中主键(PK,primary key)的匹配(如果表中没有PK,可以用RowID做为PK)。这个例子里的PK是复合字段,所以设置两个主键字段和“项”的对应关系。

最下面就是这个“处理”可以执行的数据库的操作,“增”、“删”、“改”。

图片

新增另一个处理,在“删”、“改”操作前提取对应记录到对话框中。要注意⚠️,这个“处理”的放置位置,必须是在对话框呈现前就要完成的操作,所以要放在“呈现前”的区域里。

“处理”的属性设置如下图。在这里“类型”选的是“自动行提取[旧]。这是从18版继承过来的处理类型。19.1版新增了“表单-初始化”。本应选这个类型,但实际操作时提取数据失败(这个有待研究)。所以暂时先用回18版的自动行提取类型。

类似的,设置PK字段和“项”的对应关系。最后要注意最下面“执行选项”的设置。执行“点”是在“页眉之后”,“每次访问页时一次“。

图片

到此,用于记录“增删改”操作的对话框做完了。需要返回到互动式报表页面去增加按钮以及对应的流转操作。

在交互式报表中添加一个“增”的按钮。在“行为”中设置“操作”为“重定向到此应用程序中的页“,然后选择需要重定向的目标,即上面创建的对话框的页号。注意在下方,我为这个操作设置了安全属性,只有指定的人员才能进行“增删改”的操作,其他人只能查看。APEX中的权限和安全访问我会用专门一个篇幅介绍。

图片

对于“删”、“改”的操作,用另外一种形式实现。点击记录前的“编辑”按钮📝,即可以调出对话框进行“删”、“改”的操作。

在右部选中交互式报表的“属性”,然后在左部的“链接”,“链接到定制目标“。点击“目标”按钮,在弹出的对话框里选择目标类型和页号。然后需要在“设置项”里添加传出的值(用于提取数据库表的主键对应设置)。同样,“删”、“改”操作也做了权限设置。

图片

到此为止,可以进行“增删改”操作的交互式报表创建完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值