发现自己做的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 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;
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;