如何在 oracle 表单中为值列表“LOV”设置方向
Posted
技术标签:
【中文标题】如何在 oracle 表单中为值列表“LOV”设置方向【英文标题】:how to set direction for list of values 'LOV' in oracle forms 【发布时间】:2020-03-03 09:17:12 【问题描述】:如何使用 set_item_property 改变 LOV 的方向? 我想根据参数值改变方向,如果 set_item_property 不可用,您有什么建议吗?
【问题讨论】:
在这种情况下,“方向”是什么意思?我从来没有听说过。 【参考方案1】:在查询末尾使用“ORDER BY”子句。使用 ASC 升序数据 'ABCD' 或 DESC 降序 'ZYX' 例如
SELECT *
FROM table
ORDER BY parameter ASC
或
SELECT *
FROM table
ORDER BY parameter DESC
【讨论】:
【参考方案2】:如果您的意思是按direction这个词对列出的值进行升序或降序排序,您可以通过使用Set_Lov_Property来管理它。
您应该从文本字段调用现有的LOV
(调用tf1
)。
在tf1
旁边添加一个复选框项目(调用cb1
)。
Forms 创建一个Record Group
,因为LOV
被创建为与默认名称相同(调用'mylov01'
)。假设这个Record Group
有一个带有order by col0 asc
子句的select 语句。
手动创建一个额外的Record Group
,名称为mylov01_desc
,包含order by col0 desc
子句。
使用代码向该字段添加KEY-CLRBLK
触发器
declare
v_lov varchar2(50) := 'mylov01';
v_grn varchar2(50);
begin
if Checkbox_Checked('cb1') then
v_grn := v_lov||'_desc';
else
v_grn := v_lov;
end if;
Set_Lov_Property( v_lov, group_name, v_grn );
list_values;
end;
只要光标位于tf1
中,按F7
即可调用LOV
。
如果选中cb1
,该列表将按降序返回col0
列的行,否则按升序返回。
附注KEY-LISTVAL
是调用 LOV 的默认触发器,并通过 Ctrl+L
组合键触发。我更喜欢通过为 tf1
添加带有代码 null;
的 KEY-LISTVAL
触发器来禁用此默认行为,以便仅通过按下单个键 F7
来调用 LOV。
【讨论】:
为什么选择 KEY-CLRBLK?在我看来,文本字段上的 KEY-LISTVAL(在您的示例中为“tf1”)会是更好的选择。 是的,可能是,但我更喜欢按一个键(F7
)而不是组合键(Ctrl+L
)@AndyDan。
也许您的键映射需要更新。对我们来说,key-listval 是 F9。并且将密钥用于非预期目的需要用户知道,在这种特殊情况下,他们需要使用与通常不同的密钥来获取 LOV。以上是关于如何在 oracle 表单中为值列表“LOV”设置方向的主要内容,如果未能解决你的问题,请参考以下文章
Oracle Apex 5.1:基于 LOV(值列表)的报告列显示返回值而不是显示值
Oracle Apex - 如何使用动态操作更新更改操作的值列表?