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