如何在 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 Forms 6i 解析 LOV 代码

Oracle Apex 5.1:基于 LOV(值列表)的报告列显示返回值而不是显示值

Oracle Apex - 如何使用动态操作更新更改操作的值列表?

Oracle:使用 LOV 选择值执行查询

如何根据 Oracle 表格 6i 中的某些条件在两个 LOV 之间进行选择

Oracle APEX 数据网格 LOV 在单击之前不显示显示名称