使用报表链接过滤其他 APEX 报表输出
不过,我玩这个很有趣。“A”和“B”的东西很枯燥,所以我决定创建一个更吸引人的数据集,也许对我们其他人来说更容易理解...... :) 这就是数据生态系统被破坏的原因下来,以及我满足 OP 要求的方式。
测试架构:
欢迎来到“Recipe Stack”食品厂的生产设施。下面是架构设计和 ERD(实体关系图),以及用于此演示的示例数据:
数据关系如下:
- Stack Food-Works 的工作人员为他们制造的膳食和预制食品的类型保留了所有成分的清单。每种成分都有一个唯一的 ID (
INGREDIENT_ID
),工作人员会跟踪他们储藏室中每种物品的数量。
- 每种成分都可以在多个配方中使用,但对于给定的配方,它们只会使用一次。
- 该
ENTREE_RECIPE
表有一个COMPOSITE KEY,这意味着它是这个组合键 (ENTREE_NAME
和INGREDIENT_SEQ
) 的两个部分的组合,应该是唯一的。
- 两个表的值之间存在FOREIGN KEY关系。
INGREDIENT_ID
报告显示要求(APEX 和 SQL 设计元素)
从第一个报告中选择一个项目用作第二个报告的输入和限制/过滤条件。
用户案例#1:
- 用户从食品储藏室中的可用成分列表中选择成分 ID。
- 来自 (1) 的输入过滤RECIPE REPORT的输出。这是在其配方中具有所选成分的所有食谱的列表。
用户案例#2:
- 用户
ENTREE_NAME
从RECIPE REPORT中选择一个。ENTREE_NAME
用于提供第三个报告:配方公式,它是从前一个报告中选择的主菜项目的完整配方。
测试工具
(对于更复杂的页面,您通常需要这些,因此为更简单的页面使用或开发它们是一个很好的开始......)
我自己制作了,但您也可以SESSION
在正在运行的应用程序的 APEX 页面底部(显示时)调用开发人员工具栏上的链接。
这是我的想法;它是一个标题区域,还有一个RESET
输入值的按钮,以便我可以清除缓存并重新测试或尝试其他示例。稍后我将展示如何使用此链接查看发生了什么。您可以在本指南底部的测试讨论中看到它。
APEX 报告/页面设计和 SQL 参数化
我的 columnn 链接方案看起来类似于上一篇文章,例如来自FTaveras的文章。这就是我的链接的工作方式。不同的是我不去另一个页面,我只是回到我原来的那个页面。重定向和分支显然不在乎它们是否只是返回到同一位置。
回程中的不同之处在于,最初为 null 或未填充的页面参数现在有一个值。现在,该值使页面上空白的报告变得生动起来。
第 1 步:食品储藏室报告
- 输出:查询
FOOD_SUPPLIES
表中的所有项目。
- 输入:提供链接
INGREDIENT_ID
以过滤RECIPE_REPORT输出。
怎么做:(提示) 要做到这一点,请将报表布局设计页面中的报表列/字段值定义为“链接”列,并将其值指定为页面项。该页面项将在下一个报表的 SQL 查询中被引用...
第 2 步:配方报告
- 输出:查询
ENTREE_RECIPE
表中所有INGREDIENT_ID
公式中包含 from Step 1 的记录。
- 输入: 提供链接
ENTREE_NAME
以过滤RECIPE_FORMULA输出。
怎么做:(提示)在此报告的 SQL 查询中包含步骤 1中 定义的页面项目:
SELECT * FROM entree_recipe
WHERE ingredient_id = :P3_INGREDIENT_ID
第 3 步:公式报告
- 输出:查询
ENTREE_RECIPE
表中所有ENTREE_NAME
已从步骤 2 中选择的记录。
调试和测试运行
大多数人将能够毫无问题地做到这一点。如果没有,这里有几个示例说明如何调试和测试您的工作。Apex 中可能已经存在一些内置工具和包,因此欢迎在评论中提出有关替代方法的任何建议......!
使用 APEX 开发者会话输出
选择试运行的输入后,单击SESSION
页面底部开发人员工具栏上的链接。这是一个示例输出:
请注意,会显示为该会话设置的页面项目。我用于此测试的输入是:
INGREDIENT_ID
: 6432
ENTREE_NAME
:桃皮匠(新鲜)
额外积分: 这是一种替代方法。将这样的东西设计为您设计的任何应用程序的附加组件可能会很有用。当您将其推送到生产环境时,您无需将其从应用程序中删除,因为页面区域有“条件显示/抑制”功能。(一探究竟)
只需在 Apex 应用程序上将全局参数设置为“模式”。将值设置为“DEBUG”或“TEST”或其他任何值,并键入此页面区域的所有实例以仅在将全局参数设置为它时显示。
总结和讨论
希望您喜欢参观“Stack Food Works”(请不要品尝或品尝)。
这更像是 Apex 应用程序设计的整体方法。它有助于制定每一步的方法,以及在开发过程的开始和结束时检查您的工作的方法。使用像此演示这样的较小示例来应用这些方法提供了将 Apex 开发理解为软件创建过程的机会。