防止无主记录操作(Prevent Masterless Operations)

发现自己做的Form的bug:(有三个数据块,1头、2行、3子行)

操作:进入第二个数据块,按Ctrl + F11,可以查询出税票。

解决方法:

1.可以想办法禁用Ctrl + F11组合键,我还不知道怎么弄...

2.设置数据块1和数据块2的关系属性,属性中有一个是防止无主记录操作,选择为“是”,即解决此问题。

3.可以设置查询条件。

1)设置第二个数据块的pre-query:

代码
 1 BEGIN
 2         IF :parameter.G_query_find = 'TRUE' THEN   --原有设置的where子句
 3             copy(:query_find.tax_receipt,'hek_ar_reciept_headers.tax_reciept_num');
 4             set_block_property('hek_ar_reciept_headers',DEFAULT_WHERE,' nvl(match_flag,''N'') = ''N'' ');
 5             :parameter.G_query_find := 'FALSE'
 6             --fnd_message.debug(get_block_property('hek_ar_reciept_headers',default_where)); 
 7         ELSIF :hek_ar_reciept_v.h_header_id is not null THEN  --如果有头记录,什么都不做
 8             NULL;
 9         else  --如果没有头记录或其他情况,不能查询此数据块
10             set_block_property('hek_ar_reciept_headers',DEFAULT_WHERE,' 1 <> 1 ');
11             --fnd_message.debug(get_block_property('hek_ar_reciept_headers',default_where)); 
12         END IF;
13 END;

 2)设置第三个数据块的pre-query:

代码
1 BEGIN
2     IF :hek_ar_reciept_headers.header_id is null then  --如果没有行记录,则不能查询
3         set_block_property('hek_ar_reciept_LINEs_V',DEFAULT_WHERE,' 1 <> 1 ');
4         --fnd_message.debug(get_block_property('hek_ar_reciept_LINEs_V',default_where)); 
5     end if;
6 end;
原文地址:https://www.cnblogs.com/benio/p/1706511.html