【问题标题】:Oracle APEX values do not load on the formOracle APEX 值不会加载到表单上
【发布时间】:2018-10-03 15:56:39
【问题描述】:

在我的 APEX 页面中,我打开了一个弹出页面并尝试使用数据库中的数据加载它。为此,我使用了 标头处理后的预渲染。进程类型设置为PL/SQL代码:

BEGIN
  IF :P3_RECORD_ID IS NOT NULL THEN
     select TYPE_ID, RECORD_TEXT
     INTO :P3_TYPE_ID, :P3_RECORD_TEXT
     from TABLE1
     where RECORD_ID = :P3_RECORD_ID;
  END IF;
END;

在弹出页面上,我有一个从 LOV 填充的下拉列表 (P3_TYPE_ID) 和一个文本字段 (P3_RECORD_TEXT)。 这些值显示在会话状态中,但不在下拉列表或文本字段中。我不知道我做错了什么......

我也尝试了自动行提取,但也没有将任何值加载到字段中,只是进入会话状态

【问题讨论】:

  • 如果 SOURCE 部分的“type”字段为“null”且“used”为“始终,替换会话状态中的任何现有值”,则该行为是预期的。但是,如果这个过程很快,Littlefoot 的解决方案会更好。

标签: oracle oracle-apex-5.1


【解决方案1】:

您是否考虑过为这些项目使用默认值?这将是一个“PL/SQL 函数体”,看起来像这样(P3_TYPE_ID):

declare
  l_type_id table1.type_id%type;
begin
  select max(type_id)
  into l_type_id
  from table1
  where record_id = :P3_RECORD_ID;

  return l_type_id;
end;

我使用MAX 函数来避免可能出现的NO_DATA_FOUNDTOO_MANY_ROWS 错误。如有必要,请在EXCEPTION 部分处理它们。

同样,填充P3_RECORD_TEXT

【讨论】:

  • 你能解释一下这会有什么帮助吗?
  • 您尝试过(但没有成功),还是只是好奇?
  • 它到底是做什么的?
  • 您将 RECORD_ID 值传递给页面 P3 并 - 基于其值 - 填充 TYPE_ID 和 RECORD_TEXT 项。默认项目值用于设置项目的值(如果它不存在)。当您想从数据库中获取这些值(基于 RECORD_ID)时,那些 SELECT 语句(实际上是函数)会设置这些值。我不知道你拿到它们后打算怎么处理它们。
  • 我明白了(我以为您只想显示这些值)。在这种情况下,您尝试的(即自动行处理)是正确的方法。我建议你不要自己做——最简单的方法是创建一个报告+表单(通常是一个交互式报告,它调用一个允许你编辑数据库值的表单)。让向导创造一切;然后删除 IR 页面(除非您需要它),并且 - 在您当前的“主”页面(调用第 3 页的页面)上 - 创建一个将填充记录 ID 的链接。自动行处理应该完成剩下的工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-06
  • 2014-12-31
  • 2019-04-15
相关资源
最近更新 更多