【问题标题】:Issue using Select Named LOV in Oracle Application Express在 Oracle Application Express 中使用 Select Named LOV 时出现问题
【发布时间】:2012-07-10 02:22:06
【问题描述】:

我正在使用 Application Express 3.2.1,并且我有一个应用程序在运行时会从数据库中提取这些列:

显示名称、电子邮件地址、电话号码、家庭网络、国家/地区

我想找到一种按国家/地区过滤行的方法,因此我创建了一个具有以下值定义的 Select Named LOV:

select name d, name v
from 
(
    select distinct(country) name
    from hh_carriers 
)

当我为我的应用程序单击“运行”时,我的所有数据都会正确显示,并且我的选择列表会正确填充。但是,当我从选择列表中选择“国家”时,数据不会改变。选择列表也返回默认值。我与选择命名 POV 有什么关系吗?我必须做什么才能使过滤器正常工作?谢谢。

这是我的 SQL 语句生成页面的样子:

select * from hh_carriers
where
country like :P5_COUNTRY

显示额外值:否
使用的来源:仅当会话状态中的当前值为空时
源类型:静态赋值(值等于源属性)

编辑:为了清晰起见更改了一些内容

【问题讨论】:

  • 您需要添加一个按钮来提交页面。提交时,您的 LOV 选择值将被发布以用于您的页面流程。如果您希望页面自动提交更改,则需要添加动态操作或一些 javascript。

标签: oracle oracle-apex


【解决方案1】:

您需要在报告查询的 WHERE 子句中引用选择列表,如下所示:

where home_network = :p123_home_network

p123_home_network 是选择列表的名称)

【讨论】:

  • 这是我页面的 SQL 语句的样子:select * from hh_carriers where country like :P5_COUNTRY
【解决方案2】:

您的页面基本上是如何设置的? 它是否归结为:类型选择列表顶部的页面项目,基于您的 lov,以及其下方的报告区域,以及您根据页面项目过滤的查询?

如果是这样,那么让它工作起来应该不会那么难。就像 Wolf 评论的那样,您需要在更改选择列表中的值后提交页面。它的值需要提交到会话状态,因为这是您的查询过滤器所引用的。

我不明白的是选择列表恢复默认值的问题。这会在什么时候发生?

【讨论】:

  • 运行页面后,我有一个下拉列表。默认值为“全部”,您可以选择几个国家/地区。当我选择“全部”以外的内容时,它会自动返回“全部”。
  • 这真的很奇怪!我试图重现这一点,但到目前为止我不能。您能否检查选择列表项上的设置,尤其是“值更改时的页面操作”、“显示额外值”、“使用的源”、“源类型”?只是有什么不寻常的事吗?当然,一定是有什么东西导致了切换回来。你确定没有提交吗?
  • 我找不到“值更改时的页面操作”。它会在哪个子标题下?我编辑的所有其他值都添加到了原始问题中。谢谢!
  • 它在“设置”下——虽然它可能不适合你!我在 Apex 4.02 上,所以这可能只是一个区别。仍然看不出它为什么会跳回来,我会试着摆弄一下 - 或者你可以尝试在 apex.oracle.com 上设置一个简单的例子!
  • 我想通了。我的“编辑页面计算”中的“表达式 1”需要设置为 P5_COUNTRY。
【解决方案3】:

“编辑页面计算”中的“表达式 1”需要设置为 P5_COUNTRY。

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2019-03-11
    • 1970-01-01
    • 2016-06-01
    • 2023-02-04
    相关资源
    最近更新 更多