0

我需要从一个名为“ PRODUCTS ”的数据块中实现一个简单的产品表单。

产品通过“ COMPANIES_PARTNERS_ID ”字段与“合作伙伴”相关联。

此字段将由LOV表示,以选择我们要为其可视化您的产品的合作伙伴。

如果当前没有选择合作伙伴,则应显示您的所有产品。And when a partner is selected, only their products should be displayed.

表单将如下所示:

甲骨文形式

搜索字段右侧的按钮应显示 LOV 并启动查询。当我按下按钮时,我尝试了以下代码作为“智能触发器” 。但它根本不能很好地工作。LOV 列表出现两次,当没有选择合作伙伴时,不会出现任何产品。

在此处输入图像描述

有人可以帮我实现这个功能吗?谢谢

4

3 回答 3

2
  • 你不需要使用ENTER_QUERY命令。
  • 最好使用DEFAULT_WHERE相对于 的集合COMPANIES_PARTNERS_IDCANCEL如果没有通过按符号或取消选择 LOV 的任何行,X则将列出所有产品(在这种情况下,您将看到第一个 ID,很可能带有 value 1,因为COMPANIES_PARTNERS_ID它不在一个CONTROL块上,而是在相同的块,即PRODUCTS,与其他项目。当您通过向下箭头向下ID移动时,当您的光标位于COMPANIES_PARTNERS_ID字段中时,您会看到其他值,似乎已1为该字段设置了“显示的项目数”,因为PRODUCTS已设置块作为10显示的项目)。

WHEN-BUTTON-PRESSED因此,您可以在trigger中使用以下代码:

DECLARE
    V_WHERE VARCHAR2(500);
BEGIN   
    GO_ITEM('COMPANIES_PARTNERS_ID');
  IF SHOW_LOV('COMPANIES_LOV') THEN
    V_WHERE:='COMPANIES_PARTNERS_ID='||:COMPANIES_PARTNERS_ID;
  ELSE  
    V_WHERE:='1=1';           
  END IF;           
    SET_BLOCK_PROPERTY('PRODUCTS',DEFAULT_WHERE,V_WHERE);
    CLEAR_BLOCK(NO_VALIDATE);   
    EXECUTE_QUERY;  
END;
于 2018-04-01T13:19:00.750 回答
1

在 PRODUCTS 块 WHERE 子句的属性中输入一个值。

WHERE CLAUSE 属性:

COMPANIES_PARTNERS_ID LIKE NVL(:lov_block.COMPANIES_PARTNERS_ID, '%')
于 2018-04-01T12:27:12.063 回答
1

一旦您进入查询模式(这是什么ENTER_QUERY),进一步的处理将停止,直到您执行查询。

我假设您正确创建了 LoV - 最常用的方法是先创建记录组查询,然后基于它创建 LoV。

因此,我会ENTER_QUERY触发WHEN-NEW-FORM-INSTANCE并让您当前的按钮显示 LoV,并让用户在“Companies Partners ID”项目中选择一个值。执行查询(通过按下相应的工具栏按钮、快捷键(F8?)或新的“执行查询”按钮)将实际执行 query。如果正确创建了主从关系(使用数据块向导是最简单的选项),那么您将在“产品”块中获得行。

于 2018-03-31T21:34:58.260 回答