"一般" oracle apex中的变量

时间:2017-03-31 22:35:21

标签: oracle-apex

我正在使用Oracle Application Express(APEX)开发应用程序。

第一页包含作为表格报告的项目列表。

将任何行转发到下一页,可以编辑记录。我已通过以下设置实施了它:

  • 链接列:link to custom target
  • 目标:Page in this application

直到没事。

我的问题是如何将实际报告传递到下一页?

我的表格是报告的基础,主要密钥(ID)以及所有者&标题组合是独一无二的目前ID列未包含在报告中。

此外,第二页目前不包含显示ID的字段,因为此信息对用户来说并不重要。

我知道我可以在报告中设置ID列,并在下一页中创建一个只读(甚至隐藏)文本框,但我正在寻找更优雅的解决方案。解决这个问题的标准方法是什么?

2 个答案:

答案 0 :(得分:1)

当你创建一个目标页面时,让我们说第3页 你创建了一些项目,比方说P3_ITEM_1,P3_ITEM_2等

您可以通过原始页面中的网址为每个人分配值

完整的APEX URL语法如下所示:

http://apex.oracle.com/pls/apex/f?p=AppId:PageId:Session:Request:Debug:ClearCache:Params:ParamValues:PrinterFriendly

让我们仔细看看:

  • http:// - 协议,可以是http或https apex.oracle.com - 您的域/主机/服务器,无论您想要什么称呼它。也可以是localhost。
  • / pls - 表示您正在使用带有mod_plsql的Oracle HTTP Server。如果您使用的是APEX Listener或Embedded PL / SQL Gateway,则此部分已过时/缺失。
  • / apex - 您的dads.conf文件中的条目(这是您的应用程序服务器或EPG上配置目标数据库的文件) - 在EPG的情况下,只有一个条目指向localhost,如果是OAS您可以有多个条目,每个条目都指向另一个数据库
  • / f?p = - 调用过程“f”,并将参数“p”设置为字符串的完整其余部分。请记住:APEX使用mod_plsql。 “f”是一个公共程序,这是APEX的主要入口点。或者你可以说:“f”是APEX。
  • AppId - 应用程序的编号或别名
  • :PageId - 页面的数字或别名
  • :会话 - 唯一会话ID,对于公共页面可以为0或为空(然后APEX创建新会话)
  • :请求 - 请求关键字。这基本上是自由文本,只是一个字符串,您可以指定在进程或区域条件中作出反应。例如您可以传递关键字“CREATE”,并在页面的删除按钮上有条件说“如果请求是CREATE则不显示此按钮”。 换句话说:使用REQUEST来控制页面的行为。 按下按钮时,按钮将REQUEST设置为按钮值(例如SAVE),以便您可以在页面处理(提交)阶段控制进程。
  • :Debug - 设置为YES(大写!)会打开Debug-Mode,它会在浏览器窗口中显示调试消息和时间戳。这有助于检测页面的错误行为或性能问题以及其他所有问题。每隔一个值,然后YES关闭调试模式
  • :ClearCache - 您可以在此处放置页面ID或页面ID列表(以逗号分隔)以清除这些页面的缓存(将会话状态设置为null,...)。但还有更多:RP重置页面上的报告分页,集合名称删除集合,APP清除所有页面和应用程序项目,SESSION与APP相同,但对于所有应用程序,session-id已被删除用于。
  • :参数 - 逗号分隔的页面项名称列表。好的做法是只设置您要访问的页面上的页面项。接受页面项和应用程序项。
  • :ParamValues - 以逗号分隔的值列表。每个值都分配给ParamNameList中提供的相应参数(第一个值分配给第一个参数,第二个值分配给第二个参数,依此类推......)。 这里的诀窍是没有包含逗号“,”或冒号“:”的值。两者都会导致副作用和错误,因为APEX在解析URL时会感到困惑。使用逗号有效,如果用斜杠括起来:例如\ 123,89。
  • :PrinterFriendly - 设置为YES(大写!)将页面切换到PrinterFriendly-Mode,使用Printerfriendly模板呈现页面。您还可以在条件中使用PRINTER_FRIENDLY变量在PrinterFriendly模式中隐藏区域或其他元素。

在你的情况下你会使用Params:ParamValues这样:

<强> P3_ITEM_1,P3_ITEM_2:someValue_1,someValue_2

Documentation

答案 1 :(得分:1)

我想知道您是否在问:&#34;如何将值从第1页传递到第2页,以便第2页可以使用该值进行查询并显示结果。如果是这样,这就是它的完成方式。

在页面P1上,例如,报告在设计页面左侧的“渲染”窗格中选择区域下的报告区域的属性。

在右侧的“属性属性”下,查找“链接列”并将其设置为“#34;链接到自定义目标&#34;”。然后单击目标。

选择页面,然后在左侧的“设置项目”部分的名称下,选择PK ID字段以接收传递的值ex:P2_ID。在Value下的右侧选择要传递值的字段,例如:#P1_ID#并单击ok。 现在,当单击第1页上的链接报告时,P1_ID由Apex保存到会话状态并传递给P2,然后P2使用传递的值执行FETCH。 您可以阅读有关会话状态here的更多信息。此外,请注意有一些安全设置会影响params可以和不能在URL中传递的内容。 点击&#34;会话&#34;在开发人员工具栏中,您可以查看正在传递的会话变量。

如果您的意思是&#34;如何在应用中存储可以在应用中的任何位置访问的值 - 例如全局变量&#34;然后查看Application Items

与往常一样,请在这些帖子中包含版本号。