我需要从一个名为" 产品"
的数据块中实现一个简单的产品表单。产品与合作伙伴"通过该领域" COMPANIES_PARTNERS_ID "。
此字段将以 LOV 表示,以选择我们想要展示您的产品的合作伙伴。
如果当前没有选择合作伙伴,则应显示所有产品。选择合作伙伴时,只应显示其产品。
表单如下所示:
搜索字段右侧的按钮应显示LOV并启动查询。当我按下按钮时,我尝试将以下代码作为"智能触发器" 。但它根本不起作用。 LOV列表出现两次,如果未选择任何合作伙伴,则不会显示任何产品。
有人可以帮助我实现此功能吗?谢谢
答案 0 :(得分:1)
进入查询模式后(ENTER_QUERY
执行此操作),将停止进一步处理,直到执行查询为止。
我认为你正确地创建了一个LoV - 最常用的方法是首先创建一个Record Group查询,然后根据它创建一个LoV。
因此,我ENTER_QUERY
WHEN-NEW-FORM-INSTANCE
触发,让您当前的按钮显示LoV,让用户在“公司合作伙伴ID”项目中选择一个值。执行查询(通过按相应的工具栏按钮,快捷键(F8?)或新的“执行查询”按钮)将实际执行查询。如果正确创建了主 - 详细信息关系(使用数据块向导是最简单的选项),那么您将在“产品”块中获得行。
答案 1 :(得分:1)
在PRODUCTS块中添加一个值WHERE子句'属性。
WHERE CLAUSE属性:
COMPANIES_PARTNERS_ID LIKE NVL(:lov_block.COMPANIES_PARTNERS_ID, '%')
答案 2 :(得分:1)
ENTER_QUERY
命令。DEFAULT_WHERE
设置COMPANIES_PARTNERS_ID
。如果未通过按CANCEL
选择任何LOV行或按X
符号选择,则会列出所有产品(在这种情况下,您会看到第一个ID,最有可能值1
,因为COMPANIES_PARTNERS_ID
不在CONTROL
块,而是在同一个区块,即PRODUCTS
,与其他项目一起。当你向下箭头时当您的光标位于ID
字段时,您会看到其他COMPANIES_PARTNERS_ID
值,因为此字段似乎已将显示的项目数设置为1
,因为PRODUCTS
块已设置为显示10
个项目。 因此,您可以在WHEN-BUTTON-PRESSED
触发器中使用以下代码:
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;