"general" oracle apex 中的变量
"general" variable in oracle apex
我正在 Oracle Application Express (APEX) 中开发应用程序。
第一页包含作为表格报告的项目列表。
单击任意行可转到下一页,可在其中编辑记录。我已经通过以下设置实现了它:
- Link 列:
link to custom target
- 目标:
Page in this application
直到一切都好。
我的问题是如何将实际报告传递到下一页?
我的table,这是报告的基础,有主键(ID
),并且所有者和标题组合是唯一的。当前 ID
列未包含在报告中。
另外,第二页目前不包含显示 ID
的字段,因为此信息对用户不重要。
我知道我可以在报告中设置 ID
列,并在下一页中创建一个只读(甚至隐藏)文本框,但我正在寻找更优雅的解决方案。解决这个问题的标准方法是什么?
当您创建目标页面时,假设第 3 页
然后你创建了一些项目,比方说 P3_ITEM_1、P3_ITEM_2、等等
您可以通过原始页面中的url为它们各自赋值
完整的 APEX URL 语法如下所示:
让我们仔细看看:
- http:// – 协议,可以是 http 或 https
apex.oracle.com – 你的 domain/host/server,随便你怎么称呼它。也可以是本地主机。
- /pls – 表示您正在使用带有 mod_plsql 的 Oracle HTTP Server。如果您使用的是 APEX 侦听器或嵌入式 PL/SQL 网关,则此部分为 obsolete/missing。
- /apex – 来自您的 dads.conf 文件的条目(这是您的应用程序服务器或配置目标数据库的 EPG 上的一个文件) – 在 EPG 的情况下,它只有一个指向本地主机的条目,在在 OAS 的情况下,您可以有多个条目,每个条目都指向另一个数据库
- /f?p= – 调用过程“f”并将参数“p”设置为字符串的完整其余部分。请记住:APEX 使用 mod_plsql。 “f”是一个 public 过程,这是 APEX 的主要入口点。或者你可以说:“f”是 APEX。
- AppId – 应用程序的编号或别名
- :PageId – 页面的编号或别名
- :Session – 唯一的 Session ID,对于 Public 页可以是 0 或为空(然后 APEX 创建一个新的 Session)
- :Request – 请求关键字。这基本上是自由文本,只是您可以指定在流程或区域条件下做出反应的字符串。例如您可以传递关键字“CREATE”,并在页面的删除按钮上设置条件“如果请求是 CREATE,则不显示此按钮”。
换句话说:使用 REQUEST 来控制页面的行为。
按下按钮时,按钮将REQUEST设置为按钮值(例如SAVE),以便您可以在页面处理(提交)阶段控制流程。
- :Debug – 设置为 YES(大写!)打开调试模式,在浏览器中呈现调试消息和时间戳 window。这有助于检测页面的错误行为或性能问题以及其他一切。每隔一个值然后 YES 关闭调试模式
- :ClearCache – 您可以在此处放置页面 ID 或页面 ID 列表(以逗号分隔)以清除这些页面的缓存(将会话状态设置为 null,...)。但还有更多:RP 重置页面上报告的分页,集合名称删除集合,APP 清除所有页面和应用程序项,SESSION 与 APP 相同,但对于所有应用程序,会话 ID 已被删除用于.
- :Parameters – 逗号分隔的页面项目名称列表。好的做法是只设置您要访问的页面上的那些页面项。接受页面项和应用程序项。
- :ParamValues – 逗号分隔的值列表。每个值都分配给 ParamNameList 中提供的相应参数(第一个值分配给第一个参数,第二个值分配给第二个参数,依此类推……)。
这里的技巧是不包含包含逗号“,”或冒号“:”的值。两者都会导致副作用和错误,因为 APEX 在解析 URL 时会感到困惑。如果用斜杠括起来,使用逗号是有效的:例如\123,89.
- :PrinterFriendly – 设置为 YES(大写!)将页面切换到 PrinterFriendly-Mode,使用 Printerfriendly 模板呈现页面。您还可以在条件中使用 PRINTER_FRIENDLY 变量在 PrinterFriendly-Mode 中隐藏区域或其他元素。
在你的情况下,你会像这样使用 Params:ParamValues:
P3_ITEM_1,P3_ITEM_2:someValue_1,someValue_2
我想知道您是否在问:“我如何将一个值从第 1 页传递到第 2 页,以便第 2 页可以使用该值进行查询并显示结果。如果是这样,这是如何完成的。
以P1页面的报表为例,select页面左侧Rendering面板中的区域下的报表区域属性设计。
在右侧的属性属性下,查找 Link 列并将其设置为 "Link to custom target"。然后单击目标。
Select 页面,然后在设置项目部分,在左侧名称下,select PK ID 字段接收传递的值 ex:P2_ID。在右侧的值 select 字段下传递值,例如:#P1_ID# 并单击确定。
现在,当单击第 1 页报告上的 link 时,Apex 将 P1_ID 保存到会话状态并传递给 P2,然后 P2 使用传递的值执行 FETCH。
您可以阅读有关会话状态 here 的更多信息。另外,请注意有一些安全设置会影响在 URL 中可以传递和不能传递的参数。
单击开发人员工具栏中的 "Session" 将使您能够看到正在传递的会话变量。
如果你的意思是"How do I store values in the app that can be accessed anywhere in the app - like a global variable"那就看Application Items.
一如既往,请在这些帖子中包含版本号。
我正在 Oracle Application Express (APEX) 中开发应用程序。
第一页包含作为表格报告的项目列表。
单击任意行可转到下一页,可在其中编辑记录。我已经通过以下设置实现了它:
- Link 列:
link to custom target
- 目标:
Page in this application
直到一切都好。
我的问题是如何将实际报告传递到下一页?
我的table,这是报告的基础,有主键(ID
),并且所有者和标题组合是唯一的。当前 ID
列未包含在报告中。
另外,第二页目前不包含显示 ID
的字段,因为此信息对用户不重要。
我知道我可以在报告中设置 ID
列,并在下一页中创建一个只读(甚至隐藏)文本框,但我正在寻找更优雅的解决方案。解决这个问题的标准方法是什么?
当您创建目标页面时,假设第 3 页 然后你创建了一些项目,比方说 P3_ITEM_1、P3_ITEM_2、等等
您可以通过原始页面中的url为它们各自赋值
完整的 APEX URL 语法如下所示:
让我们仔细看看:
- http:// – 协议,可以是 http 或 https apex.oracle.com – 你的 domain/host/server,随便你怎么称呼它。也可以是本地主机。
- /pls – 表示您正在使用带有 mod_plsql 的 Oracle HTTP Server。如果您使用的是 APEX 侦听器或嵌入式 PL/SQL 网关,则此部分为 obsolete/missing。
- /apex – 来自您的 dads.conf 文件的条目(这是您的应用程序服务器或配置目标数据库的 EPG 上的一个文件) – 在 EPG 的情况下,它只有一个指向本地主机的条目,在在 OAS 的情况下,您可以有多个条目,每个条目都指向另一个数据库
- /f?p= – 调用过程“f”并将参数“p”设置为字符串的完整其余部分。请记住:APEX 使用 mod_plsql。 “f”是一个 public 过程,这是 APEX 的主要入口点。或者你可以说:“f”是 APEX。
- AppId – 应用程序的编号或别名
- :PageId – 页面的编号或别名
- :Session – 唯一的 Session ID,对于 Public 页可以是 0 或为空(然后 APEX 创建一个新的 Session)
- :Request – 请求关键字。这基本上是自由文本,只是您可以指定在流程或区域条件下做出反应的字符串。例如您可以传递关键字“CREATE”,并在页面的删除按钮上设置条件“如果请求是 CREATE,则不显示此按钮”。 换句话说:使用 REQUEST 来控制页面的行为。 按下按钮时,按钮将REQUEST设置为按钮值(例如SAVE),以便您可以在页面处理(提交)阶段控制流程。
- :Debug – 设置为 YES(大写!)打开调试模式,在浏览器中呈现调试消息和时间戳 window。这有助于检测页面的错误行为或性能问题以及其他一切。每隔一个值然后 YES 关闭调试模式
- :ClearCache – 您可以在此处放置页面 ID 或页面 ID 列表(以逗号分隔)以清除这些页面的缓存(将会话状态设置为 null,...)。但还有更多:RP 重置页面上报告的分页,集合名称删除集合,APP 清除所有页面和应用程序项,SESSION 与 APP 相同,但对于所有应用程序,会话 ID 已被删除用于.
- :Parameters – 逗号分隔的页面项目名称列表。好的做法是只设置您要访问的页面上的那些页面项。接受页面项和应用程序项。
- :ParamValues – 逗号分隔的值列表。每个值都分配给 ParamNameList 中提供的相应参数(第一个值分配给第一个参数,第二个值分配给第二个参数,依此类推……)。 这里的技巧是不包含包含逗号“,”或冒号“:”的值。两者都会导致副作用和错误,因为 APEX 在解析 URL 时会感到困惑。如果用斜杠括起来,使用逗号是有效的:例如\123,89.
- :PrinterFriendly – 设置为 YES(大写!)将页面切换到 PrinterFriendly-Mode,使用 Printerfriendly 模板呈现页面。您还可以在条件中使用 PRINTER_FRIENDLY 变量在 PrinterFriendly-Mode 中隐藏区域或其他元素。
在你的情况下,你会像这样使用 Params:ParamValues:
P3_ITEM_1,P3_ITEM_2:someValue_1,someValue_2
我想知道您是否在问:“我如何将一个值从第 1 页传递到第 2 页,以便第 2 页可以使用该值进行查询并显示结果。如果是这样,这是如何完成的。
以P1页面的报表为例,select页面左侧Rendering面板中的区域下的报表区域属性设计。
在右侧的属性属性下,查找 Link 列并将其设置为 "Link to custom target"。然后单击目标。
Select 页面,然后在设置项目部分,在左侧名称下,select PK ID 字段接收传递的值 ex:P2_ID。在右侧的值 select 字段下传递值,例如:#P1_ID# 并单击确定。 现在,当单击第 1 页报告上的 link 时,Apex 将 P1_ID 保存到会话状态并传递给 P2,然后 P2 使用传递的值执行 FETCH。 您可以阅读有关会话状态 here 的更多信息。另外,请注意有一些安全设置会影响在 URL 中可以传递和不能传递的参数。 单击开发人员工具栏中的 "Session" 将使您能够看到正在传递的会话变量。
如果你的意思是"How do I store values in the app that can be accessed anywhere in the app - like a global variable"那就看Application Items.
一如既往,请在这些帖子中包含版本号。